[gnue] r9517 - in trunk/gnue-forms/src/uidrivers/curses: . widgets

[email protected]
Newsgroups gmane.comp.cms.gnue.cvs
Message-ID <[email protected]>
Author: reinhard
Date: 2007-04-25 14:54:54 -0500 (Wed, 25 Apr 2007)
New Revision: 9517

Modified:
   trunk/gnue-forms/src/uidrivers/curses/UIdriver.py
   trunk/gnue-forms/src/uidrivers/curses/widgets/form.py
   trunk/gnue-forms/src/uidrivers/curses/widgets/menuitem.py
Log:
Generate function key bar from menu.


Modified: trunk/gnue-forms/src/uidrivers/curses/UIdriver.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/curses/UIdriver.py	2007-04-25 14:31:12 UTC (rev 9516)
+++ trunk/gnue-forms/src/uidrivers/curses/UIdriver.py	2007-04-25 19:54:54 UTC (rev 9517)
@@ -104,25 +104,6 @@
                                   'NEXTPAGE': 'PAGEDOWN',
                                   'PREVPAGE': 'PAGEUP'})
 
-        # Find out all functions mapped to function keys
-                                        # Both hold [eventname, enabled] pairs:
-        self.__events_fkey = {}             #  by curses keycode
-        self.__events_name = {}             #  by event name
-        for fkey in range(curses.KEY_F1, curses.KEY_F20):
-            if self.__shiftkeys.has_key(fkey):
-                (key, shift, ctrl, meta) = self.__shiftkeys[fkey]
-            else:
-                (key, shift, ctrl, meta) = (fkey, False, False, False)
-
-            (name, args) = KeyMapper.getEvent(key, shift, ctrl, meta)
-            if name:
-                event = [name, False]
-                self.__events_fkey[fkey] = event
-                self.__events_name[name] = event
-                self.registerEventListeners ({'can' + name: self.__canEvent,
-                                          'cannot' + name: self.__cannotEvent})
-
-
     # -------------------------------------------------------------------------
     # Activate the given form
     # -------------------------------------------------------------------------
@@ -419,47 +400,3 @@
                 break
 
         return result
-
-
-    # -------------------------------------------------------------------------
-    # Helper method for forms to get active function keys
-    # -------------------------------------------------------------------------
-
-    # Remember what events are enabled/disabled
-    def __canEvent(self, event):
-        name = event.__event__[3:]
-        if self.__events_name.has_key(name):
-            self.__events_name[name][1] = True
-
-    def __cannotEvent(self, event):
-        name = event.__event__[6:]
-        if self.__events_name.has_key(name):
-            self.__events_name[name][1] = False
-
-    # Texts to display in function key bar
-    __functionText = {
-        'COMMIT':        u_("Save"),
-        'ROLLBACK':      u_("Revert"),
-        'NEWRECORD':     u_("Insert"),
-        'MARKFORDELETE': u_("Delete"),
-        'ENTERQUERY':    u_("Query"),
-        'EXECQUERY':     u_("Execute"),
-        'CANCELQUERY':   u_("Cancel"),
-        'EXIT':          u_("Exit"),
-    }
-
-    # Now the real function
-    def getFunctionKeyLine(self):
-
-        keys = []
-        for fkey in range(curses.KEY_F1, curses.KEY_F20):
-            if self.__events_fkey.has_key(fkey):
-                (name, active) = self.__events_fkey[fkey]
-                if active and self.__functionText.has_key(name):
-                    keys.append(KeyMapper.getEventKeystrokeRepr(name) + "=" + \
-                               self.__functionText[name])
-        if not self.__events_name.has_key('EXIT'):
-            name = "EXIT"                     # Always show shortcut for Exit
-            keys.append(KeyMapper.getEventKeystrokeRepr(name) + "=" + \
-                       self.__functionText[name])
-        return ' '.join(keys)

Modified: trunk/gnue-forms/src/uidrivers/curses/widgets/form.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/curses/widgets/form.py	2007-04-25 14:31:12 UTC (rev 9516)
+++ trunk/gnue-forms/src/uidrivers/curses/widgets/form.py	2007-04-25 19:54:54 UTC (rev 9517)
@@ -392,17 +392,33 @@
             self.__window.addch(y - 2, x - 16, curses.ACS_VLINE)
             self.__window.addch(y - 2, x -  6, curses.ACS_VLINE)
 
-            self.__window.bkgdset(' ', self._uiDriver.attr['fkeys'])
+            self.__window.refresh(y - 2, 0, y - 2, 0, y - 1, x)
 
-            self.__window.addstr(y-1, 0, o(self._uiDriver.getFunctionKeyLine()))
-            self.__window.clrtoeol()
-
-            self.__window.refresh(y - 2, 0, y - 2, 0, y, x)
-
         except curses.error:
             pass
 
     # -------------------------------------------------------------------------
+
+    def update_fkey_bar(self):
+
+        if not self.ready():
+            return
+
+        (y, x) = self.__window.getmaxyx()
+
+        self.__window.bkgdset(' ', self._uiDriver.attr['fkeys'])
+
+        text = []
+        for key in range(curses.KEY_F1, curses.KEY_F13):
+            menuitem = self.__hotkeys.get(key)
+            if menuitem is not None and menuitem.is_enabled:
+                text.append(menuitem.hotkey + "=" + menuitem._gfObject.label)
+
+        self.__window.addstr(y-1, 0, o(' '.join(text)))
+        self.__window.clrtoeol()
+        self.__window.refresh(y - 1, 0, y - 1, 0, y, x)
+
+    # -------------------------------------------------------------------------
     # Close the form
     # -------------------------------------------------------------------------
 
@@ -438,6 +454,7 @@
         try:
             self.__update_page_list()
             self.__update_status_bar()
+            self.update_fkey_bar()
 
         except curses.error:
             pass

Modified: trunk/gnue-forms/src/uidrivers/curses/widgets/menuitem.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/curses/widgets/menuitem.py	2007-04-25 14:31:12 UTC (rev 9516)
+++ trunk/gnue-forms/src/uidrivers/curses/widgets/menuitem.py	2007-04-25 19:54:54 UTC (rev 9517)
@@ -102,6 +102,7 @@
     def _ui_enable_(self):
         
         self.is_enabled = True
+        self._uiForm.update_fkey_bar()
         return
 
     # -------------------------------------------------------------------------
@@ -109,6 +110,7 @@
     def _ui_disable_(self):
 
         self.is_enabled = False
+        self._uiForm.update_fkey_bar()
         return
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.