PLCOpenEditor.py
changeset 666 d4bb66691248
parent 660 30c0371ac086
child 673 b686f0081e2b
--- 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):