# HG changeset patch # User Andrey Skvortsov # Date 1489162363 -10800 # Node ID 81f6781f7fec8dadae6bb2726362c073e8d7edf3 # Parent 8816f7316d9c311028ab998ae96a82dc6510c136 rename BeremizIDELauncher.py to Beremiz.py diff -r 8816f7316d9c -r 81f6781f7fec Beremiz.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Beremiz.py Fri Mar 10 19:12:43 2017 +0300 @@ -0,0 +1,187 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# This file is part of Beremiz, a Integrated Development Environment for +# programming IEC 61131-3 automates supporting plcopen standard and CanFestival. +# +# Copyright (C) 2016 - 2017: Andrey Skvortsov +# +# See COPYING file for copyrights details. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + + +import os, sys, getopt +import time +import __builtin__ + +class BeremizIDELauncher: + def __init__(self): + self.updateinfo_url = None + self.extensions = [] + self.app_dir = os.path.dirname(os.path.realpath(__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 "\nUsage:" + print "\n %s [Projectpath] [Buildpath]\n"%sys.argv[0] + + 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() + +if __name__ == '__main__': + beremiz = BeremizIDELauncher() + beremiz.Start() diff -r 8816f7316d9c -r 81f6781f7fec BeremizIDELauncher.py --- a/BeremizIDELauncher.py Fri Mar 10 17:36:18 2017 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,187 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -# This file is part of Beremiz, a Integrated Development Environment for -# programming IEC 61131-3 automates supporting plcopen standard and CanFestival. -# -# Copyright (C) 2016 - 2017: Andrey Skvortsov -# -# See COPYING file for copyrights details. -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - - -import os, sys, getopt -import time -import __builtin__ - -class BeremizIDELauncher: - def __init__(self): - self.updateinfo_url = None - self.extensions = [] - self.app_dir = os.path.dirname(os.path.realpath(__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 "\nUsage:" - print "\n %s [Projectpath] [Buildpath]\n"%sys.argv[0] - - 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() - -if __name__ == '__main__': - beremiz = BeremizIDELauncher() - beremiz.Start()