diff -r 6a376615142e -r d4bb66691248 PLCOpenEditor.py --- a/PLCOpenEditor.py Sat Mar 31 15:03:50 2012 +0200 +++ b/PLCOpenEditor.py Sat Mar 31 15:08:18 2012 +0200 @@ -384,12 +384,14 @@ self.Bind(wx.EVT_MENU, self.OnSelectAllMenu, id=wx.ID_SELECTALL) self.Bind(wx.EVT_MENU, self.OnDeleteMenu, id=wx.ID_DELETE) - self.AddToMenuToolBar([(wx.ID_UNDO, wx.ART_UNDO, _(u'Undo'), None), - (wx.ID_REDO, wx.ART_REDO, _(u'Redo'), None), + self.AddToMenuToolBar([(wx.ID_UNDO, "undo.png", _(u'Undo'), None), + (wx.ID_REDO, "redo.png", _(u'Redo'), None), None, - (wx.ID_CUT, wx.ART_CUT, _(u'Cut'), None), - (wx.ID_COPY, wx.ART_COPY, _(u'Copy'), None), - (wx.ID_PASTE, wx.ART_PASTE, _(u'Paste'), None)]) + (wx.ID_CUT, "cut.png", _(u'Cut'), None), + (wx.ID_COPY, "copy.png", _(u'Copy'), None), + (wx.ID_PASTE, "paste.png", _(u'Paste'), None), + None, + (ID_PLCOPENEDITOREDITMENUSEARCHINPROJECT, "find.png", _(u'Search in Project'), None)]) def _init_coll_DisplayMenu_Items(self, parent): AppendMenu(parent, help='', id=wx.ID_REFRESH, @@ -441,12 +443,13 @@ self._init_coll_MainLibrarySizer_Items(self.MainLibrarySizer) self.LibraryPanel.SetSizer(self.MainLibrarySizer) - + def _init_ctrls(self, prnt): wx.Frame.__init__(self, id=ID_PLCOPENEDITOR, name='IDEFrame', parent=prnt, pos=wx.DefaultPosition, size=wx.Size(1000, 600), style=wx.DEFAULT_FRAME_STYLE) self.SetClientSize(wx.Size(1000, 600)) + self.Bind(wx.EVT_ACTIVATE, self.OnActivated) self.TabsImageList = wx.ImageList(31, 16) self.TabsImageListIndexes = {} @@ -605,6 +608,16 @@ #----------------------------------------------------------------------- if USE_AUI: + MenuToolBar = wx.ToolBar(self, ID_PLCOPENEDITOREDITORMENUTOOLBAR, wx.DefaultPosition, wx.DefaultSize, + wx.TB_FLAT | wx.TB_NODIVIDER | wx.NO_BORDER) + MenuToolBar.SetToolBitmapSize(wx.Size(25, 25)) + MenuToolBar.Realize() + self.Panes["MenuToolBar"] = MenuToolBar + self.AUIManager.AddPane(MenuToolBar, wx.aui.AuiPaneInfo(). + Name("MenuToolBar").Caption(_("Menu ToolBar")). + ToolbarPane().Top(). + LeftDockable(False).RightDockable(False)) + EditorToolBar = wx.ToolBar(self, ID_PLCOPENEDITOREDITORTOOLBAR, wx.DefaultPosition, wx.DefaultSize, wx.TB_FLAT | wx.TB_NODIVIDER | wx.NO_BORDER) EditorToolBar.SetToolBitmapSize(wx.Size(25, 25)) @@ -614,17 +627,7 @@ self.Panes["EditorToolBar"] = EditorToolBar self.AUIManager.AddPane(EditorToolBar, wx.aui.AuiPaneInfo(). Name("EditorToolBar").Caption(_("Editor ToolBar")). - ToolbarPane().Top(). - LeftDockable(False).RightDockable(False)) - - MenuToolBar = wx.ToolBar(self, ID_PLCOPENEDITOREDITORMENUTOOLBAR, wx.DefaultPosition, wx.DefaultSize, - wx.TB_FLAT | wx.TB_NODIVIDER | wx.NO_BORDER) - MenuToolBar.SetToolBitmapSize(wx.Size(25, 25)) - MenuToolBar.Realize() - self.Panes["MenuToolBar"] = MenuToolBar - self.AUIManager.AddPane(MenuToolBar, wx.aui.AuiPaneInfo(). - Name("MenuToolBar").Caption(_("Menu ToolBar")). - ToolbarPane().Top(). + ToolbarPane().Top().Position(1). LeftDockable(False).RightDockable(False)) else: @@ -749,6 +752,11 @@ wx.Frame.Show(self) wx.CallAfter(self.RestoreFrameSize) + def OnActivated(self, event): + if event.GetActive(): + wx.CallAfter(self._Refresh, TITLE, EDITORTOOLBAR, FILEMENU, EDITMENU, DISPLAYMENU) + event.Skip() + def RestoreFrameSize(self): frame_size = None if self.Config.HasEntry("framesize"): @@ -1046,6 +1054,7 @@ #self.EditMenu.Check(ID_PLCOPENEDITOREDITMENUENABLEUNDOREDO, # self.Controler.IsProjectBufferEnabled()) self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUSEARCHINPROJECT, True) + MenuToolBar.EnableTool(ID_PLCOPENEDITOREDITMENUSEARCHINPROJECT, True) self.EditMenu.Enable(wx.ID_ADD, True) self.EditMenu.Enable(wx.ID_DELETE, True) if self.TabsOpened.GetPageCount() > 0: @@ -1082,6 +1091,7 @@ MenuToolBar.EnableTool(wx.ID_PASTE, False) self.EditMenu.Enable(wx.ID_SELECTALL, False) self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUSEARCHINPROJECT, False) + MenuToolBar.EnableTool(ID_PLCOPENEDITOREDITMENUSEARCHINPROJECT, False) self.EditMenu.Enable(wx.ID_ADD, False) self.EditMenu.Enable(wx.ID_DELETE, False) @@ -1666,62 +1676,17 @@ self.TypesTreeItemSelect(item) name = self.TypesTree.GetItemText(item) type = self.TypesTree.GetPyData(item) - if type == ITEM_POU: - menu = wx.Menu(title='') - if self.Controler.GetPouBodyType(name) == "SFC": - new_id = wx.NewId() - AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Transition")) - self.Bind(wx.EVT_MENU, self.GenerateAddTransitionFunction(name), id=new_id) - new_id = wx.NewId() - AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Action")) - self.Bind(wx.EVT_MENU, self.GenerateAddActionFunction(name), id=new_id) - menu.AppendSeparator() - - new_id = wx.NewId() - AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Copy POU")) - self.Bind(wx.EVT_MENU, self.OnCopyPou, id=new_id) - - pou_type = self.Controler.GetPouType(name) - if pou_type in ["function", "functionBlock"]: - change_menu = wx.Menu(title='') - if pou_type == "function": - new_id = wx.NewId() - AppendMenu(change_menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Function Block")) - self.Bind(wx.EVT_MENU, self.GenerateChangePouTypeFunction(name, "functionBlock"), id=new_id) - new_id = wx.NewId() - AppendMenu(change_menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Program")) - self.Bind(wx.EVT_MENU, self.GenerateChangePouTypeFunction(name, "program"), id=new_id) - menu.AppendMenu(wx.NewId(), _("Change POU Type To"), change_menu) - new_id = wx.NewId() - AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Rename")) - self.Bind(wx.EVT_MENU, self.OnRenamePouMenu, id=new_id) - new_id = wx.NewId() - AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Delete")) - self.Bind(wx.EVT_MENU, self.OnDeleteMenu, id=new_id) - self.PopupMenu(menu) - elif type == ITEM_CONFIGURATION: - menu = wx.Menu(title='') - new_id = wx.NewId() - AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Resource")) - self.Bind(wx.EVT_MENU, self.GenerateAddResourceFunction(name), id=new_id) - new_id = wx.NewId() - AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Delete")) - self.Bind(wx.EVT_MENU, self.OnDeleteMenu, id=new_id) - self.PopupMenu(menu) - elif type in [ITEM_DATATYPE, ITEM_TRANSITION, ITEM_ACTION, ITEM_RESOURCE]: - menu = wx.Menu(title='') - new_id = wx.NewId() - AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Delete")) - self.Bind(wx.EVT_MENU, self.OnDeleteMenu, id=new_id) - self.PopupMenu(menu) - elif type in ITEMS_UNEDITABLE: + + menu = None + if type in ITEMS_UNEDITABLE: name = UNEDITABLE_NAMES_DICT[name] + if name == "Data Types": menu = wx.Menu(title='') new_id = wx.NewId() AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add DataType")) self.Bind(wx.EVT_MENU, self.OnAddDataTypeMenu, id=new_id) - self.PopupMenu(menu) + elif name in ["Functions", "Function Blocks", "Programs"]: menu = wx.Menu(title='') @@ -1735,13 +1700,12 @@ if self.GetCopyBuffer() is None: menu.Enable(new_id, False) - self.PopupMenu(menu) elif name == "Configurations": menu = wx.Menu(title='') new_id = wx.NewId() AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Configuration")) self.Bind(wx.EVT_MENU, self.OnAddConfigurationMenu, id=new_id) - self.PopupMenu(menu) + elif name == "Transitions": menu = wx.Menu(title='') new_id = wx.NewId() @@ -1752,7 +1716,7 @@ parent = self.TypesTree.GetItemParent(parent) parent_type = self.TypesTree.GetPyData(parent) self.Bind(wx.EVT_MENU, self.GenerateAddTransitionFunction(self.TypesTree.GetItemText(parent)), id=new_id) - self.PopupMenu(menu) + elif name == "Actions": menu = wx.Menu(title='') new_id = wx.NewId() @@ -1763,7 +1727,7 @@ parent = self.TypesTree.GetItemParent(parent) parent_type = self.TypesTree.GetPyData(parent) self.Bind(wx.EVT_MENU, self.GenerateAddActionFunction(self.TypesTree.GetItemText(parent)), id=new_id) - self.PopupMenu(menu) + elif name == "Resources": menu = wx.Menu(title='') new_id = wx.NewId() @@ -1774,7 +1738,56 @@ parent = self.TypesTree.GetItemParent(parent) parent_type = self.TypesTree.GetPyData(parent) self.Bind(wx.EVT_MENU, self.GenerateAddResourceFunction(self.TypesTree.GetItemText(parent)), id=new_id) - self.PopupMenu(menu) + + else: + if type == ITEM_POU: + menu = wx.Menu(title='') + if self.Controler.GetPouBodyType(name) == "SFC": + new_id = wx.NewId() + AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Transition")) + self.Bind(wx.EVT_MENU, self.GenerateAddTransitionFunction(name), id=new_id) + new_id = wx.NewId() + AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Action")) + self.Bind(wx.EVT_MENU, self.GenerateAddActionFunction(name), id=new_id) + menu.AppendSeparator() + + new_id = wx.NewId() + AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Copy POU")) + self.Bind(wx.EVT_MENU, self.OnCopyPou, id=new_id) + + pou_type = self.Controler.GetPouType(name) + if pou_type in ["function", "functionBlock"]: + change_menu = wx.Menu(title='') + if pou_type == "function": + new_id = wx.NewId() + AppendMenu(change_menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Function Block")) + self.Bind(wx.EVT_MENU, self.GenerateChangePouTypeFunction(name, "functionBlock"), id=new_id) + new_id = wx.NewId() + AppendMenu(change_menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Program")) + self.Bind(wx.EVT_MENU, self.GenerateChangePouTypeFunction(name, "program"), id=new_id) + menu.AppendMenu(wx.NewId(), _("Change POU Type To"), change_menu) + new_id = wx.NewId() + AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Rename")) + self.Bind(wx.EVT_MENU, self.OnRenamePouMenu, id=new_id) + + elif type == ITEM_CONFIGURATION: + menu = wx.Menu(title='') + new_id = wx.NewId() + AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Resource")) + self.Bind(wx.EVT_MENU, self.GenerateAddResourceFunction(name), id=new_id) + + elif type in [ITEM_DATATYPE, ITEM_TRANSITION, ITEM_ACTION, ITEM_RESOURCE]: + menu = wx.Menu(title='') + + if menu is not None: + new_id = wx.NewId() + AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Delete")) + self.Bind(wx.EVT_MENU, self.OnDeleteMenu, id=new_id) + + if menu is not None: + self.PopupMenu(menu) + menu.Destroy() + event.Skip() @@ -2094,9 +2107,7 @@ MenuToolBar.AddSeparator() else: id, bitmap, help, callback = toolbar_item - if not isinstance(bitmap, wx.Bitmap): - bitmap = wx.ArtProvider.GetBitmap(bitmap, wx.ART_TOOLBAR, (24, 24)) - MenuToolBar.AddSimpleTool(id=id, shortHelpString=help, bitmap=bitmap) + MenuToolBar.AddSimpleTool(id=id, shortHelpString=help, bitmap=wx.Bitmap(os.path.join(CWD, 'Images', bitmap))) if callback is not None: self.Bind(wx.EVT_TOOL, callback, id=id) MenuToolBar.Realize() @@ -2628,11 +2639,11 @@ self.Bind(wx.EVT_MENU, self.OnPropertiesMenu, id=wx.ID_PROPERTIES) self.Bind(wx.EVT_MENU, self.OnQuitMenu, id=wx.ID_EXIT) - self.AddToMenuToolBar([(wx.ID_NEW, wx.ART_NEW, _(u'New'), None), - (wx.ID_OPEN, wx.ART_FILE_OPEN, _(u'Open'), None), - (wx.ID_SAVE, wx.ART_FILE_SAVE, _(u'Save'), None), - (wx.ID_SAVEAS, wx.ART_FILE_SAVE_AS, _(u'Save As...'), None), - (wx.ID_PRINT, wx.ART_PRINT, _(u'Print'), None)]) + self.AddToMenuToolBar([(wx.ID_NEW, "new.png", _(u'New'), None), + (wx.ID_OPEN, "open.png", _(u'Open'), None), + (wx.ID_SAVE, "save.png", _(u'Save'), None), + (wx.ID_SAVEAS, "saveas.png", _(u'Save As...'), None), + (wx.ID_PRINT, "print.png", _(u'Print'), None)]) def _init_coll_HelpMenu_Items(self, parent): AppendMenu(parent, help='', id=wx.ID_HELP, @@ -4249,6 +4260,7 @@ else: menu.Enable(new_id, False) self.PopupMenu(menu) + menu.Destroy() event.Skip() def InsertValue(self, iec_path, idx = None):