commit-gnue
[Top][All Lists]
Advanced

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

[gnue] r9121 - trunk/gnue-forms/src/uidrivers/curses/widgets


From: johannes
Subject: [gnue] r9121 - trunk/gnue-forms/src/uidrivers/curses/widgets
Date: Thu, 7 Dec 2006 08:32:32 -0600 (CST)

Author: johannes
Date: 2006-12-07 08:32:31 -0600 (Thu, 07 Dec 2006)
New Revision: 9121

Modified:
   trunk/gnue-forms/src/uidrivers/curses/widgets/_base.py
   trunk/gnue-forms/src/uidrivers/curses/widgets/box.py
   trunk/gnue-forms/src/uidrivers/curses/widgets/entry.py
   trunk/gnue-forms/src/uidrivers/curses/widgets/form.py
   trunk/gnue-forms/src/uidrivers/curses/widgets/hbox.py
   trunk/gnue-forms/src/uidrivers/curses/widgets/page.py
   trunk/gnue-forms/src/uidrivers/curses/widgets/vbox.py
Log:
Focus the current entry after building the layout, rearranged box-code


Modified: trunk/gnue-forms/src/uidrivers/curses/widgets/_base.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/curses/widgets/_base.py      2006-12-07 
09:38:12 UTC (rev 9120)
+++ trunk/gnue-forms/src/uidrivers/curses/widgets/_base.py      2006-12-07 
14:32:31 UTC (rev 9121)
@@ -25,7 +25,7 @@
 
 from gnue.forms.uidrivers._base.widgets._base import UIWidget
 
-__all__ = ['UIHelper']
+__all__ = ['UIHelper', 'box']
 
 # =============================================================================
 # Widget helper class
@@ -144,6 +144,35 @@
 
     def set_size_and_fit(self, width, height):
         """
+        Set the size (width and height) of a widget.
         """
+
         self.width = width
         self.height = height
+
+
+# =============================================================================
+# Draw a box on a given parent
+# =============================================================================
+
+def box(parent, attr, left, top, right, bottom, label=None):
+    """
+    Draw a box with the given bounds on a parent (page) having an optional
+    label.  The parent must implement a putchar method
+    """
+
+    for pos in range(left+1, right):
+        parent.putchar(pos, top, curses.ACS_HLINE, attr)
+        parent.putchar(pos, bottom, curses.ACS_HLINE, attr)
+
+        for line in range(top+1, bottom):
+            parent.putchar(left, line, curses.ACS_VLINE, attr)
+            parent.putchar(right, line, curses.ACS_VLINE, attr)
+
+        parent.putchar(left, top, curses.ACS_ULCORNER, attr)
+        parent.putchar(right, top, curses.ACS_URCORNER, attr)
+        parent.putchar(left, bottom, curses.ACS_LLCORNER, attr)
+        parent.putchar(right, bottom, curses.ACS_LRCORNER, attr)
+
+        if label is not None:
+            parent.write(left+2, top, label, attr)

Modified: trunk/gnue-forms/src/uidrivers/curses/widgets/box.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/curses/widgets/box.py        2006-12-07 
09:38:12 UTC (rev 9120)
+++ trunk/gnue-forms/src/uidrivers/curses/widgets/box.py        2006-12-07 
14:32:31 UTC (rev 9121)
@@ -23,7 +23,7 @@
 
 import curses
 
-from _base import UIHelper
+from _base import UIHelper, box
 
 __all__ = ['UIBox']
 
@@ -41,30 +41,15 @@
 
         self.width = width
         self.height = height
+        right = self.left + width - 1
+        bottom = self.top + height - 1
 
         attr = self._uiDriver.attr['background']
 
-        for pos in range(self.left+1, self.left+self.width-1):
-            self._parent.putchar(pos, self.top, curses.ACS_HLINE, attr)
-            self._parent.putchar(pos, self.top+self.height-1, curses.ACS_HLINE,
-                    attr)
+        box(self._parent, attr, self.left, self.top, right, bottom,
+                self._gfObject.label)
 
-        for line in range(self.top+1, self.top+self.height-1):
-            self._parent.putchar(self.left, line, curses.ACS_VLINE, attr)
-            self._parent.putchar(self.left+self.width-1, line,
-                    curses.ACS_VLINE, attr)
 
-        self._parent.putchar(self.left, self.top, curses.ACS_ULCORNER, attr)
-        self._parent.putchar(self.left+self.width-1, self.top,
-                curses.ACS_URCORNER, attr)
-        self._parent.putchar(self.left, self.top+self.height-1,
-                curses.ACS_LLCORNER, attr)
-        self._parent.putchar(self.left+self.width-1, self.top+self.height-1,
-                curses.ACS_LRCORNER, attr)
-
-        self._parent.write(self.left+2, self.top, self._gfObject.label, attr)
-
-
 # =============================================================================
 # Configuration data
 # =============================================================================

Modified: trunk/gnue-forms/src/uidrivers/curses/widgets/entry.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/curses/widgets/entry.py      2006-12-07 
09:38:12 UTC (rev 9120)
+++ trunk/gnue-forms/src/uidrivers/curses/widgets/entry.py      2006-12-07 
14:32:31 UTC (rev 9121)
@@ -463,6 +463,7 @@
             (x, y) = self.__cursor
             self._parent.move(self.left + x, self.top + self.__focusIndex + y)
 
+
     def set_size_and_fit(self, width, height):
 
         self.width = width

Modified: trunk/gnue-forms/src/uidrivers/curses/widgets/form.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/curses/widgets/form.py       2006-12-07 
09:38:12 UTC (rev 9120)
+++ trunk/gnue-forms/src/uidrivers/curses/widgets/form.py       2006-12-07 
14:32:31 UTC (rev 9121)
@@ -298,6 +298,7 @@
 
         self.__update_page_list()
         self.__update_status_bar()
+        self._uiDriver._focus_widget._ui_set_focus_(0)
 
 
 

Modified: trunk/gnue-forms/src/uidrivers/curses/widgets/hbox.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/curses/widgets/hbox.py       2006-12-07 
09:38:12 UTC (rev 9120)
+++ trunk/gnue-forms/src/uidrivers/curses/widgets/hbox.py       2006-12-07 
14:32:31 UTC (rev 9121)
@@ -23,7 +23,7 @@
 
 import curses
 
-from _base import UIHelper
+from _base import UIHelper, box
 
 __all__ = ['UIHBox']
 
@@ -50,23 +50,8 @@
         attr = self._uiDriver.attr['background']
 
         if self._gfObject.label:
-            for pos in range(self.left+1, right):
-                self._parent.putchar(pos, self.top, curses.ACS_HLINE, attr)
-                self._parent.putchar(pos, bottom, curses.ACS_HLINE, attr)
-
-            for line in range(self.top+1, bottom):
-                self._parent.putchar(self.left, line, curses.ACS_VLINE, attr)
-                self._parent.putchar(right, line, curses.ACS_VLINE, attr)
-
-            self._parent.putchar(self.left, self.top, curses.ACS_ULCORNER, 
attr)
-            self._parent.putchar(right, self.top, curses.ACS_URCORNER, attr)
-            self._parent.putchar(self.left, bottom, curses.ACS_LLCORNER, attr)
-            self._parent.putchar(right, bottom, curses.ACS_LRCORNER, attr)
-
-            self._parent.write(self.left+2, self.top, self._gfObject.label,
-                    attr)
-            # If there is a border around the box, all children have less space
-            # available
+            box(self._parent, attr, self.left, self.top, right, bottom,
+                    self._gfObject.label)
             width -= 2
             height -= 2
 
@@ -91,7 +76,8 @@
         # used up their minimum width
         available = width - needed
 
-        gDebug(2, "Ordered: w=%s n=%s a=%s o=%s" % (width, needed, available, 
ordered))
+        gDebug(2, "Ordered: w=%s n=%s a=%s o=%s" % (width, needed, available,
+            ordered))
 
         # First assign the minimum space required to each child
         sizes = {}

Modified: trunk/gnue-forms/src/uidrivers/curses/widgets/page.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/curses/widgets/page.py       2006-12-07 
09:38:12 UTC (rev 9120)
+++ trunk/gnue-forms/src/uidrivers/curses/widgets/page.py       2006-12-07 
14:32:31 UTC (rev 9121)
@@ -149,7 +149,8 @@
 
         if self.ready():
             try:
-                self.__window.addstr(y, x, o(text), attribute)
+                if isinstance(text, basestring):
+                    self.__window.addstr(y, x, o(text), attribute)
             except curses.error:
                 pass
 
@@ -172,6 +173,7 @@
 
     def move(self, x, y):
 
+        gDebug(2, "MOVE to %s/%s" % (x, y))
         self.__cursor = (x, y)
 
     # -------------------------------------------------------------------------

Modified: trunk/gnue-forms/src/uidrivers/curses/widgets/vbox.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/curses/widgets/vbox.py       2006-12-07 
09:38:12 UTC (rev 9120)
+++ trunk/gnue-forms/src/uidrivers/curses/widgets/vbox.py       2006-12-07 
14:32:31 UTC (rev 9121)
@@ -23,7 +23,7 @@
 
 import curses
 
-from _base import UIHelper
+from _base import UIHelper, box
 
 __all__ = ['UIVBox']
 
@@ -50,23 +50,8 @@
         attr = self._uiDriver.attr['background']
 
         if self._gfObject.label:
-            for pos in range(self.left+1, right):
-                self._parent.putchar(pos, self.top, curses.ACS_HLINE, attr)
-                self._parent.putchar(pos, bottom, curses.ACS_HLINE, attr)
-
-            for line in range(self.top+1, bottom):
-                self._parent.putchar(self.left, line, curses.ACS_VLINE, attr)
-                self._parent.putchar(right, line, curses.ACS_VLINE, attr)
-
-            self._parent.putchar(self.left, self.top, curses.ACS_ULCORNER, 
attr)
-            self._parent.putchar(right, self.top, curses.ACS_URCORNER, attr)
-            self._parent.putchar(self.left, bottom, curses.ACS_LLCORNER, attr)
-            self._parent.putchar(right, bottom, curses.ACS_LRCORNER, attr)
-
-            self._parent.write(self.left+2, self.top, self._gfObject.label,
-                    attr)
-            # If there is a border around the box, all children have less space
-            # available
+            box(self._parent, attr, self.left, self.top, right, bottom,
+                    self._gfObject.label)
             width -= 2
             height -= 2
 





reply via email to

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