[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
r6002 - trunk/gnue-forms/src/uidrivers/curses
From: |
reinhard |
Subject: |
r6002 - trunk/gnue-forms/src/uidrivers/curses |
Date: |
Tue, 20 Jul 2004 15:07:06 -0500 (CDT) |
Author: reinhard
Date: 2004-07-20 15:07:05 -0500 (Tue, 20 Jul 2004)
New Revision: 6002
Modified:
trunk/gnue-forms/src/uidrivers/curses/UIdriver.py
Log:
Use keymapper.
Modified: trunk/gnue-forms/src/uidrivers/curses/UIdriver.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/curses/UIdriver.py 2004-07-20 19:20:19 UTC
(rev 6001)
+++ trunk/gnue-forms/src/uidrivers/curses/UIdriver.py 2004-07-20 20:07:05 UTC
(rev 6002)
@@ -24,6 +24,8 @@
import curses
from gnue.common import events
+from gnue.common.apps import i18n
+from gnue.forms.GFKeyMapper import vk, KeyMapper
from gnue.forms.uidrivers._base.UIdriver import GFUserInterfaceBase
# =============================================================================
@@ -37,6 +39,7 @@
# ---------------------------------------------------------------------------
def initialize (self):
+
self.widgetWidth = 1
self.widgetHeight = 1
self.textWidth = 1
@@ -49,70 +52,137 @@
curses.init_pair (4, curses.COLOR_WHITE, curses.COLOR_BLACK)
self.__exiting = False
+ # This should go into the base driver:
+ KeyMapper.setUIKeyMap (self._keymap)
+
# ---------------------------------------------------------------------------
# Activate the given form
# ---------------------------------------------------------------------------
def _activateForm (self, form, modal):
+
self.__currentForm = form
# ---------------------------------------------------------------------------
- # Clean up everything
+ # Key mapping for converting e.g. F13 into Shift-F3
# ---------------------------------------------------------------------------
- def _exit (self, formName):
- curses.endwin ()
- self.__exiting = True
+ __shiftkeys = {
+ # unshifted Shift Ctrl Meta
+ # ------------------------------------
+ curses.KEY_F13: (curses.KEY_F3, True, False, False),
+ curses.KEY_F14: (curses.KEY_F4, True, False, False),
+ curses.KEY_F15: (curses.KEY_F5, True, False, False),
+ curses.KEY_F16: (curses.KEY_F6, True, False, False),
+ curses.KEY_F17: (curses.KEY_F7, True, False, False),
+ curses.KEY_F18: (curses.KEY_F8, True, False, False),
+ curses.KEY_F19: (curses.KEY_F9, True, False, False),
+ curses.KEY_F20: (curses.KEY_F10, True, False, False),
+ curses.KEY_SRIGHT: (curses.KEY_RIGHT, True, False, False),
+ curses.KEY_SLEFT: (curses.KEY_LEFT, True, False, False),
+ curses.KEY_SIC: (curses.KEY_IC, True, False, False),
+ curses.KEY_SDC: (curses.KEY_DC, True, False, False),
+ curses.KEY_SHOME: (curses.KEY_HOME, True, False, False),
+ curses.KEY_SEND: (curses.KEY_END, True, False, False)
+ }
# ---------------------------------------------------------------------------
- # Keys that simple generate an event
+ # Key mapping between curses codes and gnue codes
# ---------------------------------------------------------------------------
- __keymap = {
- 27: 'requestEXIT', # <Esc>
- 9: 'requestNEXTENTRY', # <Tab>
- 10: 'requestNEXTENTRY', # <Enter>
- curses.KEY_UP: 'requestPREVENTRY',
- curses.KEY_DOWN: 'requestNEXTENTRY',
- curses.KEY_LEFT: 'requestCURSORLEFT',
- curses.KEY_RIGHT: 'requestCURSORRIGHT',
- curses.KEY_HOME: 'requestCURSORHOME',
- curses.KEY_END: 'requestCURSOREND', # <Backspace>
- 8: 'requestBACKSPACE',
- curses.KEY_BACKSPACE: 'requestBACKSPACE',
- curses.KEY_DC: 'requestDELETE',
- curses.KEY_IC: 'requestMODETOGGLE',
- curses.KEY_NPAGE: 'requestNEXTPAGE',
- curses.KEY_PPAGE: 'requestPREVPAGE'
+ _keymap = {
+ vk.F1 : curses.KEY_F1,
+ vk.F2 : curses.KEY_F2,
+ vk.F3 : curses.KEY_F3,
+ vk.F4 : curses.KEY_F4,
+ vk.F5 : curses.KEY_F5,
+ vk.F6 : curses.KEY_F6,
+ vk.F7 : curses.KEY_F7,
+ vk.F8 : curses.KEY_F8,
+ vk.F9 : curses.KEY_F9,
+ vk.F10 : curses.KEY_F10,
+ vk.F11 : curses.KEY_F11,
+ vk.F12 : curses.KEY_F12,
+ vk.INSERT : curses.KEY_IC,
+ vk.DELETE : curses.KEY_DC,
+ vk.HOME : curses.KEY_HOME,
+ vk.END : curses.KEY_END,
+ vk.PAGEUP : curses.KEY_PPAGE,
+ vk.PAGEDOWN : curses.KEY_NPAGE,
+ vk.UP : curses.KEY_UP,
+ vk.DOWN : curses.KEY_DOWN,
+ vk.LEFT : curses.KEY_LEFT,
+ vk.RIGHT : curses.KEY_RIGHT,
+ vk.TAB : 9,
+ vk.ENTER : 10,
+ vk.BACKSPACE : curses.KEY_BACKSPACE
}
# ---------------------------------------------------------------------------
- # Generate and execute event for user action
+ # Generate and execute a requestXXX event for user action
# ---------------------------------------------------------------------------
def __action (self, name, **params):
+
+ # This could be in the base UI driver
params ['_form'] = self._form
- self.dispatchEvent (events.Event (name, **params))
+ self.dispatchEvent (events.Event ("request%s" % name, **params))
# ---------------------------------------------------------------------------
+ # Handle a keyboard request for a character key
+ # ---------------------------------------------------------------------------
+
+ def __keypress (self, character):
+
+ # This could be in the base UI driver
+ if character < ' ': # control key
+ self.__action (KeyMapper.getEvent (ord (character), False, True, False))
+ else:
+ self.__action ('KEYPRESS', text = character)
+
+ # ---------------------------------------------------------------------------
+ # Handle a keyboard request for a function key
+ # ---------------------------------------------------------------------------
+
+ def __fkeypress (self, key, shift, ctrl, meta):
+
+ # This could be in the base UI driver
+ self.__action (KeyMapper.getEvent (key, shift, ctrl, meta))
+
+ # ---------------------------------------------------------------------------
# Main loop
# ---------------------------------------------------------------------------
def mainLoop (self):
+
while not self.__exiting:
key = self.__currentForm.wait ()
if key >= 32 and key <= 255:
- self.__action ('requestKEYPRESS', text = chr (key))
+ self.__keypress (unicode (chr (key), i18n.encoding))
+ else:
+ if self.__shiftkeys.has_key (key): # translate shifted f-key
+ (key, shift, ctrl, meta) = self.__shiftkeys [key]
+ else:
+ (shift, ctrl, meta) = (False, False, False)
+ self.__fkeypress (key, shift, ctrl, meta)
- elif self.__keymap.has_key (key):
- self.__action (self.__keymap [key])
+ # ---------------------------------------------------------------------------
+ # Set title of a form
+ # ---------------------------------------------------------------------------
+ def setTitle (self, event):
+
+ # Exactly this should actually be done by the base ui driver
+ ui = self._gfObjToUIWidget [event._form]
+ ui.setTitle (event.title)
+
# ---------------------------------------------------------------------------
# Display warning message
# ---------------------------------------------------------------------------
def formAlert (self, event):
+
curses.beep ()
curses.flash ()
@@ -121,6 +191,7 @@
# ---------------------------------------------------------------------------
def beginWait (self, event):
+
pass
# ---------------------------------------------------------------------------
@@ -128,22 +199,23 @@
# ---------------------------------------------------------------------------
def endWait (self, event):
+
pass
# ---------------------------------------------------------------------------
- # Set title of a form
+ # Clean up everything
# ---------------------------------------------------------------------------
- def setTitle (self, event):
+ def _exit (self, formName):
- # Exactly this should actually be done by the base ui driver
- ui = self._gfObjToUIWidget [event._form]
- ui.setTitle (event.title)
+ curses.endwin ()
+ self.__exiting = True
# ---------------------------------------------------------------------------
# Helper method for forms to get screen size
# ---------------------------------------------------------------------------
def screenSize (self):
+
(y, x) = self.__screen.getmaxyx ()
return (x, y)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- r6002 - trunk/gnue-forms/src/uidrivers/curses,
reinhard <=