test/data/vclamp_jpk/README: Document sample versions
[hooke.git] / hooke / ui / gui / menu.py
index c422f9f3627260c07d2e56a63a0c01677aeccc96..7e30ddba363b7b9d1c81b004e328ff0b94f6e6e7 100644 (file)
@@ -1,4 +1,19 @@
-# Copyright
+# Copyright (C) 2010-2012 W. Trevor King <wking@tremily.us>
+#
+# This file is part of Hooke.
+#
+# Hooke is free software: you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation, either version 3 of the License, or (at your option) any
+# later version.
+#
+# Hooke is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Hooke.  If not, see <http://www.gnu.org/licenses/>.
 
 """Menu bar for Hooke.
 """
@@ -6,7 +21,6 @@
 import wx
 
 from ...util.callback import callback, in_callback
-from . import panel as panel
 
 
 class Menu (wx.Menu):
@@ -79,14 +93,14 @@ class FileMenu (Menu):
 
 
 class ViewMenu (Menu):
-    def __init__(self, callbacks=None, **kwargs):
+    def __init__(self, panels, callbacks=None, **kwargs):
         super(ViewMenu, self).__init__(**kwargs)
         if callbacks == None:
             callbacks = {}
         self._callbacks = callbacks
         self._c = {}
-        for i,panelname in enumerate(sorted(panel.PANELS.keys())):
-            text = '%s\tF%d' % (panelname.capitalize(), i+5)
+        for i,panelname in enumerate(sorted([p.managed_name for p in panels])):
+            text = '%s\tF%d' % (panelname, i+4)
             self._c[panelname] = self.AppendCheckItem(id=wx.ID_ANY, text=text)
         for item in self._c.values():
             item.Check()
@@ -162,7 +176,7 @@ class HelpMenu (Menu):
 
 
 class HookeMenuBar (MenuBar):
-    def __init__(self, callbacks=None, **kwargs):
+    def __init__(self, panels, callbacks=None, **kwargs):
         super(HookeMenuBar, self).__init__(**kwargs)
         if callbacks == None:
             callbacks = {}
@@ -172,6 +186,10 @@ class HookeMenuBar (MenuBar):
         # Attach *Menu() instances
         for key in ['file', 'view', 'perspective', 'help']:
             cap_key = key.capitalize()
+            hot_key = '&' + cap_key
             _class = globals()['%sMenu' % cap_key]
-            self._c[key] = _class(parent=self, callbacks=callbacks)
-            self.Append(self._c[key], cap_key)
+            kwargs = {}
+            if key == 'view':
+                kwargs['panels'] = panels
+            self._c[key] = _class(parent=self, callbacks=callbacks, **kwargs)
+            self.Append(self._c[key], hot_key)