Beremiz.py
changeset 730 4480b7da6bea
parent 727 3edd2f19bce2
child 731 4fc681ed0c61
equal deleted inserted replaced
729:25054c592dc4 730:4480b7da6bea
   145 from util.TextCtrlAutoComplete import TextCtrlAutoComplete
   145 from util.TextCtrlAutoComplete import TextCtrlAutoComplete
   146 import cPickle
   146 import cPickle
   147 from util.BrowseValuesLibraryDialog import BrowseValuesLibraryDialog
   147 from util.BrowseValuesLibraryDialog import BrowseValuesLibraryDialog
   148 import types, time, re, platform, time, traceback, commands
   148 import types, time, re, platform, time, traceback, commands
   149 from ProjectController import ProjectController, MATIEC_ERROR_MODEL
   149 from ProjectController import ProjectController, MATIEC_ERROR_MODEL
   150 from util import MiniTextControler
   150 from util.MiniTextControler import MiniTextControler
   151 from util.ProcessLogger import ProcessLogger
   151 from util.ProcessLogger import ProcessLogger
   152 
   152 
   153 from docutil import OpenHtmlFrame
   153 from docutil import OpenHtmlFrame
   154 from PLCOpenEditor import IDEFrame, AppendMenu, TITLE, EDITORTOOLBAR, FILEMENU, EDITMENU, DISPLAYMENU, TYPESTREE, INSTANCESTREE, LIBRARYTREE, SCALING, PAGETITLES, USE_AUI
   154 from PLCOpenEditor import IDEFrame, AppendMenu, TITLE, EDITORTOOLBAR, FILEMENU, EDITMENU, DISPLAYMENU, PROJECTTREE, POUINSTANCEVARIABLESPANEL, LIBRARYTREE, SCALING, PAGETITLES, USE_AUI
   155 from PLCOpenEditor import EditorPanel, Viewer, TextViewer, GraphicViewer, ResourceEditor, ConfigurationEditor, DataTypeEditor
   155 from PLCOpenEditor import EditorPanel, Viewer, TextViewer, GraphicViewer, ResourceEditor, ConfigurationEditor, DataTypeEditor
   156 from PLCControler import LOCATION_CONFNODE, LOCATION_MODULE, LOCATION_GROUP, LOCATION_VAR_INPUT, LOCATION_VAR_OUTPUT, LOCATION_VAR_MEMORY
   156 from PLCControler import LOCATION_CONFNODE, LOCATION_MODULE, LOCATION_GROUP, LOCATION_VAR_INPUT, LOCATION_VAR_OUTPUT, LOCATION_VAR_MEMORY
   157 
   157 
   158 SCROLLBAR_UNIT = 10
   158 SCROLLBAR_UNIT = 10
   159 WINDOW_COLOUR = wx.Colour(240,240,240)
   159 WINDOW_COLOUR = wx.Colour(240,240,240)
   556             self.CTR = ProjectController(self, self.Log)
   556             self.CTR = ProjectController(self, self.Log)
   557             self.Controler = self.CTR
   557             self.Controler = self.CTR
   558             result = self.CTR.LoadProject(projectOpen, buildpath)
   558             result = self.CTR.LoadProject(projectOpen, buildpath)
   559             if not result:
   559             if not result:
   560                 self.LibraryPanel.SetControler(self.Controler)
   560                 self.LibraryPanel.SetControler(self.Controler)
       
   561                 self.PouInstanceVariablesPanel.SetController(self.Controler)
   561                 self.RefreshConfigRecentProjects(os.path.abspath(projectOpen))
   562                 self.RefreshConfigRecentProjects(os.path.abspath(projectOpen))
   562                 self._Refresh(TYPESTREE, INSTANCESTREE, LIBRARYTREE)
   563                 self._Refresh(PROJECTTREE, POUINSTANCEVARIABLESPANEL, LIBRARYTREE)
   563                 self.RefreshAll()
   564                 self.RefreshAll()
   564             else:
   565             else:
   565                 self.ResetView()
   566                 self.ResetView()
   566                 self.ShowErrorMessage(result)
   567                 self.ShowErrorMessage(result)
   567         else:
   568         else:
   568             self.CTR = ctr
   569             self.CTR = ctr
   569             self.Controler = ctr
   570             self.Controler = ctr
   570             if ctr is not None:
   571             if ctr is not None:
   571                 self.LibraryPanel.SetControler(self.Controler)
   572                 self.LibraryPanel.SetControler(self.Controler)
   572                 self._Refresh(TYPESTREE, INSTANCESTREE, LIBRARYTREE)
   573                 self.PouInstanceVariablesPanel.SetController(self.Controler)
       
   574                 self._Refresh(PROJECTTREE, POUINSTANCEVARIABLESPANEL, LIBRARYTREE)
   573                 self.RefreshAll()
   575                 self.RefreshAll()
   574         if self.EnableDebug:
   576         if self.EnableDebug:
   575             self.DebugVariablePanel.SetDataProducer(self.CTR)
   577             self.DebugVariablePanel.SetDataProducer(self.CTR)
   576         
   578         
   577         self.Bind(wx.EVT_CLOSE, self.OnCloseFrame)
   579         self.Bind(wx.EVT_CLOSE, self.OnCloseFrame)
   771             MenuToolBar.EnableTool(wx.ID_SAVEAS, False)
   773             MenuToolBar.EnableTool(wx.ID_SAVEAS, False)
   772             self.FileMenu.Enable(wx.ID_PROPERTIES, False)
   774             self.FileMenu.Enable(wx.ID_PROPERTIES, False)
   773             self.FileMenu.Enable(wx.ID_CLOSE_ALL, False)
   775             self.FileMenu.Enable(wx.ID_CLOSE_ALL, False)
   774     
   776     
   775     def RefreshRecentProjectsMenu(self):
   777     def RefreshRecentProjectsMenu(self):
   776         for i in xrange(self.RecentProjectsMenu.GetMenuItemCount()):
       
   777             item = self.RecentProjectsMenu.FindItemByPosition(0)
       
   778             self.RecentProjectsMenu.Delete(item.GetId())
       
   779         
       
   780         recent_projects = cPickle.loads(str(self.Config.Read("RecentProjects", cPickle.dumps([]))))
   778         recent_projects = cPickle.loads(str(self.Config.Read("RecentProjects", cPickle.dumps([]))))
   781         self.FileMenu.Enable(ID_FILEMENURECENTPROJECTS, len(recent_projects) > 0)
   779         self.FileMenu.Enable(ID_FILEMENURECENTPROJECTS, len(recent_projects) > 0)
   782         for idx, projectpath in enumerate(recent_projects):
   780         for idx, projectpath in enumerate(recent_projects):
   783             id = wx.NewId()
   781             text = u'%d: %s' % (idx + 1, projectpath)
   784             AppendMenu(self.RecentProjectsMenu, help='', id=id, 
   782             
   785                        kind=wx.ITEM_NORMAL, text="%d: %s" % (idx + 1, projectpath))
   783             if idx < self.RecentProjectsMenu.GetMenuItemCount():
       
   784                 item = self.RecentProjectsMenu.FindItemByPosition(idx)
       
   785                 id = item.GetId()
       
   786                 item.SetItemLabel(text)
       
   787                 self.Disconnect(id, id, wx.EVT_BUTTON._getEvtType())
       
   788             else:
       
   789                 id = wx.NewId()
       
   790                 AppendMenu(self.RecentProjectsMenu, help='', id=id, 
       
   791                            kind=wx.ITEM_NORMAL, text=text)
   786             self.Bind(wx.EVT_MENU, self.GenerateOpenRecentProjectFunction(projectpath), id=id)
   792             self.Bind(wx.EVT_MENU, self.GenerateOpenRecentProjectFunction(projectpath), id=id)
   787     
   793         
   788     def GenerateOpenRecentProjectFunction(self, projectpath):
   794     def GenerateOpenRecentProjectFunction(self, projectpath):
   789         def OpenRecentProject(event):
   795         def OpenRecentProject(event):
   790             if self.CTR is not None and not self.CheckSaveBeforeClosing():
   796             if self.CTR is not None and not self.CheckSaveBeforeClosing():
   791                 return
   797                 return
   792             
   798             
  1678             result = ctr.NewProject(projectpath)
  1684             result = ctr.NewProject(projectpath)
  1679             if not result:
  1685             if not result:
  1680                 self.CTR = ctr
  1686                 self.CTR = ctr
  1681                 self.Controler = self.CTR
  1687                 self.Controler = self.CTR
  1682                 self.LibraryPanel.SetControler(self.Controler)
  1688                 self.LibraryPanel.SetControler(self.Controler)
       
  1689                 self.PouInstanceVariablesPanel.SetController(self.Controler)
  1683                 self.RefreshConfigRecentProjects(projectpath)
  1690                 self.RefreshConfigRecentProjects(projectpath)
  1684                 if self.EnableDebug:
  1691                 if self.EnableDebug:
  1685                     self.DebugVariablePanel.SetDataProducer(self.CTR)
  1692                     self.DebugVariablePanel.SetDataProducer(self.CTR)
  1686                 self._Refresh(TYPESTREE, INSTANCESTREE, LIBRARYTREE)
  1693                 self._Refresh(PROJECTTREE, POUINSTANCEVARIABLESPANEL, LIBRARYTREE)
  1687                 self.RefreshAll()
  1694                 self.RefreshAll()
  1688             else:
  1695             else:
  1689                 self.ResetView()
  1696                 self.ResetView()
  1690                 self.ShowErrorMessage(result)
  1697                 self.ShowErrorMessage(result)
  1691             self._Refresh(TITLE, EDITORTOOLBAR, FILEMENU, EDITMENU)
  1698             self._Refresh(TITLE, EDITORTOOLBAR, FILEMENU, EDITMENU)
  1713             self.CTR = ProjectController(self, self.Log)
  1720             self.CTR = ProjectController(self, self.Log)
  1714             self.Controler = self.CTR
  1721             self.Controler = self.CTR
  1715             result = self.CTR.LoadProject(projectpath)
  1722             result = self.CTR.LoadProject(projectpath)
  1716             if not result:
  1723             if not result:
  1717                 self.LibraryPanel.SetControler(self.Controler)
  1724                 self.LibraryPanel.SetControler(self.Controler)
       
  1725                 self.PouInstanceVariablesPanel.SetController(self.Controler)
  1718                 self.RefreshConfigRecentProjects(projectpath)
  1726                 self.RefreshConfigRecentProjects(projectpath)
  1719                 if self.EnableDebug:
  1727                 if self.EnableDebug:
  1720                     self.DebugVariablePanel.SetDataProducer(self.CTR)
  1728                     self.DebugVariablePanel.SetDataProducer(self.CTR)
  1721                 self.LoadProjectOrganization()
  1729                 self.LoadProjectOrganization()
  1722                 self._Refresh(TYPESTREE, INSTANCESTREE, LIBRARYTREE)
  1730                 self._Refresh(PROJECTTREE, POUINSTANCEVARIABLESPANEL, LIBRARYTREE)
  1723                 self.RefreshAll()
  1731                 self.RefreshAll()
  1724             else:
  1732             else:
  1725                 self.ResetView()
  1733                 self.ResetView()
  1726                 self.ShowErrorMessage(result)
  1734                 self.ShowErrorMessage(result)
  1727         else:
  1735         else: