PLCOpenEditor.py
changeset 666 d4bb66691248
parent 660 30c0371ac086
child 673 b686f0081e2b
equal deleted inserted replaced
665:6a376615142e 666:d4bb66691248
   382         self.Bind(wx.EVT_MENU, self.OnAddConfigurationMenu,
   382         self.Bind(wx.EVT_MENU, self.OnAddConfigurationMenu,
   383               id=ID_PLCOPENEDITOREDITMENUADDCONFIGURATION)
   383               id=ID_PLCOPENEDITOREDITMENUADDCONFIGURATION)
   384         self.Bind(wx.EVT_MENU, self.OnSelectAllMenu, id=wx.ID_SELECTALL)
   384         self.Bind(wx.EVT_MENU, self.OnSelectAllMenu, id=wx.ID_SELECTALL)
   385         self.Bind(wx.EVT_MENU, self.OnDeleteMenu, id=wx.ID_DELETE)
   385         self.Bind(wx.EVT_MENU, self.OnDeleteMenu, id=wx.ID_DELETE)
   386         
   386         
   387         self.AddToMenuToolBar([(wx.ID_UNDO, wx.ART_UNDO, _(u'Undo'), None),
   387         self.AddToMenuToolBar([(wx.ID_UNDO, "undo.png", _(u'Undo'), None),
   388                                (wx.ID_REDO, wx.ART_REDO, _(u'Redo'), None),
   388                                (wx.ID_REDO, "redo.png", _(u'Redo'), None),
   389                                None,
   389                                None,
   390                                (wx.ID_CUT, wx.ART_CUT, _(u'Cut'), None),
   390                                (wx.ID_CUT, "cut.png", _(u'Cut'), None),
   391                                (wx.ID_COPY, wx.ART_COPY, _(u'Copy'), None),
   391                                (wx.ID_COPY, "copy.png", _(u'Copy'), None),
   392                                (wx.ID_PASTE, wx.ART_PASTE, _(u'Paste'), None)])
   392                                (wx.ID_PASTE, "paste.png", _(u'Paste'), None),
       
   393                                None,
       
   394                                (ID_PLCOPENEDITOREDITMENUSEARCHINPROJECT, "find.png", _(u'Search in Project'), None)])
   393 
   395 
   394     def _init_coll_DisplayMenu_Items(self, parent):
   396     def _init_coll_DisplayMenu_Items(self, parent):
   395         AppendMenu(parent, help='', id=wx.ID_REFRESH,
   397         AppendMenu(parent, help='', id=wx.ID_REFRESH,
   396               kind=wx.ITEM_NORMAL, text=_(u'Refresh\tCTRL+R'))
   398               kind=wx.ITEM_NORMAL, text=_(u'Refresh\tCTRL+R'))
   397         if self.EnableDebug:
   399         if self.EnableDebug:
   439         
   441         
   440         self._init_coll_MainLibrarySizer_Growables(self.MainLibrarySizer)
   442         self._init_coll_MainLibrarySizer_Growables(self.MainLibrarySizer)
   441         self._init_coll_MainLibrarySizer_Items(self.MainLibrarySizer)
   443         self._init_coll_MainLibrarySizer_Items(self.MainLibrarySizer)
   442         
   444         
   443         self.LibraryPanel.SetSizer(self.MainLibrarySizer)
   445         self.LibraryPanel.SetSizer(self.MainLibrarySizer)
   444         
   446     
   445     def _init_ctrls(self, prnt):
   447     def _init_ctrls(self, prnt):
   446         wx.Frame.__init__(self, id=ID_PLCOPENEDITOR, name='IDEFrame',
   448         wx.Frame.__init__(self, id=ID_PLCOPENEDITOR, name='IDEFrame',
   447               parent=prnt, pos=wx.DefaultPosition, size=wx.Size(1000, 600),
   449               parent=prnt, pos=wx.DefaultPosition, size=wx.Size(1000, 600),
   448               style=wx.DEFAULT_FRAME_STYLE)
   450               style=wx.DEFAULT_FRAME_STYLE)
   449         self.SetClientSize(wx.Size(1000, 600))
   451         self.SetClientSize(wx.Size(1000, 600))
       
   452         self.Bind(wx.EVT_ACTIVATE, self.OnActivated)
   450         
   453         
   451         self.TabsImageList = wx.ImageList(31, 16)
   454         self.TabsImageList = wx.ImageList(31, 16)
   452         self.TabsImageListIndexes = {}
   455         self.TabsImageListIndexes = {}
   453         
   456         
   454         #-----------------------------------------------------------------------
   457         #-----------------------------------------------------------------------
   603         #-----------------------------------------------------------------------
   606         #-----------------------------------------------------------------------
   604         #                            Creating Tool Bar
   607         #                            Creating Tool Bar
   605         #-----------------------------------------------------------------------
   608         #-----------------------------------------------------------------------
   606 
   609 
   607         if USE_AUI:
   610         if USE_AUI:
       
   611             MenuToolBar = wx.ToolBar(self, ID_PLCOPENEDITOREDITORMENUTOOLBAR, wx.DefaultPosition, wx.DefaultSize,
       
   612                     wx.TB_FLAT | wx.TB_NODIVIDER | wx.NO_BORDER)
       
   613             MenuToolBar.SetToolBitmapSize(wx.Size(25, 25))
       
   614             MenuToolBar.Realize()
       
   615             self.Panes["MenuToolBar"] = MenuToolBar
       
   616             self.AUIManager.AddPane(MenuToolBar, wx.aui.AuiPaneInfo().
       
   617                       Name("MenuToolBar").Caption(_("Menu ToolBar")).
       
   618                       ToolbarPane().Top().
       
   619                       LeftDockable(False).RightDockable(False))
       
   620             
   608             EditorToolBar = wx.ToolBar(self, ID_PLCOPENEDITOREDITORTOOLBAR, wx.DefaultPosition, wx.DefaultSize,
   621             EditorToolBar = wx.ToolBar(self, ID_PLCOPENEDITOREDITORTOOLBAR, wx.DefaultPosition, wx.DefaultSize,
   609                     wx.TB_FLAT | wx.TB_NODIVIDER | wx.NO_BORDER)
   622                     wx.TB_FLAT | wx.TB_NODIVIDER | wx.NO_BORDER)
   610             EditorToolBar.SetToolBitmapSize(wx.Size(25, 25))
   623             EditorToolBar.SetToolBitmapSize(wx.Size(25, 25))
   611             EditorToolBar.AddRadioTool(ID_PLCOPENEDITOREDITORTOOLBARSELECTION, 
   624             EditorToolBar.AddRadioTool(ID_PLCOPENEDITOREDITORTOOLBARSELECTION, 
   612                   wx.Bitmap(os.path.join(CWD, 'Images', 'select.png')), wx.NullBitmap, _("Select an object"))
   625                   wx.Bitmap(os.path.join(CWD, 'Images', 'select.png')), wx.NullBitmap, _("Select an object"))
   613             EditorToolBar.Realize()
   626             EditorToolBar.Realize()
   614             self.Panes["EditorToolBar"] = EditorToolBar
   627             self.Panes["EditorToolBar"] = EditorToolBar
   615             self.AUIManager.AddPane(EditorToolBar, wx.aui.AuiPaneInfo().
   628             self.AUIManager.AddPane(EditorToolBar, wx.aui.AuiPaneInfo().
   616                       Name("EditorToolBar").Caption(_("Editor ToolBar")).
   629                       Name("EditorToolBar").Caption(_("Editor ToolBar")).
   617                       ToolbarPane().Top().
   630                       ToolbarPane().Top().Position(1).
   618                       LeftDockable(False).RightDockable(False))
       
   619         
       
   620             MenuToolBar = wx.ToolBar(self, ID_PLCOPENEDITOREDITORMENUTOOLBAR, wx.DefaultPosition, wx.DefaultSize,
       
   621                     wx.TB_FLAT | wx.TB_NODIVIDER | wx.NO_BORDER)
       
   622             MenuToolBar.SetToolBitmapSize(wx.Size(25, 25))
       
   623             MenuToolBar.Realize()
       
   624             self.Panes["MenuToolBar"] = MenuToolBar
       
   625             self.AUIManager.AddPane(MenuToolBar, wx.aui.AuiPaneInfo().
       
   626                       Name("MenuToolBar").Caption(_("Menu ToolBar")).
       
   627                       ToolbarPane().Top().
       
   628                       LeftDockable(False).RightDockable(False))
   631                       LeftDockable(False).RightDockable(False))
   629             
   632             
   630         else:
   633         else:
   631             self.EditorToolBar = self.CreateToolBar(wx.TB_HORIZONTAL|wx.TB_FLAT|wx.NO_BORDER, 
   634             self.EditorToolBar = self.CreateToolBar(wx.TB_HORIZONTAL|wx.TB_FLAT|wx.NO_BORDER, 
   632                   ID_PLCOPENEDITOREDITORTOOLBAR, 'EditorToolBar')
   635                   ID_PLCOPENEDITOREDITORTOOLBAR, 'EditorToolBar')
   747     
   750     
   748     def Show(self):
   751     def Show(self):
   749         wx.Frame.Show(self)
   752         wx.Frame.Show(self)
   750         wx.CallAfter(self.RestoreFrameSize)
   753         wx.CallAfter(self.RestoreFrameSize)
   751     
   754     
       
   755     def OnActivated(self, event):
       
   756         if event.GetActive():
       
   757             wx.CallAfter(self._Refresh, TITLE, EDITORTOOLBAR, FILEMENU, EDITMENU, DISPLAYMENU)
       
   758         event.Skip()
       
   759     
   752     def RestoreFrameSize(self):
   760     def RestoreFrameSize(self):
   753         frame_size = None
   761         frame_size = None
   754         if self.Config.HasEntry("framesize"):
   762         if self.Config.HasEntry("framesize"):
   755             frame_size = cPickle.loads(str(self.Config.Read("framesize")))
   763             frame_size = cPickle.loads(str(self.Config.Read("framesize")))
   756         
   764         
  1044             MenuToolBar.EnableTool(wx.ID_REDO, redo)
  1052             MenuToolBar.EnableTool(wx.ID_REDO, redo)
  1045             #self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUENABLEUNDOREDO, True)
  1053             #self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUENABLEUNDOREDO, True)
  1046             #self.EditMenu.Check(ID_PLCOPENEDITOREDITMENUENABLEUNDOREDO, 
  1054             #self.EditMenu.Check(ID_PLCOPENEDITOREDITMENUENABLEUNDOREDO, 
  1047             #                self.Controler.IsProjectBufferEnabled())
  1055             #                self.Controler.IsProjectBufferEnabled())
  1048             self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUSEARCHINPROJECT, True)
  1056             self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUSEARCHINPROJECT, True)
       
  1057             MenuToolBar.EnableTool(ID_PLCOPENEDITOREDITMENUSEARCHINPROJECT, True)
  1049             self.EditMenu.Enable(wx.ID_ADD, True)
  1058             self.EditMenu.Enable(wx.ID_ADD, True)
  1050             self.EditMenu.Enable(wx.ID_DELETE, True)
  1059             self.EditMenu.Enable(wx.ID_DELETE, True)
  1051             if self.TabsOpened.GetPageCount() > 0:
  1060             if self.TabsOpened.GetPageCount() > 0:
  1052                 self.EditMenu.Enable(wx.ID_CUT, True)
  1061                 self.EditMenu.Enable(wx.ID_CUT, True)
  1053                 MenuToolBar.EnableTool(wx.ID_CUT, True)
  1062                 MenuToolBar.EnableTool(wx.ID_CUT, True)
  1080             MenuToolBar.EnableTool(wx.ID_COPY, False)
  1089             MenuToolBar.EnableTool(wx.ID_COPY, False)
  1081             self.EditMenu.Enable(wx.ID_PASTE, False)
  1090             self.EditMenu.Enable(wx.ID_PASTE, False)
  1082             MenuToolBar.EnableTool(wx.ID_PASTE, False)
  1091             MenuToolBar.EnableTool(wx.ID_PASTE, False)
  1083             self.EditMenu.Enable(wx.ID_SELECTALL, False)
  1092             self.EditMenu.Enable(wx.ID_SELECTALL, False)
  1084             self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUSEARCHINPROJECT, False)
  1093             self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUSEARCHINPROJECT, False)
       
  1094             MenuToolBar.EnableTool(ID_PLCOPENEDITOREDITMENUSEARCHINPROJECT, False)
  1085             self.EditMenu.Enable(wx.ID_ADD, False)
  1095             self.EditMenu.Enable(wx.ID_ADD, False)
  1086             self.EditMenu.Enable(wx.ID_DELETE, False)
  1096             self.EditMenu.Enable(wx.ID_DELETE, False)
  1087     
  1097     
  1088     def CloseTabsWithoutModel(self, refresh=True):
  1098     def CloseTabsWithoutModel(self, refresh=True):
  1089         idxs = range(self.TabsOpened.GetPageCount())
  1099         idxs = range(self.TabsOpened.GetPageCount())
  1664             item, flags = self.TypesTree.HitTest(wx.Point(event.GetX(), event.GetY()))
  1674             item, flags = self.TypesTree.HitTest(wx.Point(event.GetX(), event.GetY()))
  1665         self.TypesTree.SelectItem(item)
  1675         self.TypesTree.SelectItem(item)
  1666         self.TypesTreeItemSelect(item)
  1676         self.TypesTreeItemSelect(item)
  1667         name = self.TypesTree.GetItemText(item)
  1677         name = self.TypesTree.GetItemText(item)
  1668         type = self.TypesTree.GetPyData(item)
  1678         type = self.TypesTree.GetPyData(item)
  1669         if type == ITEM_POU:
  1679         
  1670             menu = wx.Menu(title='')
  1680         menu = None
  1671             if self.Controler.GetPouBodyType(name) == "SFC":
  1681         if type in ITEMS_UNEDITABLE:
  1672                 new_id = wx.NewId()
       
  1673                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Transition"))
       
  1674                 self.Bind(wx.EVT_MENU, self.GenerateAddTransitionFunction(name), id=new_id)
       
  1675                 new_id = wx.NewId()
       
  1676                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Action"))
       
  1677                 self.Bind(wx.EVT_MENU, self.GenerateAddActionFunction(name), id=new_id)
       
  1678                 menu.AppendSeparator()
       
  1679 
       
  1680             new_id = wx.NewId()
       
  1681             AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Copy POU"))
       
  1682             self.Bind(wx.EVT_MENU, self.OnCopyPou, id=new_id)
       
  1683 
       
  1684             pou_type = self.Controler.GetPouType(name)
       
  1685             if pou_type in ["function", "functionBlock"]:
       
  1686                 change_menu = wx.Menu(title='')
       
  1687                 if pou_type == "function":
       
  1688                     new_id = wx.NewId()
       
  1689                     AppendMenu(change_menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Function Block"))
       
  1690                     self.Bind(wx.EVT_MENU, self.GenerateChangePouTypeFunction(name, "functionBlock"), id=new_id)
       
  1691                 new_id = wx.NewId()
       
  1692                 AppendMenu(change_menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Program"))
       
  1693                 self.Bind(wx.EVT_MENU, self.GenerateChangePouTypeFunction(name, "program"), id=new_id)
       
  1694                 menu.AppendMenu(wx.NewId(), _("Change POU Type To"), change_menu)
       
  1695             new_id = wx.NewId()
       
  1696             AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Rename"))
       
  1697             self.Bind(wx.EVT_MENU, self.OnRenamePouMenu, id=new_id)
       
  1698             new_id = wx.NewId()
       
  1699             AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Delete"))
       
  1700             self.Bind(wx.EVT_MENU, self.OnDeleteMenu, id=new_id)
       
  1701             self.PopupMenu(menu)
       
  1702         elif type == ITEM_CONFIGURATION:
       
  1703             menu = wx.Menu(title='')
       
  1704             new_id = wx.NewId()
       
  1705             AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Resource"))
       
  1706             self.Bind(wx.EVT_MENU, self.GenerateAddResourceFunction(name), id=new_id)
       
  1707             new_id = wx.NewId()
       
  1708             AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Delete"))
       
  1709             self.Bind(wx.EVT_MENU, self.OnDeleteMenu, id=new_id)
       
  1710             self.PopupMenu(menu)
       
  1711         elif type in [ITEM_DATATYPE, ITEM_TRANSITION, ITEM_ACTION, ITEM_RESOURCE]:
       
  1712             menu = wx.Menu(title='')
       
  1713             new_id = wx.NewId()
       
  1714             AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Delete"))
       
  1715             self.Bind(wx.EVT_MENU, self.OnDeleteMenu, id=new_id)
       
  1716             self.PopupMenu(menu)
       
  1717         elif type in ITEMS_UNEDITABLE:
       
  1718             name = UNEDITABLE_NAMES_DICT[name]
  1682             name = UNEDITABLE_NAMES_DICT[name]
       
  1683             
  1719             if name == "Data Types":
  1684             if name == "Data Types":
  1720                 menu = wx.Menu(title='')
  1685                 menu = wx.Menu(title='')
  1721                 new_id = wx.NewId()
  1686                 new_id = wx.NewId()
  1722                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add DataType"))
  1687                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add DataType"))
  1723                 self.Bind(wx.EVT_MENU, self.OnAddDataTypeMenu, id=new_id)
  1688                 self.Bind(wx.EVT_MENU, self.OnAddDataTypeMenu, id=new_id)
  1724                 self.PopupMenu(menu)
  1689             
  1725             elif name in ["Functions", "Function Blocks", "Programs"]:
  1690             elif name in ["Functions", "Function Blocks", "Programs"]:
  1726                 menu = wx.Menu(title='')
  1691                 menu = wx.Menu(title='')
  1727 
  1692 
  1728                 new_id = wx.NewId()
  1693                 new_id = wx.NewId()
  1729                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add POU"))
  1694                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add POU"))
  1733                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Paste POU"))
  1698                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Paste POU"))
  1734                 self.Bind(wx.EVT_MENU, self.OnPastePou, id=new_id)
  1699                 self.Bind(wx.EVT_MENU, self.OnPastePou, id=new_id)
  1735                 if self.GetCopyBuffer() is None:
  1700                 if self.GetCopyBuffer() is None:
  1736                     menu.Enable(new_id, False)
  1701                     menu.Enable(new_id, False)
  1737 
  1702 
  1738                 self.PopupMenu(menu)
       
  1739             elif name == "Configurations":
  1703             elif name == "Configurations":
  1740                 menu = wx.Menu(title='')
  1704                 menu = wx.Menu(title='')
  1741                 new_id = wx.NewId()
  1705                 new_id = wx.NewId()
  1742                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Configuration"))
  1706                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Configuration"))
  1743                 self.Bind(wx.EVT_MENU, self.OnAddConfigurationMenu, id=new_id)
  1707                 self.Bind(wx.EVT_MENU, self.OnAddConfigurationMenu, id=new_id)
  1744                 self.PopupMenu(menu)
  1708             
  1745             elif name == "Transitions":
  1709             elif name == "Transitions":
  1746                 menu = wx.Menu(title='')
  1710                 menu = wx.Menu(title='')
  1747                 new_id = wx.NewId()
  1711                 new_id = wx.NewId()
  1748                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Transition"))
  1712                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Transition"))
  1749                 parent = self.TypesTree.GetItemParent(item)
  1713                 parent = self.TypesTree.GetItemParent(item)
  1750                 parent_type = self.TypesTree.GetPyData(parent)
  1714                 parent_type = self.TypesTree.GetPyData(parent)
  1751                 while parent_type != ITEM_POU:
  1715                 while parent_type != ITEM_POU:
  1752                     parent = self.TypesTree.GetItemParent(parent)
  1716                     parent = self.TypesTree.GetItemParent(parent)
  1753                     parent_type = self.TypesTree.GetPyData(parent)
  1717                     parent_type = self.TypesTree.GetPyData(parent)
  1754                 self.Bind(wx.EVT_MENU, self.GenerateAddTransitionFunction(self.TypesTree.GetItemText(parent)), id=new_id)
  1718                 self.Bind(wx.EVT_MENU, self.GenerateAddTransitionFunction(self.TypesTree.GetItemText(parent)), id=new_id)
  1755                 self.PopupMenu(menu)
  1719             
  1756             elif name == "Actions":
  1720             elif name == "Actions":
  1757                 menu = wx.Menu(title='')
  1721                 menu = wx.Menu(title='')
  1758                 new_id = wx.NewId()
  1722                 new_id = wx.NewId()
  1759                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Action"))
  1723                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Action"))
  1760                 parent = self.TypesTree.GetItemParent(item)
  1724                 parent = self.TypesTree.GetItemParent(item)
  1761                 parent_type = self.TypesTree.GetPyData(parent)
  1725                 parent_type = self.TypesTree.GetPyData(parent)
  1762                 while parent_type != ITEM_POU:
  1726                 while parent_type != ITEM_POU:
  1763                     parent = self.TypesTree.GetItemParent(parent)
  1727                     parent = self.TypesTree.GetItemParent(parent)
  1764                     parent_type = self.TypesTree.GetPyData(parent)
  1728                     parent_type = self.TypesTree.GetPyData(parent)
  1765                 self.Bind(wx.EVT_MENU, self.GenerateAddActionFunction(self.TypesTree.GetItemText(parent)), id=new_id)
  1729                 self.Bind(wx.EVT_MENU, self.GenerateAddActionFunction(self.TypesTree.GetItemText(parent)), id=new_id)
  1766                 self.PopupMenu(menu)
  1730             
  1767             elif name == "Resources":
  1731             elif name == "Resources":
  1768                 menu = wx.Menu(title='')
  1732                 menu = wx.Menu(title='')
  1769                 new_id = wx.NewId()
  1733                 new_id = wx.NewId()
  1770                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Resource"))
  1734                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Resource"))
  1771                 parent = self.TypesTree.GetItemParent(item)
  1735                 parent = self.TypesTree.GetItemParent(item)
  1772                 parent_type = self.TypesTree.GetPyData(parent)
  1736                 parent_type = self.TypesTree.GetPyData(parent)
  1773                 while parent_type != ITEM_CONFIGURATION:
  1737                 while parent_type != ITEM_CONFIGURATION:
  1774                     parent = self.TypesTree.GetItemParent(parent)
  1738                     parent = self.TypesTree.GetItemParent(parent)
  1775                     parent_type = self.TypesTree.GetPyData(parent)
  1739                     parent_type = self.TypesTree.GetPyData(parent)
  1776                 self.Bind(wx.EVT_MENU, self.GenerateAddResourceFunction(self.TypesTree.GetItemText(parent)), id=new_id)
  1740                 self.Bind(wx.EVT_MENU, self.GenerateAddResourceFunction(self.TypesTree.GetItemText(parent)), id=new_id)
  1777                 self.PopupMenu(menu)
  1741             
       
  1742         else:
       
  1743             if type == ITEM_POU:
       
  1744                 menu = wx.Menu(title='')
       
  1745                 if self.Controler.GetPouBodyType(name) == "SFC":
       
  1746                     new_id = wx.NewId()
       
  1747                     AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Transition"))
       
  1748                     self.Bind(wx.EVT_MENU, self.GenerateAddTransitionFunction(name), id=new_id)
       
  1749                     new_id = wx.NewId()
       
  1750                     AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Action"))
       
  1751                     self.Bind(wx.EVT_MENU, self.GenerateAddActionFunction(name), id=new_id)
       
  1752                     menu.AppendSeparator()
       
  1753     
       
  1754                 new_id = wx.NewId()
       
  1755                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Copy POU"))
       
  1756                 self.Bind(wx.EVT_MENU, self.OnCopyPou, id=new_id)
       
  1757     
       
  1758                 pou_type = self.Controler.GetPouType(name)
       
  1759                 if pou_type in ["function", "functionBlock"]:
       
  1760                     change_menu = wx.Menu(title='')
       
  1761                     if pou_type == "function":
       
  1762                         new_id = wx.NewId()
       
  1763                         AppendMenu(change_menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Function Block"))
       
  1764                         self.Bind(wx.EVT_MENU, self.GenerateChangePouTypeFunction(name, "functionBlock"), id=new_id)
       
  1765                     new_id = wx.NewId()
       
  1766                     AppendMenu(change_menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Program"))
       
  1767                     self.Bind(wx.EVT_MENU, self.GenerateChangePouTypeFunction(name, "program"), id=new_id)
       
  1768                     menu.AppendMenu(wx.NewId(), _("Change POU Type To"), change_menu)
       
  1769                 new_id = wx.NewId()
       
  1770                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Rename"))
       
  1771                 self.Bind(wx.EVT_MENU, self.OnRenamePouMenu, id=new_id)
       
  1772             
       
  1773             elif type == ITEM_CONFIGURATION:
       
  1774                 menu = wx.Menu(title='')
       
  1775                 new_id = wx.NewId()
       
  1776                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Resource"))
       
  1777                 self.Bind(wx.EVT_MENU, self.GenerateAddResourceFunction(name), id=new_id)
       
  1778             
       
  1779             elif type in [ITEM_DATATYPE, ITEM_TRANSITION, ITEM_ACTION, ITEM_RESOURCE]:
       
  1780                 menu = wx.Menu(title='')
       
  1781                 
       
  1782             if menu is not None:
       
  1783                 new_id = wx.NewId()
       
  1784                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Delete"))
       
  1785                 self.Bind(wx.EVT_MENU, self.OnDeleteMenu, id=new_id)
       
  1786         
       
  1787         if menu is not None:
       
  1788             self.PopupMenu(menu)
       
  1789             menu.Destroy()
       
  1790         
  1778         event.Skip()
  1791         event.Skip()
  1779 
  1792 
  1780 
  1793 
  1781 #-------------------------------------------------------------------------------
  1794 #-------------------------------------------------------------------------------
  1782 #                         Instances Tree Management Functions
  1795 #                         Instances Tree Management Functions
  2092         for toolbar_item in items:
  2105         for toolbar_item in items:
  2093             if toolbar_item is None:
  2106             if toolbar_item is None:
  2094                 MenuToolBar.AddSeparator()
  2107                 MenuToolBar.AddSeparator()
  2095             else:
  2108             else:
  2096                 id, bitmap, help, callback = toolbar_item
  2109                 id, bitmap, help, callback = toolbar_item
  2097                 if not isinstance(bitmap, wx.Bitmap):
  2110                 MenuToolBar.AddSimpleTool(id=id, shortHelpString=help, bitmap=wx.Bitmap(os.path.join(CWD, 'Images', bitmap)))
  2098                     bitmap = wx.ArtProvider.GetBitmap(bitmap, wx.ART_TOOLBAR, (24, 24))
       
  2099                 MenuToolBar.AddSimpleTool(id=id, shortHelpString=help, bitmap=bitmap)
       
  2100                 if callback is not None:
  2111                 if callback is not None:
  2101                     self.Bind(wx.EVT_TOOL, callback, id=id)
  2112                     self.Bind(wx.EVT_TOOL, callback, id=id)
  2102         MenuToolBar.Realize()
  2113         MenuToolBar.Realize()
  2103         if USE_AUI:
  2114         if USE_AUI:
  2104             self.AUIManager.GetPane("MenuToolBar").BestSize(MenuToolBar.GetBestSize())
  2115             self.AUIManager.GetPane("MenuToolBar").BestSize(MenuToolBar.GetBestSize())
  2626         self.Bind(wx.EVT_MENU, self.OnPreviewMenu, id=wx.ID_PREVIEW)
  2637         self.Bind(wx.EVT_MENU, self.OnPreviewMenu, id=wx.ID_PREVIEW)
  2627         self.Bind(wx.EVT_MENU, self.OnPrintMenu, id=wx.ID_PRINT)
  2638         self.Bind(wx.EVT_MENU, self.OnPrintMenu, id=wx.ID_PRINT)
  2628         self.Bind(wx.EVT_MENU, self.OnPropertiesMenu, id=wx.ID_PROPERTIES)
  2639         self.Bind(wx.EVT_MENU, self.OnPropertiesMenu, id=wx.ID_PROPERTIES)
  2629         self.Bind(wx.EVT_MENU, self.OnQuitMenu, id=wx.ID_EXIT)
  2640         self.Bind(wx.EVT_MENU, self.OnQuitMenu, id=wx.ID_EXIT)
  2630         
  2641         
  2631         self.AddToMenuToolBar([(wx.ID_NEW, wx.ART_NEW, _(u'New'), None),
  2642         self.AddToMenuToolBar([(wx.ID_NEW, "new.png", _(u'New'), None),
  2632                                (wx.ID_OPEN, wx.ART_FILE_OPEN, _(u'Open'), None),
  2643                                (wx.ID_OPEN, "open.png", _(u'Open'), None),
  2633                                (wx.ID_SAVE, wx.ART_FILE_SAVE, _(u'Save'), None),
  2644                                (wx.ID_SAVE, "save.png", _(u'Save'), None),
  2634                                (wx.ID_SAVEAS, wx.ART_FILE_SAVE_AS, _(u'Save As...'), None),
  2645                                (wx.ID_SAVEAS, "saveas.png", _(u'Save As...'), None),
  2635                                (wx.ID_PRINT, wx.ART_PRINT, _(u'Print'), None)])
  2646                                (wx.ID_PRINT, "print.png", _(u'Print'), None)])
  2636             
  2647             
  2637     def _init_coll_HelpMenu_Items(self, parent):
  2648     def _init_coll_HelpMenu_Items(self, parent):
  2638         AppendMenu(parent, help='', id=wx.ID_HELP, 
  2649         AppendMenu(parent, help='', id=wx.ID_HELP, 
  2639             kind=wx.ITEM_NORMAL, text=_(u'PLCOpenEditor\tF1'))
  2650             kind=wx.ITEM_NORMAL, text=_(u'PLCOpenEditor\tF1'))
  2640         #AppendMenu(parent, help='', id=wx.ID_HELP_CONTENTS,
  2651         #AppendMenu(parent, help='', id=wx.ID_HELP_CONTENTS,
  4247             if self.Table.IsForced(row):
  4258             if self.Table.IsForced(row):
  4248                 menu.Enable(new_id, True)
  4259                 menu.Enable(new_id, True)
  4249             else:
  4260             else:
  4250                 menu.Enable(new_id, False)
  4261                 menu.Enable(new_id, False)
  4251             self.PopupMenu(menu)
  4262             self.PopupMenu(menu)
       
  4263             menu.Destroy()
  4252         event.Skip()
  4264         event.Skip()
  4253     
  4265     
  4254     def InsertValue(self, iec_path, idx = None):
  4266     def InsertValue(self, iec_path, idx = None):
  4255         if idx is None:
  4267         if idx is None:
  4256             idx = self.Table.GetNumberRows()
  4268             idx = self.Table.GetNumberRows()