Exemplo n.º 1
0
 def __init__(self, parent=None):
     splashStyle = wx.SPLASH_CENTRE_ON_SCREEN | wx.FRAME_SHAPED
     AdvancedSplash.__init__(self,
                             parent,
                             size=wx.DefaultSize,
                             bitmap=logo.GetBitmap(),
                             style=splashStyle)
     wx.GetApp().Yield()
Exemplo n.º 2
0
    def ShowSplashScreen(self):
        bmp = wx.Image(self.splashPath).ConvertToBitmap()
        self.splash = AdvancedSplash(None, bitmap=bmp)

        # process all events
        # even the events generated by splash themself during showing
        if wx.Platform == '__WXMSW__':
            self.splash.Show()
            self.splash.ProcessEvent(wx.PaintEvent())
        else:
            for dummy in range(0, 30):
                wx.Yield()
                time.sleep(0.01)
Exemplo n.º 3
0
class BeremizIDELauncher:
    def __init__(self):
        self.updateinfo_url = None
        self.extensions = []
        self.app_dir = paths.AbsDir(__file__)
        self.projectOpen = None
        self.buildpath = None
        self.splash = None
        self.splashPath = self.Bpath("images", "splash.png")

    def Bpath(self, *args):
        return os.path.join(self.app_dir, *args)

    def ShowSplashScreen(self):
        from wx.lib.agw.advancedsplash import AdvancedSplash
        bmp = wx.Image(self.splashPath).ConvertToBitmap()
        self.splash = AdvancedSplash(None, bitmap=bmp)

        # process all events
        # even the events generated by splash themself during showing
        if wx.Platform == '__WXMSW__':
            self.splash.Show()
            self.splash.ProcessEvent(wx.PaintEvent())
        else:
            for i in range(0, 30):
                wx.Yield()
                time.sleep(0.01)

    def Usage(self):
        print "Usage:"
        print "%s [Options] [Projectpath] [Buildpath]" % sys.argv[0]
        print ""
        print "Supported options:"
        print "-h --help                    Print this help"
        print "-u --updatecheck URL         Retrieve update information by checking URL"
        print "-e --extend PathToExtension  Extend IDE functionality by loading at start additional extensions"
        print ""
        print ""

    def SetCmdOptions(self):
        self.shortCmdOpts = "hu:e:"
        self.longCmdOpts = ["help", "updatecheck=", "extend="]

    def ProcessOption(self, o, a):
        if o in ("-h", "--help"):
            self.Usage()
            sys.exit()
        if o in ("-u", "--updatecheck"):
            self.updateinfo_url = a
        if o in ("-e", "--extend"):
            self.extensions.append(a)

    def ProcessCommandLineArgs(self):
        self.SetCmdOptions()
        try:
            opts, args = getopt.getopt(sys.argv[1:], self.shortCmdOpts,
                                       self.longCmdOpts)
        except getopt.GetoptError:
            # print help information and exit:
            self.Usage()
            sys.exit(2)

        for o, a in opts:
            self.ProcessOption(o, a)

        if len(args) > 2:
            self.Usage()
            sys.exit()

        elif len(args) == 1:
            self.projectOpen = args[0]
            self.buildpath = None
        elif len(args) == 2:
            self.projectOpen = args[0]
            self.buildpath = args[1]

    def CreateApplication(self):
        if os.path.exists("BEREMIZ_DEBUG"):
            __builtin__.__dict__["BMZ_DBG"] = True
        else:
            __builtin__.__dict__["BMZ_DBG"] = False

        global wxversion, wx
        import wxversion
        wxversion.select(['2.8', '3.0'])
        import wx

        if wx.VERSION >= (3, 0, 0):
            self.app = wx.App(redirect=BMZ_DBG)
        else:
            self.app = wx.PySimpleApp(redirect=BMZ_DBG)

        self.app.SetAppName('beremiz')
        if wx.VERSION < (3, 0, 0):
            wx.InitAllImageHandlers()

        self.ShowSplashScreen()
        self.BackgroundInitialization()
        self.app.MainLoop()

    def BackgroundInitialization(self):
        self.InitI18n()
        self.CheckUpdates()
        self.LoadExtensions()
        self.ImportModules()
        self.InstallExceptionHandler()
        self.ShowUI()

    def InitI18n(self):
        from util.misc import InstallLocalRessources
        InstallLocalRessources(self.app_dir)

    def LoadExtensions(self):
        for extfilename in self.extensions:
            from util.TranslationCatalogs import AddCatalog
            from util.BitmapLibrary import AddBitmapFolder
            extension_folder = os.path.split(os.path.realpath(extfilename))[0]
            sys.path.append(extension_folder)
            AddCatalog(os.path.join(extension_folder, "locale"))
            AddBitmapFolder(os.path.join(extension_folder, "images"))
            execfile(extfilename, locals())

    def CheckUpdates(self):
        if self.updateinfo_url is not None:
            updateinfo = _("Fetching %s") % self.updateinfo_url

            def updateinfoproc():
                global updateinfo
                try:
                    import urllib2
                    updateinfo = urllib2.urlopen(self.updateinfo_url,
                                                 None).read()
                except:
                    updateinfo = _("update info unavailable.")

            from threading import Thread
            self.splash.SetText(text=updateinfo)
            updateinfoThread = Thread(target=updateinfoproc)
            updateinfoThread.start()
            updateinfoThread.join(2)
            self.splash.SetText(text=updateinfo)

    def ImportModules(self):
        global BeremizIDE
        import BeremizIDE

    def InstallExceptionHandler(self):
        import version
        import tempfile
        logpath = tempfile.gettempdir() + os.sep + 'Beremiz'
        BeremizIDE.AddExceptHook(logpath, version.app_version)

    def ShowUI(self):
        self.frame = BeremizIDE.Beremiz(None, self.projectOpen, self.buildpath)
        if self.splash:
            self.splash.Close()
        self.frame.Show()

    def Start(self):
        self.ProcessCommandLineArgs()
        self.CreateApplication()
Exemplo n.º 4
0
 def OnPaint(_self, event):  # pylint: disable=no-self-argument
     AdvancedSplash.OnPaint(_self, event)
     if not _self.Painted:  # trigger app start only once
         _self.Painted = True
         wx.CallAfter(self.AppStart)
Exemplo n.º 5
0
 def OnPaint(_self, event):  # pylint: disable=no-self-argument
     AdvancedSplash.OnPaint(_self, event)
     wx.CallAfter(self.AppStart)
Exemplo n.º 6
0
 def __init__(self, parent=None):
     splashStyle = wx.SPLASH_CENTRE_ON_SCREEN | wx.FRAME_SHAPED
     AdvancedSplash.__init__(self, parent, size=wx.DefaultSize, 
                             bitmap=logo.GetBitmap(), 
                             style=splashStyle)
     wx.GetApp().Yield()