[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnue] r9039 - in trunk/gnue-forms/src/uidrivers/curses: . widgets
From: |
johannes |
Subject: |
[gnue] r9039 - in trunk/gnue-forms/src/uidrivers/curses: . widgets |
Date: |
Tue, 14 Nov 2006 04:25:07 -0600 (CST) |
Author: johannes
Date: 2006-11-14 04:25:06 -0600 (Tue, 14 Nov 2006)
New Revision: 9039
Modified:
trunk/gnue-forms/src/uidrivers/curses/UIdriver.py
trunk/gnue-forms/src/uidrivers/curses/widgets/_base.py
trunk/gnue-forms/src/uidrivers/curses/widgets/entry.py
trunk/gnue-forms/src/uidrivers/curses/widgets/form.py
Log:
ShowMessage does not erase screen
Modified: trunk/gnue-forms/src/uidrivers/curses/UIdriver.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/curses/UIdriver.py 2006-11-14 08:24:43 UTC
(rev 9038)
+++ trunk/gnue-forms/src/uidrivers/curses/UIdriver.py 2006-11-14 10:25:06 UTC
(rev 9039)
@@ -38,6 +38,9 @@
# =============================================================================
class GFUserInterface(GFUserInterfaceBase):
+ """
+ An implementation of the base UI toolkit interface using curses
+ """
# -------------------------------------------------------------------------
# Initialize library
@@ -81,7 +84,7 @@
+ curses.A_BLINK
self.attr['window 1'] = curses.color_pair(5)
- self.__currentForm = None
+ self.__current_form = None
# TODO: Add a concept of 'lookups' to the GF* layer (like canCOMMIT,
# ...) Meanwhile we're using Ctrl-W (hardcoded)
@@ -93,6 +96,9 @@
# -------------------------------------------------------------------------
def _initialize(self):
+ """
+ Initialize the interface
+ """
self.widgetWidth = 1
self.widgetHeight = 1
@@ -129,7 +135,7 @@
def _activateForm(self, form, modal):
- self.__currentForm = form
+ self.__current_form = form
# -------------------------------------------------------------------------
# Key mapping for converting e.g. F13 into Shift-F3
@@ -192,10 +198,13 @@
# -------------------------------------------------------------------------
def mainLoop(self):
+ """
+ The main loop of the curses application
+ """
while not self.__exiting:
try:
- key = self.__currentForm.wait()
+ key = self.__current_form.wait()
if key >= 0 and key <= 255:
self._focus_widget._keypress(unicode(chr(key),
@@ -211,12 +220,16 @@
except Exception:
sys.excepthook(*sys.exc_info())
+
# -------------------------------------------------------------------------
# Show a message
# -------------------------------------------------------------------------
def showMessage (self, message, kind, cancel):
+ (x, y) = self.screen_size()
+ screen = curses.newpad(2, x)
+
attr = {
'Question': self.attr['infomsg'],
'Info': self.attr['infomsg'],
@@ -228,21 +241,19 @@
no = u_("No")
ok = u_("Ok")
- self.__screen.bkgdset(' ', attr[kind])
+ screen.bkgdset(' ', attr[kind])
- (y, x) = self.__screen.getmaxyx()
+ screen.move(0, 0)
+ screen.clrtobot()
- self.__screen.move(y - 2, 0)
- self.__screen.clrtobot()
+ screen.addstr(0, 1, o(message))
- self.__screen.addstr(y - 2, 1, o(message))
-
if kind == 'Question':
- self.__screen.addstr(y-1, 1, '(' + yes[:1] + ')' + yes[1:] + '/' +
\
- '(' + no[:1] + ')' + no[1:] + ' ? ')
+ screen.addstr(1, 1, '(' + yes[:1] + ')' + yes[1:] + '/' + \
+ '(' + no[:1] + ')' + no[1:] + ' ? ')
else:
- self.__screen.addstr(y-1, 1, '[' + ok + ']')
- self.__screen.move(y - 1, 2)
+ screen.addstr(1, 1, '[' + ok + ']')
+ screen.move(1, 2)
if kind == 'Question':
validKeys = {ord(yes[0]): True,
@@ -253,14 +264,16 @@
if cancel:
validKeys[27] = None
+ screen.refresh(0, 0, y-2, 0, y, x)
+
while True:
- key = self.__screen.getch()
+ key = screen.getch()
if validKeys.has_key(key):
result = validKeys[key]
break
- if self.__currentForm: # repaint status line of form
- self.__currentForm.statusMessage(None)
+ if self.__current_form: # repaint status line of form
+ self.__current_form.statusMessage(None)
return result
@@ -271,6 +284,7 @@
def _ui_show_error_(self, message):
+ assert gDebug(2, "Error: %s" % message)
self.showMessage(message, 'Error', False)
# -------------------------------------------------------------------------
@@ -299,8 +313,8 @@
@return: the selected option (dict-value) or None if cancelled
"""
- if self.__currentForm:
- (left, top, right, bottom) = self.__currentForm.getCanvas()
+ if self.__current_form:
+ (left, top, right, bottom) = self.__current_form.getCanvas()
else:
(right, bottom) = self.__screen.getmaxyx()
left = top = 0
@@ -329,8 +343,8 @@
def _getInput(self, title, fields, cancel=True):
- if self.__currentForm:
- (left, top, right, bottom) = self.__currentForm.getCanvas()
+ if self.__current_form:
+ (left, top, right, bottom) = self.__current_form.getCanvas()
else:
(right, bottom) = self.__screen.getmaxyx()
left = top = 0
@@ -345,7 +359,7 @@
# Helper method for forms to get screen size
# -------------------------------------------------------------------------
- def screenSize(self):
+ def screen_size(self):
(y, x) = self.__screen.getmaxyx()
return (x, y)
Modified: trunk/gnue-forms/src/uidrivers/curses/widgets/_base.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/curses/widgets/_base.py 2006-11-14
08:24:43 UTC (rev 9038)
+++ trunk/gnue-forms/src/uidrivers/curses/widgets/_base.py 2006-11-14
10:25:06 UTC (rev 9039)
@@ -31,60 +31,60 @@
class UIHelper (UIWidget):
- # ---------------------------------------------------------------------------
- # Initialize
- # ---------------------------------------------------------------------------
+ # -------------------------------------------------------------------------
+ # Initialize
+ # -------------------------------------------------------------------------
- def __init__ (self, event):
+ def __init__ (self, event):
- UIWidget.__init__ (self, event)
+ UIWidget.__init__ (self, event)
- # should go in base uidriver
- self._parent = event.parent
- self._x = self._gfObject ['Char:x']
- self._y = self._gfObject ['Char:y']
+ # should go in base uidriver
+ self._parent = event.parent
+ self._x = self._gfObject ['Char:x']
+ self._y = self._gfObject ['Char:y']
- # ---------------------------------------------------------------------------
- # Initialize widget
- # ---------------------------------------------------------------------------
+ # -------------------------------------------------------------------------
+ # Initialize widget
+ # -------------------------------------------------------------------------
- def _create_widget_(self, event, spacer):
+ def _create_widget_(self, event, spacer):
- # should go in base uidriver
- self._init (spacer)
+ # should go in base uidriver
+ self._init (spacer)
- # ---------------------------------------------------------------------------
- # Focus handling
- # ---------------------------------------------------------------------------
+ # -------------------------------------------------------------------------
+ # Focus handling
+ # -------------------------------------------------------------------------
- def _ui_set_focus_(self, index):
+ def _ui_set_focus_(self, index):
- self._uiDriver._focus_widget = self
- self._getFocus (index)
+ self._uiDriver._focus_widget = self
+ self._getFocus (index)
- # ---------------------------------------------------------------------------
+ # -------------------------------------------------------------------------
- def _ui_focus_in_(self, index):
+ def _ui_focus_in_(self, index):
- pass
+ pass
- # ---------------------------------------------------------------------------
+ # -------------------------------------------------------------------------
- def _ui_focus_out_(self, index):
+ def _ui_focus_out_(self, index):
- self._lose_focus (index)
+ self._lose_focus (index)
- # ---------------------------------------------------------------------------
- # Set text for widget
- # ---------------------------------------------------------------------------
+ # -------------------------------------------------------------------------
+ # Set text for widget
+ # -------------------------------------------------------------------------
- def _setText (self, index, text, attr, selection = None):
+ def _setText (self, index, text, attr, selection = None):
- if selection:
- (s1, s2) = selection
- self._parent.write (self._x, self._y + index, text[:s1], attr)
- self._parent.write (self._x + s1, self._y + index, text[s1:s2],
- attr + curses.A_STANDOUT)
- self._parent.write (self._x + s2, self._y + index, text[s2:], attr)
- else:
- self._parent.write (self._x, self._y + index, text, attr)
+ if selection:
+ (s1, s2) = selection
+ self._parent.write (self._x, self._y + index, text[:s1], attr)
+ self._parent.write (self._x + s1, self._y + index, text[s1:s2],
+ attr + curses.A_STANDOUT)
+ self._parent.write (self._x + s2, self._y + index, text[s2:], attr)
+ else:
+ self._parent.write (self._x, self._y + index, text, attr)
Modified: trunk/gnue-forms/src/uidrivers/curses/widgets/entry.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/curses/widgets/entry.py 2006-11-14
08:24:43 UTC (rev 9038)
+++ trunk/gnue-forms/src/uidrivers/curses/widgets/entry.py 2006-11-14
10:25:06 UTC (rev 9039)
@@ -345,7 +345,9 @@
attr = self.__getAttr (index)
+ gDebug(2, "NAME %s: %s (%s)" % (self._gfObject.name, attr, text))
self._setText (index, text, attr, self.__selection [index])
+ gDebug(2, "NAME %s: %s (done)" % (self._gfObject.name, attr))
# ---------------------------------------------------------------------------
@@ -355,14 +357,19 @@
def __getAttr (self, index):
if self.__style == 'label':
- attr = self._uiDriver.attr ['background']
- elif not self.__enabled [index]:
- attr = self._uiDriver.attr ['disabled']
+ attr = self._uiDriver.attr['background']
+ name = 'background'
+ elif not self.__enabled[index]:
+ attr = self._uiDriver.attr['disabled']
+ name = 'disabled'
elif index == self.__focusIndex:
- attr = self._uiDriver.attr ['focusentry']
+ attr = self._uiDriver.attr['focusentry']
+ name = 'focusentry'
else:
- attr = self._uiDriver.attr ['entry']
+ attr = self._uiDriver.attr['entry']
+ name = 'entry'
+ gDebug(2, "__getAttr(%s) = %s" % (name, attr))
return attr
Modified: trunk/gnue-forms/src/uidrivers/curses/widgets/form.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/curses/widgets/form.py 2006-11-14
08:24:43 UTC (rev 9038)
+++ trunk/gnue-forms/src/uidrivers/curses/widgets/form.py 2006-11-14
10:25:06 UTC (rev 9039)
@@ -61,7 +61,7 @@
def create_widget (self, event, spacer):
- (x, y) = event.interface.screenSize ()
+ (x, y) = event.interface.screen_size ()
self.__window = curses.newpad (y, x)
self.__window.keypad (1)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnue] r9039 - in trunk/gnue-forms/src/uidrivers/curses: . widgets,
johannes <=