From 600fdae59b6551166932dc5b42a801b98f6a1b14 Mon Sep 17 00:00:00 2001 From: daid Date: Thu, 30 Aug 2012 11:47:20 +0200 Subject: [PATCH] Added a loading splashscreen. (needs better artwork) --- Cura/cura.py | 8 ++++++-- Cura/gui/mainWindow.py | 4 ++-- Cura/gui/splashScreen.py | 36 ++++++++++++++++++++++++++++++++++++ Cura/images/splash.png | Bin 0 -> 13923 bytes 4 files changed, 44 insertions(+), 4 deletions(-) create mode 100644 Cura/gui/splashScreen.py create mode 100644 Cura/images/splash.png diff --git a/Cura/cura.py b/Cura/cura.py index 2374f988..215be473 100644 --- a/Cura/cura.py +++ b/Cura/cura.py @@ -73,8 +73,12 @@ def main(): else: if len(args) > 0: profile.putPreference('lastFile', ';'.join(args)) - from gui import mainWindow - mainWindow.main() + from gui import splashScreen + splashScreen.showSplash(mainWindowRunCallback) + +def mainWindowRunCallback(): + from gui import mainWindow + mainWindow.main() if __name__ == '__main__': main() diff --git a/Cura/gui/mainWindow.py b/Cura/gui/mainWindow.py index 6822e680..7523ce89 100644 --- a/Cura/gui/mainWindow.py +++ b/Cura/gui/mainWindow.py @@ -24,7 +24,7 @@ from util import version from util import sliceRun def main(): - app = wx.App(False) + #app = wx.App(False) if profile.getPreference('wizardDone') == 'False': configWizard.configWizard() profile.putPreference("wizardDone", "True") @@ -32,7 +32,7 @@ def main(): simpleMode.simpleModeWindow() else: mainWindow() - app.MainLoop() + #app.MainLoop() class mainWindow(configBase.configWindowBase): "Main user interface window" diff --git a/Cura/gui/splashScreen.py b/Cura/gui/splashScreen.py new file mode 100644 index 00000000..276cc79e --- /dev/null +++ b/Cura/gui/splashScreen.py @@ -0,0 +1,36 @@ +import sys, os +#We only need the core here, which speeds up the import. As we want to show the splashscreen ASAP. +import wx._core + +def getBitmapImage(filename): + #The frozen executable has the script files in a zip, so we need to exit another level to get to our images. + if hasattr(sys, 'frozen'): + return wx.Bitmap(os.path.normpath(os.path.join(os.path.split(__file__)[0], "../../images", filename))) + else: + return wx.Bitmap(os.path.normpath(os.path.join(os.path.split(__file__)[0], "../images", filename))) + +class splashScreen(wx.SplashScreen): + def __init__(self, callback): + self.callback = callback + bitmap = getBitmapImage("splash.png") + super(splashScreen, self).__init__(bitmap, wx.SPLASH_CENTRE_ON_SCREEN, 0, None) + wx.CallAfter(callback) + wx.CallAfter(self.Destroy) + +def showSplash(callback): + app = wx.App(False) + splashScreen(callback) + app.MainLoop() + +def testCallback(): + print "Callback!" + import time + time.sleep(2) + print "!Callback" + +def main(): + showSplash(testCallback) + +if __name__ == u'__main__': + main() + diff --git a/Cura/images/splash.png b/Cura/images/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..82bf83b8e6cf54f91549e1ab06b845e195dc3a48 GIT binary patch literal 13923 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 QD`ZFtPoK$rmog0cKY5ZLf&c&j literal 0 HcmV?d00001 -- 2.30.2