commit-gnue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gnue] r8494 - in trunk/gnue-forms/src: . uidrivers/wx26/widgets


From: reinhard
Subject: [gnue] r8494 - in trunk/gnue-forms/src: . uidrivers/wx26/widgets
Date: Wed, 14 Jun 2006 09:02:29 -0500 (CDT)

Author: reinhard
Date: 2006-06-14 09:02:28 -0500 (Wed, 14 Jun 2006)
New Revision: 8494

Modified:
   trunk/gnue-forms/src/GFInstance.py
   trunk/gnue-forms/src/GFParser.py
   trunk/gnue-forms/src/uidrivers/wx26/widgets/menu.py
Log:
Support for loading a default menu from a separate file.

issue79 in-progress


Modified: trunk/gnue-forms/src/GFInstance.py
===================================================================
--- trunk/gnue-forms/src/GFInstance.py  2006-06-13 20:17:51 UTC (rev 8493)
+++ trunk/gnue-forms/src/GFInstance.py  2006-06-14 14:02:28 UTC (rev 8494)
@@ -36,6 +36,7 @@
 import sys
 import dircache
 
+from gnue import paths
 from gnue.forms.GFForm import *
 from gnue.forms.GFParser import loadFile
 from gnue.forms import VERSION
@@ -47,6 +48,7 @@
 from gnue.common.utils.FileUtils import dyn_import
 from gnue.common.utils.FileUtils import openResource, openBuffer
 from gnue.common.utils import CaselessDict
+from gnue.common.logic import usercode
 from gnue.common.logic.language import AbortRequest
 from gnue.common.apps.GClientApp import *
 
@@ -303,6 +305,31 @@
 
     assert gEnter (4)
 
+    main_form = self._formsDictionary ['__main__']
+
+    # Load standard menu and merge it into main form
+    assert gDebug (4, "Loading standard menu and toolbar")
+
+    main_menu = main_form.findChildNamed ('__main__', 'GCMenu')
+    # FIXME: for now, only merge standard menu if there is a menu defined in
+    # the form. Do all of this unconditionally after menu handling is finished.
+    if main_menu:
+        filename = os.path.join (paths.config, 'default.gfd')
+        filehandle = openResource (filename)
+        default_form = loadFile (filehandle, self, initialize=0, url=filename)
+        filehandle.close ()
+
+        menu = default_form.findChildNamed ('__main__', 'GCMenu')
+        menu.merge (main_menu)
+        main_menu.assign (menu, True)
+        main_menu.name = '__main__'
+
+        # Make sure that the Help menu ist the last one. If there is a better
+        # way to do this, please let me know. -- Reinhard
+        help_menu = main_menu.findChildNamed ('__help__')
+        main_menu._children.remove (help_menu)
+        main_menu._children.append (help_menu)
+
     # Initialize all the forms loaded into memory
     assert gDebug (4, "Initializing form objects")
 
@@ -318,9 +345,7 @@
       self.buildForm (dialog)
 
     # Bring up the main form
-    form = self._formsDictionary ['__main__']
-
-    if form.style == 'dialog':
+    if main_form.style == 'dialog':
       # we assume a dialog to be modal by definition and that program execution
       # stops here until the dialog get's closed. So do *not* enter another
       # main loop

Modified: trunk/gnue-forms/src/GFParser.py
===================================================================
--- trunk/gnue-forms/src/GFParser.py    2006-06-13 20:17:51 UTC (rev 8493)
+++ trunk/gnue-forms/src/GFParser.py    2006-06-14 14:02:28 UTC (rev 8494)
@@ -1002,7 +1002,7 @@
     xmlElements.update(usercode.get_xml_elements(
         updates = {
             'action': {'ParentTags': ('form')},
-            'menu': {'ParentTags': ('form')},
+            'menu': {'ParentTags': ('form', 'menu')},
             'toolbar': {'ParentTags': ('form')}}))
     
     #

Modified: trunk/gnue-forms/src/uidrivers/wx26/widgets/menu.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/wx26/widgets/menu.py 2006-06-13 20:17:51 UTC 
(rev 8493)
+++ trunk/gnue-forms/src/uidrivers/wx26/widgets/menu.py 2006-06-14 14:02:28 UTC 
(rev 8494)
@@ -44,15 +44,22 @@
         Creates a new Menu widget.
         """
 
-        result = wx.Menu()
-        if isinstance(event.container, wx.Menu):
-            event.container.AppendMenu(wx.ID_ANY, self._gfObject.label, result)
+        if self._gfObject.name == '__main__':
+            # Menu bar of the form
+            widget = wx.MenuBar()
+            self._uiForm.mainWindow.SetMenuBar(widget)
         else:
-            self._uiForm.menuBar.Append(result, self._gfObject.label)
+            # Submenu or popup menu
+            widget = wx.Menu()
+            if isinstance(event.container, wx.Menu):
+                event.container.AppendMenu(wx.ID_ANY, self._gfObject.label,
+                        widget)
+            elif isinstance(event.container, wx.MenuBar):
+                event.container.Append(widget, self._gfObject.label)
 
-        self._containerToolkitWidget = result
+        self._containerToolkitWidget = widget
 
-        return result
+        return widget
 
 
 # =============================================================================





reply via email to

[Prev in Thread] Current Thread [Next in Thread]