PLCOpenEditor.py
changeset 114 06454545e5d0
parent 108 9aa1fdfb7cb2
child 118 0c53d6a36013
equal deleted inserted replaced
113:9eeaebd867aa 114:06454545e5d0
   129              (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARWIRE, "OnWireTool", "wire.png", "Create a new wire")],
   129              (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARWIRE, "OnWireTool", "wire.png", "Create a new wire")],
   130     "ST"  : [],
   130     "ST"  : [],
   131     "IL"  : []
   131     "IL"  : []
   132 }
   132 }
   133 
   133 
       
   134 def AppendMenu(parent, help, id, kind, text):
       
   135     if wx.VERSION >= (2, 6, 0):
       
   136         parent.Append(help=help, id=id, kind=kind, text=text)
       
   137     else:
       
   138         parent.Append(helpString=help, id=id, kind=kind, item=text)
       
   139 
   134 class PLCOpenEditor(wx.Frame):
   140 class PLCOpenEditor(wx.Frame):
   135     _custom_classes = {'wx.SashWindow' : ['Viewer']}
   141     _custom_classes = {'wx.SashWindow' : ['Viewer']}
   136     
   142     
       
   143     if wx.VERSION < (2, 6, 0):
       
   144         def Bind(self, event, function, id = None):
       
   145             if id is not None:
       
   146                 event(self, id, function)
       
   147             else:
       
   148                 event(self, function)
       
   149     
   137     def _init_coll_EditMenu_Items(self, parent):
   150     def _init_coll_EditMenu_Items(self, parent):
   138         parent.Append(help='', id=ID_PLCOPENEDITOREDITMENUITEMS0,
   151         AppendMenu(parent, help='', id=ID_PLCOPENEDITOREDITMENUITEMS0,
   139               kind=wx.ITEM_NORMAL, text=u'Refresh\tCTRL+R')
   152               kind=wx.ITEM_NORMAL, text=u'Refresh\tCTRL+R')
   140         parent.Append(help='', id=ID_PLCOPENEDITOREDITMENUITEMS1,
   153         AppendMenu(parent, help='', id=ID_PLCOPENEDITOREDITMENUITEMS1,
   141               kind=wx.ITEM_NORMAL, text=u'Undo\tCTRL+Z')
   154               kind=wx.ITEM_NORMAL, text=u'Undo\tCTRL+Z')
   142         parent.Append(help='', id=ID_PLCOPENEDITOREDITMENUITEMS2,
   155         AppendMenu(parent, help='', id=ID_PLCOPENEDITOREDITMENUITEMS2,
   143               kind=wx.ITEM_NORMAL, text=u'Redo\tCTRL+Y')
   156               kind=wx.ITEM_NORMAL, text=u'Redo\tCTRL+Y')
   144         parent.AppendSeparator()
   157         parent.AppendSeparator()
   145         parent.Append(help='', id=ID_PLCOPENEDITOREDITMENUITEMS4,
   158         AppendMenu(parent, help='', id=ID_PLCOPENEDITOREDITMENUITEMS4,
   146               kind=wx.ITEM_NORMAL, text=u'Cut\tCTRL+X')
   159               kind=wx.ITEM_NORMAL, text=u'Cut\tCTRL+X')
   147         parent.Append(help='', id=ID_PLCOPENEDITOREDITMENUITEMS5,
   160         AppendMenu(parent, help='', id=ID_PLCOPENEDITOREDITMENUITEMS5,
   148               kind=wx.ITEM_NORMAL, text=u'Copy\tCTRL+C')
   161               kind=wx.ITEM_NORMAL, text=u'Copy\tCTRL+C')
   149         parent.Append(help='', id=ID_PLCOPENEDITOREDITMENUITEMS6,
   162         AppendMenu(parent, help='', id=ID_PLCOPENEDITOREDITMENUITEMS6,
   150               kind=wx.ITEM_NORMAL, text=u'Paste\tCTRL+V')
   163               kind=wx.ITEM_NORMAL, text=u'Paste\tCTRL+V')
   151         parent.AppendSeparator()
   164         parent.AppendSeparator()
   152         parent.Append(help='', id=ID_PLCOPENEDITOREDITMENUITEMS8,
   165         AppendMenu(parent, help='', id=ID_PLCOPENEDITOREDITMENUITEMS8,
   153               kind=wx.ITEM_NORMAL, text=u'Add POU')
   166               kind=wx.ITEM_NORMAL, text=u'Add POU')
   154         parent.Append(help='', id=ID_PLCOPENEDITOREDITMENUITEMS9,
   167         AppendMenu(parent, help='', id=ID_PLCOPENEDITOREDITMENUITEMS9,
   155               kind=wx.ITEM_NORMAL, text=u'Remove POU')
   168               kind=wx.ITEM_NORMAL, text=u'Remove POU')
   156         parent.AppendSeparator()
   169         parent.AppendSeparator()
   157         parent.Append(help='', id=ID_PLCOPENEDITOREDITMENUITEMS11,
   170         AppendMenu(parent, help='', id=ID_PLCOPENEDITOREDITMENUITEMS11,
   158               kind=wx.ITEM_NORMAL, text=u'Add Configuration')
   171               kind=wx.ITEM_NORMAL, text=u'Add Configuration')
   159         parent.Append(help='', id=ID_PLCOPENEDITOREDITMENUITEMS12,
   172         AppendMenu(parent, help='', id=ID_PLCOPENEDITOREDITMENUITEMS12,
   160               kind=wx.ITEM_NORMAL, text=u'Remove Configuration')
   173               kind=wx.ITEM_NORMAL, text=u'Remove Configuration')
   161         self.Bind(wx.EVT_MENU, self.OnRefreshMenu,
   174         self.Bind(wx.EVT_MENU, self.OnRefreshMenu,
   162               id=ID_PLCOPENEDITOREDITMENUITEMS0)
   175               id=ID_PLCOPENEDITOREDITMENUITEMS0)
   163         self.Bind(wx.EVT_MENU, self.OnUndoMenu,
   176         self.Bind(wx.EVT_MENU, self.OnUndoMenu,
   164               id=ID_PLCOPENEDITOREDITMENUITEMS1)
   177               id=ID_PLCOPENEDITOREDITMENUITEMS1)
   184             parent.Append(menu=self.FileMenu, title=u'File')
   197             parent.Append(menu=self.FileMenu, title=u'File')
   185         parent.Append(menu=self.EditMenu, title=u'Edit')
   198         parent.Append(menu=self.EditMenu, title=u'Edit')
   186         parent.Append(menu=self.HelpMenu, title=u'Help')
   199         parent.Append(menu=self.HelpMenu, title=u'Help')
   187 
   200 
   188     def _init_coll_ConfigMenu_Items(self, parent):
   201     def _init_coll_ConfigMenu_Items(self, parent):
   189         parent.Append(help='', id=ID_PLCOPENEDITORCONFIGMENUITEMS0,
   202         AppendMenu(parent, help='', id=ID_PLCOPENEDITORCONFIGMENUITEMS0,
   190               kind=wx.ITEM_NORMAL, text=u'Add Resource')
   203               kind=wx.ITEM_NORMAL, text=u'Add Resource')
   191         parent.Append(help='', id=ID_PLCOPENEDITORCONFIGMENUITEMS1,
   204         AppendMenu(parent, help='', id=ID_PLCOPENEDITORCONFIGMENUITEMS1,
   192               kind=wx.ITEM_NORMAL, text=u'Remove Resource')
   205               kind=wx.ITEM_NORMAL, text=u'Remove Resource')
   193         self.Bind(wx.EVT_MENU, self.OnAddResourceMenu,
   206         self.Bind(wx.EVT_MENU, self.OnAddResourceMenu,
   194               id=ID_PLCOPENEDITORCONFIGMENUITEMS0)
   207               id=ID_PLCOPENEDITORCONFIGMENUITEMS0)
   195         self.Bind(wx.EVT_MENU, self.OnRemoveResourceMenu,
   208         self.Bind(wx.EVT_MENU, self.OnRemoveResourceMenu,
   196               id=ID_PLCOPENEDITORCONFIGMENUITEMS1)
   209               id=ID_PLCOPENEDITORCONFIGMENUITEMS1)
   197 
   210 
   198     def _init_coll_HelpMenu_Items(self, parent):
   211     def _init_coll_HelpMenu_Items(self, parent):
   199         parent.Append(help='', id=ID_PLCOPENEDITORHELPMENUITEMS0,
   212         AppendMenu(parent, help='', id=ID_PLCOPENEDITORHELPMENUITEMS0, 
   200               kind=wx.ITEM_NORMAL, text=u'PLCOpenEditor\tF1')
   213             kind=wx.ITEM_NORMAL, text=u'PLCOpenEditor\tF1')
   201         parent.Append(help='', id=ID_PLCOPENEDITORHELPMENUITEMS1,
   214         AppendMenu(parent, help='', id=ID_PLCOPENEDITORHELPMENUITEMS1,
   202               kind=wx.ITEM_NORMAL, text=u'PLCOpen\tF2')
   215               kind=wx.ITEM_NORMAL, text=u'PLCOpen\tF2')
   203         parent.Append(help='', id=ID_PLCOPENEDITORHELPMENUITEMS2,
   216         AppendMenu(parent, help='', id=ID_PLCOPENEDITORHELPMENUITEMS2,
   204               kind=wx.ITEM_NORMAL, text=u'IEC 61131-3\tF3')
   217               kind=wx.ITEM_NORMAL, text=u'IEC 61131-3\tF3')
   205         if self.ModeSolo:
   218         if self.ModeSolo:
   206             parent.Append(help='', id=ID_PLCOPENEDITORHELPMENUITEMS3,
   219             AppendMenu(parent, help='', id=ID_PLCOPENEDITORHELPMENUITEMS3,
   207                   kind=wx.ITEM_NORMAL, text=u'About')
   220                   kind=wx.ITEM_NORMAL, text=u'About')
   208         self.Bind(wx.EVT_MENU, self.OnPLCOpenMenu,
   221         self.Bind(wx.EVT_MENU, self.OnPLCOpenMenu,
   209               id=ID_PLCOPENEDITORHELPMENUITEMS1)
   222               id=ID_PLCOPENEDITORHELPMENUITEMS1)
   210 
   223     
   211     def _init_coll_FileMenu_Items(self, parent):
   224     def _init_coll_FileMenu_Items(self, parent):
   212         parent.Append(help='', id=ID_PLCOPENEDITORFILEMENUITEMS0,
   225         AppendMenu(parent, help='', id=ID_PLCOPENEDITORFILEMENUITEMS0,
   213               kind=wx.ITEM_NORMAL, text=u'New\tCTRL+N')
   226               kind=wx.ITEM_NORMAL, text=u'New\tCTRL+N')
   214         parent.Append(help='', id=ID_PLCOPENEDITORFILEMENUITEMS1,
   227         AppendMenu(parent, help='', id=ID_PLCOPENEDITORFILEMENUITEMS1,
   215               kind=wx.ITEM_NORMAL, text=u'Open\tCTRL+O')
   228               kind=wx.ITEM_NORMAL, text=u'Open\tCTRL+O')
   216         parent.Append(help='', id=ID_PLCOPENEDITORFILEMENUITEMS2,
   229         AppendMenu(parent, help='', id=ID_PLCOPENEDITORFILEMENUITEMS2,
   217               kind=wx.ITEM_NORMAL, text=u'Close Tab\tCTRL+W')
   230               kind=wx.ITEM_NORMAL, text=u'Close Tab\tCTRL+W')
   218         parent.Append(help='', id=ID_PLCOPENEDITORFILEMENUITEMS3,
   231         AppendMenu(parent, help='', id=ID_PLCOPENEDITORFILEMENUITEMS3,
   219               kind=wx.ITEM_NORMAL, text=u'Close Project')
   232               kind=wx.ITEM_NORMAL, text=u'Close Project')
   220         parent.AppendSeparator()
   233         parent.AppendSeparator()
   221         parent.Append(help='', id=ID_PLCOPENEDITORFILEMENUITEMS5,
   234         AppendMenu(parent, help='', id=ID_PLCOPENEDITORFILEMENUITEMS5,
   222               kind=wx.ITEM_NORMAL, text=u'Save\tCTRL+S')
   235               kind=wx.ITEM_NORMAL, text=u'Save\tCTRL+S')
   223         parent.Append(help='', id=ID_PLCOPENEDITORFILEMENUITEMS6,
   236         AppendMenu(parent, help='', id=ID_PLCOPENEDITORFILEMENUITEMS6,
   224               kind=wx.ITEM_NORMAL, text=u'Save As...\tCTRL+SHIFT+S')
   237               kind=wx.ITEM_NORMAL, text=u'Save As...\tCTRL+SHIFT+S')
   225         parent.Append(help='', id=ID_PLCOPENEDITORFILEMENUITEMS7,
   238         AppendMenu(parent, help='', id=ID_PLCOPENEDITORFILEMENUITEMS7,
   226               kind=wx.ITEM_NORMAL, text=u'Generate Program\tCTRL+G')
   239               kind=wx.ITEM_NORMAL, text=u'Generate Program\tCTRL+G')
   227         parent.AppendSeparator()
   240         parent.AppendSeparator()
   228         parent.Append(help='', id=ID_PLCOPENEDITORFILEMENUITEMS9,
   241         AppendMenu(parent, help='', id=ID_PLCOPENEDITORFILEMENUITEMS9,
   229               kind=wx.ITEM_NORMAL, text=u'Properties')
   242               kind=wx.ITEM_NORMAL, text=u'Properties')
   230         parent.AppendSeparator()
   243         parent.AppendSeparator()
   231         parent.Append(help='', id=ID_PLCOPENEDITORFILEMENUITEMS11,
   244         AppendMenu(parent, help='', id=ID_PLCOPENEDITORFILEMENUITEMS11,
   232               kind=wx.ITEM_NORMAL, text=u'Quit\tCTRL+Q')
   245               kind=wx.ITEM_NORMAL, text=u'Quit\tCTRL+Q')
   233         self.Bind(wx.EVT_MENU, self.OnNewProjectMenu,
   246         self.Bind(wx.EVT_MENU, self.OnNewProjectMenu,
   234               id=ID_PLCOPENEDITORFILEMENUITEMS0)
   247               id=ID_PLCOPENEDITORFILEMENUITEMS0)
   235         self.Bind(wx.EVT_MENU, self.OnOpenProjectMenu,
   248         self.Bind(wx.EVT_MENU, self.OnOpenProjectMenu,
   236               id=ID_PLCOPENEDITORFILEMENUITEMS1)
   249               id=ID_PLCOPENEDITORFILEMENUITEMS1)
   248               id=ID_PLCOPENEDITORFILEMENUITEMS9)
   261               id=ID_PLCOPENEDITORFILEMENUITEMS9)
   249         self.Bind(wx.EVT_MENU, self.OnQuitMenu,
   262         self.Bind(wx.EVT_MENU, self.OnQuitMenu,
   250               id=ID_PLCOPENEDITORFILEMENUITEMS11)
   263               id=ID_PLCOPENEDITORFILEMENUITEMS11)
   251 
   264 
   252     def _init_coll_SFCMenu_Items(self, parent):
   265     def _init_coll_SFCMenu_Items(self, parent):
   253         parent.Append(help='', id=ID_PLCOPENEDITORSFCMENUITEMS0,
   266         AppendMenu(parent, help='', id=ID_PLCOPENEDITORSFCMENUITEMS0,
   254               kind=wx.ITEM_NORMAL, text=u'Add Transition')
   267               kind=wx.ITEM_NORMAL, text=u'Add Transition')
   255         parent.Append(help='', id=ID_PLCOPENEDITORSFCMENUITEMS1,
   268         AppendMenu(parent, help='', id=ID_PLCOPENEDITORSFCMENUITEMS1,
   256               kind=wx.ITEM_NORMAL, text=u'Add Action')
   269               kind=wx.ITEM_NORMAL, text=u'Add Action')
   257         parent.Append(help='', id=ID_PLCOPENEDITORSFCMENUITEMS2,
   270         AppendMenu(parent, help='', id=ID_PLCOPENEDITORSFCMENUITEMS2,
   258               kind=wx.ITEM_NORMAL, text=u'Remove Transition')
   271               kind=wx.ITEM_NORMAL, text=u'Remove Transition')
   259         parent.Append(help='', id=ID_PLCOPENEDITORSFCMENUITEMS3,
   272         AppendMenu(parent, help='', id=ID_PLCOPENEDITORSFCMENUITEMS3,
   260               kind=wx.ITEM_NORMAL, text=u'Remove Action')
   273               kind=wx.ITEM_NORMAL, text=u'Remove Action')
   261         self.Bind(wx.EVT_MENU, self.OnAddPouTransitionMenu,
   274         self.Bind(wx.EVT_MENU, self.OnAddPouTransitionMenu,
   262               id=ID_PLCOPENEDITORSFCMENUITEMS0)
   275               id=ID_PLCOPENEDITORSFCMENUITEMS0)
   263         self.Bind(wx.EVT_MENU, self.OnAddPouActionMenu,
   276         self.Bind(wx.EVT_MENU, self.OnAddPouActionMenu,
   264               id=ID_PLCOPENEDITORSFCMENUITEMS1)
   277               id=ID_PLCOPENEDITORSFCMENUITEMS1)
   269 
   282 
   270     def _init_utils(self):
   283     def _init_utils(self):
   271         self.menuBar1 = wx.MenuBar()
   284         self.menuBar1 = wx.MenuBar()
   272 
   285 
   273         if self.ModeSolo:
   286         if self.ModeSolo:
   274             self.FileMenu = wx.Menu(title=u'')
   287             self.FileMenu = wx.Menu(title='')
   275         else:
   288         else:
   276             self.FileMenu = None
   289             self.FileMenu = None
   277         self.EditMenu = wx.Menu(title=u'')
   290         self.EditMenu = wx.Menu(title='')
   278         self.HelpMenu = wx.Menu(title='')
   291         self.HelpMenu = wx.Menu(title='')
   279         self.SFCMenu = wx.Menu(title='')
   292         self.SFCMenu = wx.Menu(title='')
   280         self.ConfigMenu = wx.Menu(title='')
   293         self.ConfigMenu = wx.Menu(title='')
   281 
   294 
   282         self._init_coll_menuBar1_Menus(self.menuBar1)
   295         self._init_coll_menuBar1_Menus(self.menuBar1)
   308         
   321         
   309         self.ProjectTree = wx.TreeCtrl(id=ID_PLCOPENEDITORPROJECTTREE,
   322         self.ProjectTree = wx.TreeCtrl(id=ID_PLCOPENEDITORPROJECTTREE,
   310               name='treeCtrl1', parent=self.MainSplitter, pos=wx.Point(0, 0),
   323               name='treeCtrl1', parent=self.MainSplitter, pos=wx.Point(0, 0),
   311               size=wx.Size(-1, -1),
   324               size=wx.Size(-1, -1),
   312               style=wx.TR_HAS_BUTTONS|wx.TR_EDIT_LABELS|wx.TR_SINGLE|wx.SUNKEN_BORDER)
   325               style=wx.TR_HAS_BUTTONS|wx.TR_EDIT_LABELS|wx.TR_SINGLE|wx.SUNKEN_BORDER)
   313         self.ProjectTree.Bind(wx.EVT_RIGHT_UP, self.OnProjectTreeRightUp)
   326         if wx.VERSION >= (2, 6, 0):
       
   327             self.ProjectTree.Bind(wx.EVT_RIGHT_UP, self.OnProjectTreeRightUp)
       
   328         else:
       
   329             wx.EVT_RIGHT_UP(self.ProjectTree, self.OnProjectTreeRightUp)
   314         self.Bind(wx.EVT_TREE_BEGIN_DRAG, self.OnProjectTreeBeginDrag,
   330         self.Bind(wx.EVT_TREE_BEGIN_DRAG, self.OnProjectTreeBeginDrag,
   315               id=ID_PLCOPENEDITORPROJECTTREE)
   331               id=ID_PLCOPENEDITORPROJECTTREE)
   316         self.Bind(wx.EVT_TREE_BEGIN_LABEL_EDIT, self.OnProjectTreeItemBeginEdit,
   332         self.Bind(wx.EVT_TREE_BEGIN_LABEL_EDIT, self.OnProjectTreeItemBeginEdit,
   317               id=ID_PLCOPENEDITORPROJECTTREE)
   333               id=ID_PLCOPENEDITORPROJECTTREE)
   318         self.Bind(wx.EVT_TREE_END_LABEL_EDIT, self.OnProjectTreeItemEndEdit,
   334         self.Bind(wx.EVT_TREE_END_LABEL_EDIT, self.OnProjectTreeItemEndEdit,
   332               id=ID_PLCOPENEDITORTOOLBARSELECTION)
   348               id=ID_PLCOPENEDITORTOOLBARSELECTION)
   333     
   349     
   334         self.TabsOpened = wx.Notebook(id=ID_PLCOPENEDITORTABSOPENED,
   350         self.TabsOpened = wx.Notebook(id=ID_PLCOPENEDITORTABSOPENED,
   335               name='TabsOpened', parent=self.MainSplitter, pos=wx.Point(0,
   351               name='TabsOpened', parent=self.MainSplitter, pos=wx.Point(0,
   336               0), size=wx.Size(0, 0), style=0)
   352               0), size=wx.Size(0, 0), style=0)
   337         self.TabsOpened.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED,
   353         if wx.VERSION >= (2, 6, 0):
   338               self.OnPouSelectedChanged, id=ID_PLCOPENEDITORTABSOPENED)
   354             self.TabsOpened.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED,
   339     
   355                 self.OnPouSelectedChanged, id=ID_PLCOPENEDITORTABSOPENED)
       
   356         else:
       
   357             wx.EVT_NOTEBOOK_PAGE_CHANGED(self.TabsOpened, ID_PLCOPENEDITORTABSOPENED,
       
   358                 self.OnPouSelectedChanged)
   340         self.MainSplitter.SplitVertically(self.ProjectTree, self.TabsOpened, 200)
   359         self.MainSplitter.SplitVertically(self.ProjectTree, self.TabsOpened, 200)
   341         
   360         
   342     def __init__(self, parent, controler = None, fileOpen = None):
   361     def __init__(self, parent, controler = None, fileOpen = None):
   343         self.ModeSolo = controler == None
   362         self.ModeSolo = controler == None
   344         self._init_ctrls(parent)
   363         self._init_ctrls(parent)
   358             self.Controler = controler
   377             self.Controler = controler
   359             self.RefreshProjectTree()
   378             self.RefreshProjectTree()
   360         
   379         
   361         self.CurrentToolBar = []
   380         self.CurrentToolBar = []
   362         self.CurrentLanguage = ""
   381         self.CurrentLanguage = ""
       
   382         self.CopyBuffer = None
   363         self.DrawingMode = FREEDRAWING_MODE
   383         self.DrawingMode = FREEDRAWING_MODE
   364         #self.DrawingMode = DRIVENDRAWING_MODE
   384         #self.DrawingMode = DRIVENDRAWING_MODE
   365         
   385         
   366         self.RefreshFileMenu()
   386         self.RefreshFileMenu()
   367         self.RefreshEditMenu()
   387         self.RefreshEditMenu()
   368         self.RefreshTitle()
   388         self.RefreshTitle()
   369         self.RefreshToolBar()
   389         self.RefreshToolBar()
   370 
   390 
       
   391     def GetCopyBuffer(self):
       
   392         return self.CopyBuffer
       
   393     
       
   394     def SetCopyBuffer(self, element):
       
   395         self.CopyBuffer = element
       
   396         self.RefreshEditMenu()
       
   397 
   371     def GetDrawingMode(self):
   398     def GetDrawingMode(self):
   372         return self.DrawingMode
   399         return self.DrawingMode
   373 
   400 
   374     def RefreshTitle(self):
   401     def RefreshTitle(self):
   375         if self.Controler.HasOpenedProject() > 0:
   402         if self.Controler.HasOpenedProject() > 0:
   379 
   406 
   380     def RefreshFileMenu(self):
   407     def RefreshFileMenu(self):
   381         if self.FileMenu:
   408         if self.FileMenu:
   382             if self.Controler.HasOpenedProject():
   409             if self.Controler.HasOpenedProject():
   383                 if self.TabsOpened.GetPageCount() > 0:
   410                 if self.TabsOpened.GetPageCount() > 0:
   384                     self.FileMenu.FindItemByPosition(2).Enable(True)
   411                     self.FileMenu.Enable(ID_PLCOPENEDITORFILEMENUITEMS2, True)
   385                 else:
   412                 else:
   386                     self.FileMenu.FindItemByPosition(2).Enable(False)
   413                     self.FileMenu.Enable(ID_PLCOPENEDITORFILEMENUITEMS2, False)
   387                 self.FileMenu.FindItemByPosition(3).Enable(True)
   414                 self.FileMenu.Enable(ID_PLCOPENEDITORFILEMENUITEMS3, True)
   388                 self.FileMenu.FindItemByPosition(5).Enable(True)
   415                 self.FileMenu.Enable(ID_PLCOPENEDITORFILEMENUITEMS5, True)
   389                 self.FileMenu.FindItemByPosition(6).Enable(True)
   416                 self.FileMenu.Enable(ID_PLCOPENEDITORFILEMENUITEMS6, True)
   390                 self.FileMenu.FindItemByPosition(7).Enable(True)
   417                 self.FileMenu.Enable(ID_PLCOPENEDITORFILEMENUITEMS7, True)
   391                 self.FileMenu.FindItemByPosition(9).Enable(True)
   418                 self.FileMenu.Enable(ID_PLCOPENEDITORFILEMENUITEMS9, True)
   392             else:
   419             else:
   393                 self.FileMenu.FindItemByPosition(2).Enable(False)
   420                 self.FileMenu.Enable(ID_PLCOPENEDITORFILEMENUITEMS2, False)
   394                 self.FileMenu.FindItemByPosition(3).Enable(False)
   421                 self.FileMenu.Enable(ID_PLCOPENEDITORFILEMENUITEMS3, False)
   395                 self.FileMenu.FindItemByPosition(5).Enable(False)
   422                 self.FileMenu.Enable(ID_PLCOPENEDITORFILEMENUITEMS5, False)
   396                 self.FileMenu.FindItemByPosition(6).Enable(False)
   423                 self.FileMenu.Enable(ID_PLCOPENEDITORFILEMENUITEMS6, False)
   397                 self.FileMenu.FindItemByPosition(7).Enable(False)
   424                 self.FileMenu.Enable(ID_PLCOPENEDITORFILEMENUITEMS7, False)
   398                 self.FileMenu.FindItemByPosition(9).Enable(False)
   425                 self.FileMenu.Enable(ID_PLCOPENEDITORFILEMENUITEMS9, False)
   399 
   426 
   400     def RefreshEditMenu(self):
   427     def RefreshEditMenu(self):
   401         if self.EditMenu:
   428         if self.EditMenu:
   402             if self.Controler.HasOpenedProject():
   429             if self.Controler.HasOpenedProject():
   403                 undo, redo = self.Controler.GetBufferState()
   430                 undo, redo = self.Controler.GetBufferState()
   406             else:
   433             else:
   407                 self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUITEMS1, False)
   434                 self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUITEMS1, False)
   408                 self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUITEMS2, False)
   435                 self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUITEMS2, False)
   409             if self.Controler.HasOpenedProject():
   436             if self.Controler.HasOpenedProject():
   410                 if self.TabsOpened.GetPageCount() > 0:
   437                 if self.TabsOpened.GetPageCount() > 0:
   411                     self.EditMenu.FindItemByPosition(0).Enable(True)
   438                     self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUITEMS0, True)
   412                 else:
   439                 else:
   413                     self.EditMenu.FindItemByPosition(0).Enable(False)
   440                     self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUITEMS0, False)
   414                 self.EditMenu.FindItemByPosition(8).Enable(True)
   441                 self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUITEMS8, True)
   415                 self.EditMenu.FindItemByPosition(9).Enable(True)
   442                 self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUITEMS9, True)
   416             else:
   443             else:
   417                 self.EditMenu.FindItemByPosition(0).Enable(False)
   444                 self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUITEMS0, False)
   418                 self.EditMenu.FindItemByPosition(8).Enable(False)
   445                 self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUITEMS8, False)
   419                 self.EditMenu.FindItemByPosition(9).Enable(False)
   446                 self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUITEMS9, False)
   420             bodytype = self.Controler.GetCurrentElementEditingBodyType()
   447             bodytype = self.Controler.GetCurrentElementEditingBodyType()
   421             if bodytype in ["IL","ST"]:
   448             self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUITEMS4, True)
   422                 self.EditMenu.FindItemByPosition(4).Enable(True)
   449             self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUITEMS5, True)
   423                 self.EditMenu.FindItemByPosition(5).Enable(True)
   450             if self.CopyBuffer is not None:
   424                 self.EditMenu.FindItemByPosition(6).Enable(True)
   451                 self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUITEMS6, True)
   425             else:
   452             else:
   426                 self.EditMenu.FindItemByPosition(4).Enable(False)
   453                 self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUITEMS6, False)
   427                 self.EditMenu.FindItemByPosition(5).Enable(False)
       
   428             self.EditMenu.FindItemByPosition(6).Enable(False)
       
   429 
   454 
   430     def RefreshEditor(self):
   455     def RefreshEditor(self):
   431         selected = self.TabsOpened.GetSelection()
   456         selected = self.TabsOpened.GetSelection()
   432         if selected != -1:
   457         if selected != -1:
   433             self.TabsOpened.GetPage(selected).RefreshView()
   458             self.TabsOpened.GetPage(selected).RefreshView()
   746             self.Controler.RefreshCurrentElementEditing(selected)
   771             self.Controler.RefreshCurrentElementEditing(selected)
   747             found = False
   772             found = False
   748             name = self.TabsOpened.GetPageText(selected)
   773             name = self.TabsOpened.GetPageText(selected)
   749             if self.ProjectTree:
   774             if self.ProjectTree:
   750                 root = self.ProjectTree.GetRootItem()
   775                 root = self.ProjectTree.GetRootItem()
   751                 item, root_cookie = self.ProjectTree.GetFirstChild(root)
   776                 if wx.VERSION >= (2, 6, 0):
       
   777                     item, root_cookie = self.ProjectTree.GetFirstChild(root)
       
   778                 else:
       
   779                     item, root_cookie = self.ProjectTree.GetFirstChild(root, 0)
   752                 while item.IsOk() and not found:
   780                 while item.IsOk() and not found:
   753                     if self.ProjectTree.GetItemText(item) == name:
   781                     if self.ProjectTree.GetItemText(item) == name:
   754                         self.ProjectTree.SelectItem(item)
   782                         self.ProjectTree.SelectItem(item)
   755                     item, root_cookie = self.ProjectTree.GetNextChild(root, root_cookie)
   783                     item, root_cookie = self.ProjectTree.GetNextChild(root, root_cookie)
   756             self.TabsOpened.GetPage(selected).RefreshView()
   784             self.TabsOpened.GetPage(selected).RefreshView()
   959         if elementtype == ITEM_CONFIGURATION and len(names) == 1:
   987         if elementtype == ITEM_CONFIGURATION and len(names) == 1:
   960             if not onlyopened:
   988             if not onlyopened:
   961                 idx = self.Controler.OpenConfigurationEditing(*names)
   989                 idx = self.Controler.OpenConfigurationEditing(*names)
   962                 if idx is not None:
   990                 if idx is not None:
   963                     new_window = PouEditorPanel(self.TabsOpened, self, self.Controler, "config", config_name = names[0])
   991                     new_window = PouEditorPanel(self.TabsOpened, self, self.Controler, "config", config_name = names[0])
       
   992                     new_window.SetIndex(idx)
   964                     self.TabsOpened.AddPage(new_window, "")
   993                     self.TabsOpened.AddPage(new_window, "")
   965             if idx is None:
   994             if idx is None:
   966                 idx = self.Controler.ChangeConfigurationEditing(*names)
   995                 idx = self.Controler.ChangeConfigurationEditing(*names)
   967         elif elementtype == ITEM_RESOURCE and len(names) == 2:
   996         elif elementtype == ITEM_RESOURCE and len(names) == 2:
   968             if not onlyopened:
   997             if not onlyopened:
   969                 idx = self.Controler.OpenConfigurationResourceEditing(*names)
   998                 idx = self.Controler.OpenConfigurationResourceEditing(*names)
   970                 if idx is not None:
   999                 if idx is not None:
   971                     new_window = PouEditorPanel(self.TabsOpened, self, self.Controler, "resource", config_name = names[0], resource_name = names[1])
  1000                     new_window = PouEditorPanel(self.TabsOpened, self, self.Controler, "resource", config_name = names[0], resource_name = names[1])
       
  1001                     new_window.SetIndex(idx)
   972                     self.TabsOpened.AddPage(new_window, "")
  1002                     self.TabsOpened.AddPage(new_window, "")
   973             if idx is None:
  1003             if idx is None:
   974                 idx = self.Controler.ChangeConfigurationResourceEditing(*names)
  1004                 idx = self.Controler.ChangeConfigurationResourceEditing(*names)
   975         elif elementtype == ITEM_POU and len(names) == 1:
  1005         elif elementtype == ITEM_POU and len(names) == 1:
   976             if not onlyopened:
  1006             if not onlyopened:
   977                 idx = self.Controler.OpenPouEditing(*names)
  1007                 idx = self.Controler.OpenPouEditing(*names)
   978                 if idx != None:
  1008                 if idx != None:
   979                     new_window = PouEditorPanel(self.TabsOpened, self, self.Controler, self.Controler.GetPouType(names[0]), pou_name = names[0])
  1009                     new_window = PouEditorPanel(self.TabsOpened, self, self.Controler, self.Controler.GetPouType(names[0]), pou_name = names[0])
       
  1010                     new_window.SetIndex(idx)
   980                     self.TabsOpened.AddPage(new_window, "")
  1011                     self.TabsOpened.AddPage(new_window, "")
   981             if idx is None:
  1012             if idx is None:
   982                 idx = self.Controler.ChangePouEditing(*names)
  1013                 idx = self.Controler.ChangePouEditing(*names)
   983         elif elementtype == ITEM_TRANSITION and len(names) == 2:
  1014         elif elementtype == ITEM_TRANSITION and len(names) == 2:
   984             if not onlyopened:
  1015             if not onlyopened:
   985                 idx = self.Controler.OpenPouTransitionEditing(*names)
  1016                 idx = self.Controler.OpenPouTransitionEditing(*names)
   986                 if idx is not None:
  1017                 if idx is not None:
   987                     new_window = PouEditorPanel(self.TabsOpened, self, self.Controler, "transition", pou_name = names[0], transition_name = names[1])
  1018                     new_window = PouEditorPanel(self.TabsOpened, self, self.Controler, "transition", pou_name = names[0], transition_name = names[1])
       
  1019                     new_window.SetIndex(idx)
   988                     self.TabsOpened.AddPage(new_window, "")
  1020                     self.TabsOpened.AddPage(new_window, "")
   989             if idx is None:
  1021             if idx is None:
   990                 idx = self.Controler.ChangePouTransitionEditing(*names)
  1022                 idx = self.Controler.ChangePouTransitionEditing(*names)
   991         elif elementtype == ITEM_ACTION and len(names) == 2:
  1023         elif elementtype == ITEM_ACTION and len(names) == 2:
   992             if not onlyopened:
  1024             if not onlyopened:
   993                 idx = self.Controler.OpenPouActionEditing(*names)
  1025                 idx = self.Controler.OpenPouActionEditing(*names)
   994                 if idx is not None:
  1026                 if idx is not None:
   995                     new_window = PouEditorPanel(self.TabsOpened, self, self.Controler, "action", pou_name = names[0], action_name = names[1])
  1027                     new_window = PouEditorPanel(self.TabsOpened, self, self.Controler, "action", pou_name = names[0], action_name = names[1])
       
  1028                     new_window.SetIndex(idx)
   996                     self.TabsOpened.AddPage(new_window, "")
  1029                     self.TabsOpened.AddPage(new_window, "")
   997             if idx is None:
  1030             if idx is None:
   998                 idx = self.Controler.ChangePouActionEditing(*names)
  1031                 idx = self.Controler.ChangePouActionEditing(*names)
   999         if idx != None:
  1032         if idx != None:
  1000             old_selected = self.TabsOpened.GetSelection()
  1033             old_selected = self.TabsOpened.GetSelection()
  1001             if old_selected >= 0:
  1034             if old_selected >= 0:
  1002                 self.TabsOpened.GetPage(old_selected).ResetBuffer()
  1035                 self.TabsOpened.GetPage(old_selected).ResetBuffer()
  1003             self.TabsOpened.SetSelection(idx)
  1036             for i in xrange(self.TabsOpened.GetPageCount()):
  1004             window = self.TabsOpened.GetPage(idx)
  1037                 window = self.TabsOpened.GetPage(i)
  1005             window.RefreshView()
  1038                 if window.GetIndex() == idx:
  1006             self.RefreshTabsOpenedTitles()
  1039                     self.TabsOpened.SetSelection(i)
  1007             self.RefreshFileMenu()
  1040                     window.RefreshView()
  1008             self.RefreshEditMenu()
  1041                     self.RefreshTabsOpenedTitles()
  1009             self.RefreshToolBar()
  1042                     self.RefreshFileMenu()
       
  1043                     self.RefreshEditMenu()
       
  1044                     self.RefreshToolBar()
       
  1045                     return
  1010     
  1046     
  1011     def OnProjectTreeRightUp(self, event):
  1047     def OnProjectTreeRightUp(self, event):
       
  1048         cursor_pos = event.GetPosition()
  1012         selected = self.ProjectTree.GetSelection()
  1049         selected = self.ProjectTree.GetSelection()
  1013         if self.ProjectTree.GetPyData(selected) == ITEM_POU:
  1050         if self.ProjectTree.GetPyData(selected) == ITEM_POU:
  1014             name = self.ProjectTree.GetItemText(selected)
  1051             name = self.ProjectTree.GetItemText(selected)
  1015             if self.Controler.GetPouBodyType(name) == "SFC":
  1052             if self.Controler.GetPouBodyType(name) == "SFC":
  1016                 self.PopupMenu(self.SFCMenu)
  1053                 self.PopupMenuXY(self.SFCMenu, cursor_pos.x, cursor_pos.y)
  1017         elif self.ProjectTree.GetPyData(selected) == ITEM_CONFIGURATION:
  1054         elif self.ProjectTree.GetPyData(selected) == ITEM_CONFIGURATION:
  1018             self.PopupMenu(self.ConfigMenu)
  1055             self.PopupMenu(self.ConfigMenu)
  1019         event.Skip()
  1056         event.Skip()
  1020 
  1057 
  1021     def RefreshProjectTree(self):
  1058     def RefreshProjectTree(self):
  1030         to_delete = []
  1067         to_delete = []
  1031         self.ProjectTree.SetItemText(root, infos["name"])
  1068         self.ProjectTree.SetItemText(root, infos["name"])
  1032         self.ProjectTree.SetPyData(root, infos["type"])
  1069         self.ProjectTree.SetPyData(root, infos["type"])
  1033         if infos["type"] == ITEM_POU and wx.Platform != '__WXMSW__':
  1070         if infos["type"] == ITEM_POU and wx.Platform != '__WXMSW__':
  1034             self.ProjectTree.SetItemImage(root, LANGUAGES.index(self.Controler.GetPouBodyType(infos["name"])))
  1071             self.ProjectTree.SetItemImage(root, LANGUAGES.index(self.Controler.GetPouBodyType(infos["name"])))
  1035         item, root_cookie = self.ProjectTree.GetFirstChild(root)
  1072         if wx.VERSION >= (2, 5, 0):
       
  1073             item, root_cookie = self.ProjectTree.GetFirstChild(root)
       
  1074         else:
       
  1075             item, root_cookie = self.ProjectTree.GetFirstChild(root, 0)
  1036         for values in infos["values"]:
  1076         for values in infos["values"]:
  1037             if not item.IsOk():
  1077             if not item.IsOk():
  1038                 item = self.ProjectTree.AppendItem(root, "")
  1078                 item = self.ProjectTree.AppendItem(root, "")
  1039                 if wx.Platform != '__WXMSW__':
  1079                 if wx.Platform != '__WXMSW__':
  1040                     item, root_cookie = self.ProjectTree.GetNextChild(root, root_cookie)
  1080                     item, root_cookie = self.ProjectTree.GetNextChild(root, root_cookie)
  1046         for item in to_delete:
  1086         for item in to_delete:
  1047             self.ProjectTree.Delete(item)
  1087             self.ProjectTree.Delete(item)
  1048     
  1088     
  1049     def ResetToolBar(self):
  1089     def ResetToolBar(self):
  1050         for item in self.CurrentToolBar:
  1090         for item in self.CurrentToolBar:
  1051             self.Unbind(wx.EVT_MENU, id=item)
  1091             if wx.VERSION >= (2, 6, 0):
       
  1092                 self.Unbind(wx.EVT_MENU, id=item)
       
  1093             else:
       
  1094                 self.Disconnect(id=item, eventType=wx.wxEVT_COMMAND_MENU_SELECTED) 
  1052             self.ToolBar.DeleteTool(item)
  1095             self.ToolBar.DeleteTool(item)
  1053 
  1096 
  1054     def RefreshToolBar(self):
  1097     def RefreshToolBar(self):
  1055         language = self.Controler.GetCurrentElementEditingBodyType()
  1098         language = self.Controler.GetCurrentElementEditingBodyType()
  1056         if language and language != self.CurrentLanguage:
  1099         if language and language != self.CurrentLanguage:
  1320  ID_PROJECTDIALOGSTATICTEXT5, ID_PROJECTDIALOGSTATICTEXT6, 
  1363  ID_PROJECTDIALOGSTATICTEXT5, ID_PROJECTDIALOGSTATICTEXT6, 
  1321  ID_PROJECTDIALOGSTATICTEXT7, 
  1364  ID_PROJECTDIALOGSTATICTEXT7, 
  1322 ] = [wx.NewId() for _init_ctrls in range(15)]
  1365 ] = [wx.NewId() for _init_ctrls in range(15)]
  1323         
  1366         
  1324 class ProjectDialog(wx.Dialog):
  1367 class ProjectDialog(wx.Dialog):
       
  1368     if wx.VERSION < (2, 6, 0):
       
  1369         def Bind(self, event, function, id = None):
       
  1370             if id is not None:
       
  1371                 event(self, id, function)
       
  1372             else:
       
  1373                 event(self, function)
       
  1374                 
  1325     def _init_coll_flexGridSizer1_Items(self, parent):
  1375     def _init_coll_flexGridSizer1_Items(self, parent):
  1326         parent.AddSizer(self.MainSizer, 0, border=20, flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
  1376         parent.AddSizer(self.MainSizer, 0, border=20, flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
  1327         parent.AddSizer(self.ButtonSizer, 0, border=20, flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT)
  1377         parent.AddSizer(self.ButtonSizer, 0, border=20, flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT)
  1328         
  1378         
  1329     def _init_coll_flexGridSizer1_Growables(self, parent):
  1379     def _init_coll_flexGridSizer1_Growables(self, parent):
  1496  ID_POUDIALOGPOUTYPE, ID_POUDIALOGLANGUAGE, ID_POUDIALOGSTATICTEXT1,
  1546  ID_POUDIALOGPOUTYPE, ID_POUDIALOGLANGUAGE, ID_POUDIALOGSTATICTEXT1,
  1497  ID_POUDIALOGSTATICTEXT2, ID_POUDIALOGSTATICTEXT3, 
  1547  ID_POUDIALOGSTATICTEXT2, ID_POUDIALOGSTATICTEXT3, 
  1498 ] = [wx.NewId() for _init_ctrls in range(7)]
  1548 ] = [wx.NewId() for _init_ctrls in range(7)]
  1499 
  1549 
  1500 class PouDialog(wx.Dialog):
  1550 class PouDialog(wx.Dialog):
       
  1551     if wx.VERSION < (2, 6, 0):
       
  1552         def Bind(self, event, function, id = None):
       
  1553             if id is not None:
       
  1554                 event(self, id, function)
       
  1555             else:
       
  1556                 event(self, function)
       
  1557     
  1501     def _init_coll_flexGridSizer1_Items(self, parent):
  1558     def _init_coll_flexGridSizer1_Items(self, parent):
  1502         parent.AddSizer(self.MainSizer, 0, border=20, flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
  1559         parent.AddSizer(self.MainSizer, 0, border=20, flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
  1503         parent.AddSizer(self.ButtonSizer, 0, border=20, flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT)
  1560         parent.AddSizer(self.ButtonSizer, 0, border=20, flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT)
  1504         
  1561         
  1505     def _init_coll_flexGridSizer1_Growables(self, parent):
  1562     def _init_coll_flexGridSizer1_Growables(self, parent):
  1661  ID_POUTRANSITIONDIALOGLANGUAGE, ID_POUTRANSITIONDIALOGSTATICTEXT1, 
  1718  ID_POUTRANSITIONDIALOGLANGUAGE, ID_POUTRANSITIONDIALOGSTATICTEXT1, 
  1662  ID_POUTRANSITIONDIALOGSTATICTEXT2,
  1719  ID_POUTRANSITIONDIALOGSTATICTEXT2,
  1663 ] = [wx.NewId() for _init_ctrls in range(5)]
  1720 ] = [wx.NewId() for _init_ctrls in range(5)]
  1664 
  1721 
  1665 class PouTransitionDialog(wx.Dialog):
  1722 class PouTransitionDialog(wx.Dialog):
       
  1723     if wx.VERSION < (2, 6, 0):
       
  1724         def Bind(self, event, function, id = None):
       
  1725             if id is not None:
       
  1726                 event(self, id, function)
       
  1727             else:
       
  1728                 event(self, function)
       
  1729     
  1666     def _init_coll_flexGridSizer1_Items(self, parent):
  1730     def _init_coll_flexGridSizer1_Items(self, parent):
  1667         parent.AddSizer(self.MainSizer, 0, border=20, flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
  1731         parent.AddSizer(self.MainSizer, 0, border=20, flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
  1668         parent.AddSizer(self.ButtonSizer, 0, border=20, flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT)
  1732         parent.AddSizer(self.ButtonSizer, 0, border=20, flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT)
  1669         
  1733         
  1670     def _init_coll_flexGridSizer1_Growables(self, parent):
  1734     def _init_coll_flexGridSizer1_Growables(self, parent):
  1793  ID_POUACTIONDIALOGLANGUAGE, ID_POUACTIONDIALOGSTATICTEXT1, 
  1857  ID_POUACTIONDIALOGLANGUAGE, ID_POUACTIONDIALOGSTATICTEXT1, 
  1794  ID_POUACTIONDIALOGSTATICTEXT2, 
  1858  ID_POUACTIONDIALOGSTATICTEXT2, 
  1795 ] = [wx.NewId() for _init_ctrls in range(5)]
  1859 ] = [wx.NewId() for _init_ctrls in range(5)]
  1796 
  1860 
  1797 class PouActionDialog(wx.Dialog):
  1861 class PouActionDialog(wx.Dialog):
       
  1862     if wx.VERSION < (2, 6, 0):
       
  1863         def Bind(self, event, function, id = None):
       
  1864             if id is not None:
       
  1865                 event(self, id, function)
       
  1866             else:
       
  1867                 event(self, function)
       
  1868     
  1798     def _init_coll_flexGridSizer1_Items(self, parent):
  1869     def _init_coll_flexGridSizer1_Items(self, parent):
  1799         parent.AddSizer(self.MainSizer, 0, border=20, flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
  1870         parent.AddSizer(self.MainSizer, 0, border=20, flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
  1800         parent.AddSizer(self.ButtonSizer, 0, border=20, flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT)
  1871         parent.AddSizer(self.ButtonSizer, 0, border=20, flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT)
  1801         
  1872         
  1802     def _init_coll_flexGridSizer1_Growables(self, parent):
  1873     def _init_coll_flexGridSizer1_Growables(self, parent):
  1921 #                          Configuration Name Dialog
  1992 #                          Configuration Name Dialog
  1922 #-------------------------------------------------------------------------------
  1993 #-------------------------------------------------------------------------------
  1923 
  1994 
  1924 class ConfigurationNameDialog(wx.TextEntryDialog):
  1995 class ConfigurationNameDialog(wx.TextEntryDialog):
  1925 
  1996 
       
  1997     if wx.VERSION < (2, 6, 0):
       
  1998         def Bind(self, event, function, id = None):
       
  1999             if id is not None:
       
  2000                 event(self, id, function)
       
  2001             else:
       
  2002                 event(self, function)
       
  2003 
  1926     def __init__(self, parent, message, caption = "Please enter configuration name", defaultValue = "", 
  2004     def __init__(self, parent, message, caption = "Please enter configuration name", defaultValue = "", 
  1927                        style = wx.OK|wx.CANCEL|wx.CENTRE, pos = wx.DefaultPosition):
  2005                        style = wx.OK|wx.CANCEL|wx.CENTRE, pos = wx.DefaultPosition):
  1928         wx.TextEntryDialog.__init__(self, parent, message, caption, defaultValue, style, pos)
  2006         wx.TextEntryDialog.__init__(self, parent, message, caption, defaultValue, style, pos)
  1929         
  2007         
  1930         self.PouNames = []
  2008         self.PouNames = []
  1971 #-------------------------------------------------------------------------------
  2049 #-------------------------------------------------------------------------------
  1972 #                          Resource Name Dialog
  2050 #                          Resource Name Dialog
  1973 #-------------------------------------------------------------------------------
  2051 #-------------------------------------------------------------------------------
  1974 
  2052 
  1975 class ResourceNameDialog(wx.TextEntryDialog):
  2053 class ResourceNameDialog(wx.TextEntryDialog):
       
  2054 
       
  2055     if wx.VERSION < (2, 6, 0):
       
  2056         def Bind(self, event, function, id = None):
       
  2057             if id is not None:
       
  2058                 event(self, id, function)
       
  2059             else:
       
  2060                 event(self, function)
  1976 
  2061 
  1977     def __init__(self, parent, message, caption = "Please enter resource name", defaultValue = "", 
  2062     def __init__(self, parent, message, caption = "Please enter resource name", defaultValue = "", 
  1978                        style = wx.OK|wx.CANCEL|wx.CENTRE, pos = wx.DefaultPosition):
  2063                        style = wx.OK|wx.CANCEL|wx.CENTRE, pos = wx.DefaultPosition):
  1979         wx.TextEntryDialog.__init__(self, parent, message, caption, defaultValue, style, pos)
  2064         wx.TextEntryDialog.__init__(self, parent, message, caption, defaultValue, style, pos)
  1980         
  2065         
  2250  ID_POUEDITORPANELDOWNBUTTON, ID_POUEDITORPANELSTATICTEXT1, 
  2335  ID_POUEDITORPANELDOWNBUTTON, ID_POUEDITORPANELSTATICTEXT1, 
  2251  ID_POUEDITORPANELSTATICTEXT2, ID_POUEDITORPANELSTATICTEXT3,
  2336  ID_POUEDITORPANELSTATICTEXT2, ID_POUEDITORPANELSTATICTEXT3,
  2252 ] = [wx.NewId() for _init_ctrls in range(12)]
  2337 ] = [wx.NewId() for _init_ctrls in range(12)]
  2253 
  2338 
  2254 class PouEditorPanel(wx.SplitterWindow):
  2339 class PouEditorPanel(wx.SplitterWindow):
       
  2340     
       
  2341     if wx.VERSION < (2, 6, 0):
       
  2342         def Bind(self, event, function, id = None):
       
  2343             if id is not None:
       
  2344                 event(self, id, function)
       
  2345             else:
       
  2346                 event(self, function)
       
  2347     
  2255     def _init_coll_VariablePanelSizer_Items(self, parent):
  2348     def _init_coll_VariablePanelSizer_Items(self, parent):
  2256         parent.AddWindow(self.VariablesGrid, 0, border=0, flag=wx.GROW)
  2349         parent.AddWindow(self.VariablesGrid, 0, border=0, flag=wx.GROW)
  2257         parent.AddSizer(self.ControlPanelSizer, 0, border=0, flag=wx.GROW)
  2350         parent.AddSizer(self.ControlPanelSizer, 0, border=0, flag=wx.GROW)
  2258     
  2351     
  2259     def _init_coll_VariablePanelSizer_Growables(self, parent):
  2352     def _init_coll_VariablePanelSizer_Growables(self, parent):
  2304         
  2397         
  2305         self.VariablePanel.SetSizer(self.VariablePanelSizer)
  2398         self.VariablePanel.SetSizer(self.VariablePanelSizer)
  2306 
  2399 
  2307     def _init_ctrls(self, prnt, element_type):
  2400     def _init_ctrls(self, prnt, element_type):
  2308         wx.SplitterWindow.__init__(self, id=ID_POUEDITORPANEL,
  2401         wx.SplitterWindow.__init__(self, id=ID_POUEDITORPANEL,
  2309               name='EditVariablePanel', parent=prnt, pos=wx.Point(0, 0),
  2402               name='EditVariablePanel', parent=prnt, point=wx.Point(0, 0),
  2310               size=wx.Size(0, 0), style=wx.SP_3D)
  2403               size=wx.Size(0, 0), style=wx.SP_3D)
  2311         self.SetNeedUpdating(True)
  2404         self.SetNeedUpdating(True)
  2312         self.SetMinimumPaneSize(1)
  2405         self.SetMinimumPaneSize(1)
  2313         
  2406         
  2314         if element_type == "config":
  2407         if element_type == "config":
  2363               'Sans'))
  2456               'Sans'))
  2364         self.VariablesGrid.SetLabelFont(wx.Font(10, 77, wx.NORMAL, wx.NORMAL,
  2457         self.VariablesGrid.SetLabelFont(wx.Font(10, 77, wx.NORMAL, wx.NORMAL,
  2365               False, 'Sans'))
  2458               False, 'Sans'))
  2366         self.VariablesGrid.SetSelectionBackground(wx.WHITE)
  2459         self.VariablesGrid.SetSelectionBackground(wx.WHITE)
  2367         self.VariablesGrid.SetSelectionForeground(wx.BLACK)
  2460         self.VariablesGrid.SetSelectionForeground(wx.BLACK)
  2368         self.VariablesGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.OnVariablesGridCellChange)
  2461         if wx.VERSION >= (2, 6, 0):
  2369         self.VariablesGrid.Bind(wx.grid.EVT_GRID_SELECT_CELL, self.OnVariablesGridSelectCell)
  2462             self.VariablesGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.OnVariablesGridCellChange)
  2370         self.VariablesGrid.Bind(wx.grid.EVT_GRID_CELL_LEFT_CLICK, self.OnVariablesGridCellLeftClick)
  2463             self.VariablesGrid.Bind(wx.grid.EVT_GRID_SELECT_CELL, self.OnVariablesGridSelectCell)
  2371         self.VariablesGrid.Bind(wx.grid.EVT_GRID_EDITOR_SHOWN, self.OnVariablesGridEditorShown)
  2464             self.VariablesGrid.Bind(wx.grid.EVT_GRID_CELL_LEFT_CLICK, self.OnVariablesGridCellLeftClick)
       
  2465             self.VariablesGrid.Bind(wx.grid.EVT_GRID_EDITOR_SHOWN, self.OnVariablesGridEditorShown)
       
  2466         else:
       
  2467             wx.grid.EVT_GRID_CELL_CHANGE(self.VariablesGrid, self.OnVariablesGridCellChange)
       
  2468             wx.grid.EVT_GRID_SELECT_CELL(self.VariablesGrid, self.OnVariablesGridSelectCell)
       
  2469             wx.grid.EVT_GRID_CELL_LEFT_CLICK(self.VariablesGrid, self.OnVariablesGridCellLeftClick)
       
  2470             wx.grid.EVT_GRID_EDITOR_SHOWN(self.VariablesGrid, self.OnVariablesGridEditorShown)
  2372         self.VariablesGrid.SetDropTarget(VariableDropTarget(self))
  2471         self.VariablesGrid.SetDropTarget(VariableDropTarget(self))
  2373         
  2472         
  2374         self.AddButton = wx.Button(id=ID_POUEDITORPANELADDBUTTON, label='Add',
  2473         self.AddButton = wx.Button(id=ID_POUEDITORPANELADDBUTTON, label='Add',
  2375               name='AddButton', parent=self.VariablePanel, pos=wx.Point(345, 340),
  2474               name='AddButton', parent=self.VariablePanel, pos=wx.Point(345, 340),
  2376               size=wx.Size(72, 32), style=0)
  2475               size=wx.Size(72, 32), style=0)
  2472         for col in range(self.Table.GetNumberCols()):
  2571         for col in range(self.Table.GetNumberCols()):
  2473             attr = wx.grid.GridCellAttr()
  2572             attr = wx.grid.GridCellAttr()
  2474             attr.SetAlignment(self.ColAlignements[col], wx.ALIGN_CENTRE)
  2573             attr.SetAlignment(self.ColAlignements[col], wx.ALIGN_CENTRE)
  2475             self.VariablesGrid.SetColAttr(col, attr)
  2574             self.VariablesGrid.SetColAttr(col, attr)
  2476             self.VariablesGrid.SetColSize(col, self.ColSizes[col])
  2575             self.VariablesGrid.SetColSize(col, self.ColSizes[col])
       
  2576     
       
  2577     def SetIndex(self, index):
       
  2578         self.ControlerIndex = index
       
  2579         
       
  2580     def GetIndex(self):
       
  2581         return self.ControlerIndex
  2477     
  2582     
  2478     def RefreshName(self, name_type, old_name, new_name):
  2583     def RefreshName(self, name_type, old_name, new_name):
  2479         if name_type == ITEM_POU and self.PouName == old_name:
  2584         if name_type == ITEM_POU and self.PouName == old_name:
  2480             self.PouName = new_name
  2585             self.PouName = new_name
  2481         elif name_type == ITEM_TRANSITION and self.TransitionName == old_name:
  2586         elif name_type == ITEM_TRANSITION and self.TransitionName == old_name:
  2666         if self.Table.GetColLabelValue(col) == "Type":
  2771         if self.Table.GetColLabelValue(col) == "Type":
  2667             type_menu = wx.Menu(title='')
  2772             type_menu = wx.Menu(title='')
  2668             base_menu = wx.Menu(title='')
  2773             base_menu = wx.Menu(title='')
  2669             for base_type in self.TypeList:
  2774             for base_type in self.TypeList:
  2670                 new_id = wx.NewId()
  2775                 new_id = wx.NewId()
  2671                 base_menu.Append(help='', id=new_id, kind=wx.ITEM_NORMAL, text=base_type)
  2776                 AppendMenu(base_menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=base_type)
  2672                 self.Bind(wx.EVT_MENU, self.GetVariableTypeFunction(base_type), id=new_id)
  2777                 self.Bind(wx.EVT_MENU, self.GetVariableTypeFunction(base_type), id=new_id)
  2673             type_menu.AppendMenu(-1, "Base Types", base_menu, '')
  2778             type_menu.AppendMenu(wx.NewId(), "Base Types", base_menu)
  2674             functionblock_menu = wx.Menu(title='')
  2779             functionblock_menu = wx.Menu(title='')
  2675             for functionblock_type in self.Controler.GetFunctionBlockTypes():
  2780             for functionblock_type in self.Controler.GetFunctionBlockTypes():
  2676                 new_id = wx.NewId()
  2781                 new_id = wx.NewId()
  2677                 functionblock_menu.Append(help='', id=new_id, kind=wx.ITEM_NORMAL, text=functionblock_type)
  2782                 AppendMenu(functionblock_menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=functionblock_type)
  2678                 self.Bind(wx.EVT_MENU, self.GetVariableTypeFunction(functionblock_type), id=new_id)
  2783                 self.Bind(wx.EVT_MENU, self.GetVariableTypeFunction(functionblock_type), id=new_id)
  2679             type_menu.AppendMenu(-1, "Function Block Types", functionblock_menu, '')
  2784             type_menu.AppendMenu(wx.NewId(), "Function Block Types", functionblock_menu)
  2680             rect = self.VariablesGrid.BlockToDeviceRect((row, col), (row, col))
  2785             rect = self.VariablesGrid.BlockToDeviceRect((row, col), (row, col))
  2681             self.VariablesGrid.PopupMenuXY(type_menu, rect.x + rect.width, rect.y + self.VariablesGrid.GetColLabelSize())
  2786             self.VariablesGrid.PopupMenuXY(type_menu, rect.x + rect.width, rect.y + self.VariablesGrid.GetColLabelSize())
  2682             event.Veto()
  2787             event.Veto()
  2683         else:
  2788         else:
  2684             event.Skip()
  2789             event.Skip()