Moving ConfNode specific menu to end of EditMenu
authorlaurent
Thu, 14 Jun 2012 18:25:04 +0200
changeset 771 85d33a130a5c
parent 768 fe47069f214c
child 773 3f3f1b8fcb07
Moving ConfNode specific menu to end of EditMenu
Beremiz.py
canfestival/NetworkEditor.py
--- a/Beremiz.py	Mon Jun 11 02:34:23 2012 +0200
+++ b/Beremiz.py	Thu Jun 14 18:25:04 2012 +0200
@@ -292,12 +292,6 @@
 
 class Beremiz(IDEFrame):
 	
-    def _init_coll_MenuBar_Menus(self, parent):
-        IDEFrame._init_coll_MenuBar_Menus(self, parent)
-        
-        parent.Insert(pos=CONFNODEMENU_POSITION, 
-                      menu=self.ConfNodeMenu, title=_(u'&ConfNode'))
-    
     def _init_utils(self):
         self.ConfNodeMenu = wx.Menu(title='')
         self.RecentProjectsMenu = wx.Menu(title='')
@@ -367,6 +361,8 @@
     def _init_ctrls(self, prnt):
         IDEFrame._init_ctrls(self, prnt)
         
+        self.EditMenuSize = self.EditMenu.GetMenuItemCount()
+        
         self.Bind(wx.EVT_MENU, self.OnOpenWidgetInspector, id=ID_BEREMIZINSPECTOR)
         accels = [wx.AcceleratorEntry(wx.ACCEL_CTRL|wx.ACCEL_ALT, ord('I'), ID_BEREMIZINSPECTOR)]
         for method,shortcut in [("Stop",     wx.WXK_F4),
@@ -470,7 +466,6 @@
         self.Bind(wx.EVT_CLOSE, self.OnCloseFrame)
         
         self._Refresh(TITLE, EDITORTOOLBAR, FILEMENU, EDITMENU, DISPLAYMENU)
-        self.RefreshConfNodeMenu()
         self.RefreshAll()
         self.LogConsole.SetFocus()
 
@@ -714,7 +709,9 @@
         self.AUIManager.GetPane("StatusToolBar").Position(1)
         self.AUIManager.Update()
     
-    def RefreshConfNodeMenu(self):
+    def RefreshEditMenu(self):
+        IDEFrame.RefreshEditMenu(self)
+        
         if self.CTR is not None:
             selected = self.TabsOpened.GetSelection()
             if selected >= 0:
@@ -722,20 +719,27 @@
             else:
                 panel = None
             if panel != self.LastPanelSelected:
-                for i in xrange(self.ConfNodeMenu.GetMenuItemCount()):
-                    item = self.ConfNodeMenu.FindItemByPosition(0)
-                    self.ConfNodeMenu.Delete(item.GetId())
+                for i in xrange(self.EditMenuSize, self.EditMenu.GetMenuItemCount()):
+                    item = self.EditMenu.FindItemByPosition(self.EditMenuSize)
+                    if item.IsSeparator():
+                        self.EditMenu.RemoveItem(item)
+                    else:
+                        self.EditMenu.Delete(item.GetId())
                 self.LastPanelSelected = panel
                 if panel is not None:
                     items = panel.GetConfNodeMenuItems()
                 else:
                     items = []
-                self.MenuBar.EnableTop(CONFNODEMENU_POSITION, len(items) > 0)
-                self.GenerateMenuRecursive(items, self.ConfNodeMenu)
+                if len(items) > 0:
+                    self.EditMenu.AppendSeparator()
+                    self.GenerateMenuRecursive(items, self.EditMenu)
             if panel is not None:
-                panel.RefreshConfNodeMenu(self.ConfNodeMenu)
-        else:
-            self.MenuBar.EnableTop(CONFNODEMENU_POSITION, False)
+                panel.RefreshConfNodeMenu(self.EditMenu)
+        else:
+            for i in xrange(self.EditMenuSize, self.EditMenu.GetMenuItemCount()):
+                item = self.EditMenu.FindItemByPosition(i)
+                self.EditMenu.Delete(item.GetId())
+            self.LastPanelSelected = None
         self.MenuBar.UpdateMenus()
     
     def RefreshAll(self):
@@ -882,14 +886,6 @@
     def OnAboutMenu(self, event):
         OpenHtmlFrame(self,_("About Beremiz"), Bpath("doc","about.html"), wx.Size(550, 500))
     
-    def OnPouSelectedChanged(self, event):
-        wx.CallAfter(self.RefreshConfNodeMenu)
-        IDEFrame.OnPouSelectedChanged(self, event)
-    
-    def OnPageClose(self, event):
-        wx.CallAfter(self.RefreshConfNodeMenu)
-        IDEFrame.OnPageClose(self, event)
-    
     def OnProjectTreeItemBeginEdit(self, event):
         selected = event.GetItem()
         if self.ProjectTree.GetPyData(selected)["type"] == ITEM_CONFNODE:
--- a/canfestival/NetworkEditor.py	Mon Jun 11 02:34:23 2012 +0200
+++ b/canfestival/NetworkEditor.py	Thu Jun 14 18:25:04 2012 +0200
@@ -107,4 +107,4 @@
     
     def OnNodeSelectedChanged(self, event):
         NetworkEditorTemplate.OnNodeSelectedChanged(self, event)
-        wx.CallAfter(self.ParentWindow.RefreshConfNodeMenu)
+        wx.CallAfter(self.ParentWindow.RefreshEditMenu)