lpcmanager

Parents 09ef5d8afdf8
Children 3cd2db294d3d
Added loading image on show beremiz and on build. We must need more tests.
  • +60 -21
    LPCManager.py
  • --- a/LPCManager.py Fri Jun 16 10:53:17 2017 +0200
    +++ b/LPCManager.py Tue Jul 04 10:03:14 2017 +0200
    @@ -1,17 +1,18 @@
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    -import sys
    +import fnmatch
    import shutil
    import socket
    +import sys
    +import threading
    import zipfile
    -import fnmatch
    -import threading
    __version__ = "$Revision$"
    import os, getopt, tempfile
    import __builtin__
    -from types import TupleType, StringType, UnicodeType
    +from types import StringType, UnicodeType
    +from blinker import signal
    _lpcmanager_path = os.path.split(__file__)[0]
    @@ -91,6 +92,16 @@
    from util.BitmapLibrary import AddBitmapFolder
    AddBitmapFolder(os.path.join(_lpcmanager_path, "images"))
    + import util
    + def GetPath(gif_name):
    + for folder in util.BitmapLibrary.BitmapFolders:
    + bmp_path = os.path.join(folder, gif_name)
    + if os.path.isfile(bmp_path):
    + return bmp_path
    + return None
    + util.BitmapLibrary.GetPath = GetPath
    + from util.BitmapLibrary import GetPath
    +
    config = wx.ConfigBase.Get()
    report = str(config.Read("Report"))
    if report == "":
    @@ -108,10 +119,10 @@
    _lpcmanager_path = os.path.split(__file__)[0]
    +from Beremiz.LPCManager.SmartehWidgets import SmartehScreenSplash as splash
    import features
    from POULibrary import POULibrary
    -
    class PLCLibraryLPC(POULibrary):
    def GetLibraryPath(self):
    return os.path.join(_lpcmanager_path + '/Pous/', "pousLPC.xml")
    @@ -148,10 +159,6 @@
    from LPCconnector.PYRO import MW_PYRO_connector_factory
    from LPCconnector.WAMP import MWWAMP_connector_factory
    -# connectors.connectors["LPC"] = lambda: LPC_connector_factory
    -# connectors.connectors["PYRO"] = lambda: MW_PYRO_connector_factory
    -# connectors.connectors["WAMP"] = lambda: MWWAMP_connector_factory
    -
    import targets
    from LPCtarget import LPC_target
    @@ -1120,10 +1127,7 @@
    # event.Skip()
    # LogViewer.OnCleanButton = OnCleanButton
    -from PLCControler import PLCControler, LOCATION_MODULE, LOCATION_GROUP, \
    - LOCATION_VAR_INPUT, LOCATION_VAR_OUTPUT, LOCATION_VAR_MEMORY
    -from IDEFrame import IDEFrame
    -from dialogs import ProjectDialog
    +from PLCControler import PLCControler, LOCATION_MODULE, LOCATION_GROUP
    defaultGenerateNewName = PLCControler.GenerateNewName
    def newGenerateNewName(self, tagname, name, format, start_idx=0, exclude={}, debug=False):
    @@ -1173,8 +1177,6 @@
    'size': 18,
    }
    -from editors.ConfTreeNodeEditor import GenBitmapTextButton
    -from editors.ConfTreeNodeEditor import ConfTreeNodeEditor
    # ConfTreeNodeEditor.SHOW_BASE_PARAMS = False
    # -------------------------------------------------------------------------------
    @@ -1512,18 +1514,43 @@
    self.logger.write(_("Export file is not created because eror: %s\n") % e)
    def _Build(self):
    - self._Clean(building = True)
    + threads = threading.enumerate()
    + pub = signal("build")
    +
    + def __Build(args, save, frame=None):
    + if frame:
    + thread = Thread(target=frame.ShowModal)
    + thread.setDaemon(True)
    + thread.start()
    + self.building = True
    + build_succeeded = ProjectController._Build(args)
    + if build_succeeded:
    + self.ToZIPFile()
    + pub.send("build")
    + if frame:
    + frame.Close()
    + if save:
    + wx.CallAfter(args.AppFrame.RefreshAll)
    + self.building = False
    +
    save = self.ProjectTestModified()
    +
    if save:
    self.SaveProject()
    self.AppFrame._Refresh(TITLE, FILEMENU)
    +
    if self.BuildPath is not None:
    mycopytree(self.OrigBuildPath, self.BuildPath)
    - build_succeeded = ProjectController._Build(self)
    - if build_succeeded:
    - self.ToZIPFile()
    - if save:
    - wx.CallAfter(self.AppFrame.RefreshAll)
    +
    + if len(filter(lambda x: x.getName() == "OnBuildThread", threads)) == 0:
    + self._Clean(building=True)
    + if self.AppFrame:
    + frame = splash.SmartehScreenSplash(self.AppFrame, bitmap=GetPath(splash.SPLASH_FN))
    + build_thread = Thread(name="OnBuildThread", target=__Build, args=(self,save, frame))
    + build_thread.daemon = True
    + build_thread.start()
    + else:
    + self.logger.write(_("Already building project.\n"))
    def SetProjectName(self, name):
    return self.Project.setname(name)
    @@ -2312,6 +2339,11 @@
    def Show(self):
    wx.Frame.Show(self)
    + loading = splash.SmartehScreenSplash(self, bitmap=GetPath(splash.SPLASH_FN), signal=signal_init)
    + thread = Thread(target=loading.ShowModal)
    + thread.start()
    +
    +
    def CheckEnabler(self, event):
    global _checkBlocks
    @@ -2531,6 +2563,8 @@
    frame.Show()
    frame.Raise()
    self.restore_last_state = True
    + # global signal_init
    + # signal_init.send("show")
    #self.RestartTimer()
    def Refresh(self):
    @@ -2566,6 +2600,9 @@
    def SetOnlineMode(self, mode, path=None):
    self.CTR.SetOnlineMode(mode, path)
    self.RestartTimer()
    + print("Set online mode")
    + global signal_init
    + signal_init.send("close")
    def AddBus(self, iec_channel, name, icon=None):
    for child in self.CTR.IterChildren():
    @@ -2859,6 +2896,8 @@
    else:
    Log.write("Error: No such file or directory")
    + signal_init = signal("build")
    +
    cmd_thread = Thread(target=CmdThreadProc, args=[CTR, Log])
    cmd_thread.start()