commit-gnue
[Top][All Lists]
Advanced

[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)
 





reply via email to

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