BeremizIDELauncher.py
author Andrey Skvortsov <andrej.skvortzov@gmail.com>
Fri, 10 Mar 2017 17:09:48 +0300
changeset 1661 78f28f40bc10
child 1662 8816f7316d9c
permissions -rwxr-xr-x
wrap Beremiz startup code into separate launcher class

this should make it easier to make customized version of Beremiz IDE.
It's easy to add own splash, change version, add/disable extensions
and many other things.

For example:

[----- MyBeremiz.py ------]
#!/usr/bin/env python
from BeremizIDELauncher import BeremizIDELauncher

class MyBeremizIDELauncher(BeremizIDELauncher):
def __init__(self):
BeremizIDELauncher.__init__(self)
self.splashPath = self.Bpath("", "splash.png")

def ShowSplashScreen(self):
# comment next line to disable splash entirely
BeremizIDELauncher.ShowSplashScreen(self)

# change version
import version
version.app_version = "3.141-rc52"

def LoadExtensions(self):
# add/modifine list of extensions
# in self.extensions
BeremizIDELauncher.LoadExtensions(self)

if __name__ == '__main__':
beremiz = MyBeremizIDELauncher()
beremiz.Start()

[-------------------------]
1661
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
     1
#!/usr/bin/env python
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
     2
# -*- coding: utf-8 -*-
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
     3
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
     4
# This file is part of Beremiz, a Integrated Development Environment for
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
     5
# programming IEC 61131-3 automates supporting plcopen standard and CanFestival.
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
     6
#
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
     7
# Copyright (C) 2016 - 2017: Andrey Skvortsov <andrej.skvortzov@gmail.com>
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
     8
#
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
     9
# See COPYING file for copyrights details.
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    10
#
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    11
# This program is free software; you can redistribute it and/or
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    12
# modify it under the terms of the GNU General Public License
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    13
# as published by the Free Software Foundation; either version 2
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    14
# of the License, or (at your option) any later version.
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    15
#
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    16
# This program is distributed in the hope that it will be useful,
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    17
# but WITHOUT ANY WARRANTY; without even the implied warranty of
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    18
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    19
# GNU General Public License for more details.
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    20
#
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    21
# You should have received a copy of the GNU General Public License
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    22
# along with this program; if not, write to the Free Software
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    23
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    24
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    25
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    26
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    27
import os, sys, getopt
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    28
import time
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    29
import __builtin__
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    30
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    31
class BeremizIDELauncher:
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    32
    def __init__(self):
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    33
        self.updateinfo_url = None
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    34
        self.extensions = []
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    35
        self.app_dir = os.path.dirname(os.path.realpath(__file__))
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    36
        self.projectOpen = None
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    37
        self.buildpath = None
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    38
        self.splash = None
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    39
        self.splashPath = self.Bpath("images", "splash.png")
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    40
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    41
    def Bpath(self, *args):
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    42
        return os.path.join(self.app_dir,*args)
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    43
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    44
    def ShowSplashScreen(self):
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    45
        from wx.lib.agw.advancedsplash import AdvancedSplash
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    46
        bmp = wx.Image(self.splashPath).ConvertToBitmap()
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    47
        self.splash = AdvancedSplash(None, bitmap=bmp)
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    48
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    49
        # process all events
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    50
        # even the events generated by splash themself during showing
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    51
        if wx.Platform == '__WXMSW__':
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    52
            self.splash.Show()
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    53
            self.splash.ProcessEvent(wx.PaintEvent())
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    54
        else:
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    55
            for i in range(0,30):
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    56
                wx.Yield()
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    57
                time.sleep(0.01);
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    58
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    59
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    60
    def Usage(self):
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    61
        print "\nUsage:"
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    62
        print "\n   %s [Projectpath] [Buildpath]\n"%sys.argv[0]
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    63
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    64
    def SetCmdOptions(self):
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    65
        self.shortCmdOpts = "hu:e:"
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    66
        self.longCmdOpts = ["help", "updatecheck=", "extend="]
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    67
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    68
    def ProcessOption(self, o, a):
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    69
        if o in ("-h", "--help"):
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    70
            self.Usage()
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    71
            sys.exit()
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    72
        if o in ("-u", "--updatecheck"):
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    73
            self.updateinfo_url = a
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    74
        if o in ("-e", "--extend"):
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    75
            self.extensions.append(a)
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    76
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    77
    def ProcessCommandLineArgs(self):
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    78
        self.SetCmdOptions()
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    79
        try:
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    80
            opts, args = getopt.getopt(sys.argv[1:], self.shortCmdOpts, self.longCmdOpts)
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    81
        except getopt.GetoptError:
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    82
            # print help information and exit:
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    83
            self.Usage()
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    84
            sys.exit(2)
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    85
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    86
        for o, a in opts:
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    87
            self.ProcessOption(o, a)
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    88
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    89
        if len(args) > 2:
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    90
            self.Usage()
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    91
            sys.exit()
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    92
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    93
        elif len(args) == 1:
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    94
            self.projectOpen = args[0]
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    95
            self.buildpath = None
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    96
        elif len(args) == 2:
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    97
            self.projectOpen = args[0]
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    98
            self.buildpath = args[1]
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
    99
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   100
    def CreateApplication(self):
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   101
        if os.path.exists("BEREMIZ_DEBUG"):
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   102
            __builtin__.__dict__["BMZ_DBG"] = True
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   103
        else :
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   104
            __builtin__.__dict__["BMZ_DBG"] = False
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   105
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   106
        global wxversion, wx
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   107
        import wxversion
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   108
        wxversion.select(['2.8', '3.0'])
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   109
        import wx
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   110
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   111
        if wx.VERSION >= (3, 0, 0):
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   112
            self.app = wx.App(redirect=BMZ_DBG)
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   113
        else:
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   114
            self.app = wx.PySimpleApp(redirect=BMZ_DBG)
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   115
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   116
        self.app.SetAppName('beremiz')
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   117
        if wx.VERSION < (3, 0, 0):
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   118
            wx.InitAllImageHandlers()
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   119
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   120
        self.ShowSplashScreen()
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   121
        self.BackgroundInitialization()
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   122
        self.app.MainLoop()
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   123
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   124
    def BackgroundInitialization(self):
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   125
        self.InitI18n()
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   126
        self.CheckUpdates()
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   127
        self.LoadExtensions()
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   128
        self.ImportModules()
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   129
        self.InstallExceptionHandler()
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   130
        self.ShowUI()
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   131
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   132
    def InitI18n(self):
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   133
        from util.misc import InstallLocalRessources
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   134
        InstallLocalRessources(self.app_dir)
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   135
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   136
    def LoadExtensions(self):
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   137
        for extfilename in self.extensions:
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   138
            from util.TranslationCatalogs import AddCatalog
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   139
            from util.BitmapLibrary import AddBitmapFolder
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   140
            extension_folder = os.path.split(os.path.realpath(extfilename))[0]
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   141
            sys.path.append(extension_folder)
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   142
            AddCatalog(os.path.join(extension_folder, "locale"))
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   143
            AddBitmapFolder(os.path.join(extension_folder, "images"))
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   144
            execfile(extfilename, locals())
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   145
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   146
    def CheckUpdates(self):
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   147
        if self.updateinfo_url is not None:
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   148
            updateinfo = _("Fetching %s") % self.updateinfo_url
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   149
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   150
            def updateinfoproc():
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   151
                global updateinfo
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   152
                try :
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   153
                    import urllib2
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   154
                    updateinfo = urllib2.urlopen(self.updateinfo_url,None).read()
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   155
                except :
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   156
                    updateinfo = _("update info unavailable.")
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   157
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   158
            from threading import Thread
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   159
            self.splash.SetText(text=updateinfo)
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   160
            updateinfoThread = Thread(target=updateinfoproc)
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   161
            updateinfoThread.start()
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   162
            updateinfoThread.join(2)
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   163
            self.splash.SetText(text=updateinfo)
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   164
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   165
    def ImportModules(self):
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   166
        global Beremiz
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   167
        import Beremiz
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   168
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   169
    def InstallExceptionHandler(self):
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   170
        import version
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   171
        import tempfile
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   172
        logpath = tempfile.gettempdir()+os.sep+'Beremiz'
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   173
        Beremiz.AddExceptHook(logpath,version.app_version)
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   174
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   175
    def ShowUI(self):
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   176
        self.frame = Beremiz.Beremiz(None, self.projectOpen, self.buildpath)
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   177
        if self.splash:
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   178
            self.splash.Close()
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   179
        self.frame.Show()
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   180
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   181
    def Start(self):
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   182
        self.ProcessCommandLineArgs()
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   183
        self.CreateApplication()
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   184
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   185
if __name__ == '__main__':
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   186
    beremiz = BeremizIDELauncher()
78f28f40bc10 wrap Beremiz startup code into separate launcher class
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
diff changeset
   187
    beremiz.Start()