commit-gnue
[Top][All Lists]
Advanced

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

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


From: johannes
Subject: [gnue] r9180 - trunk/gnue-forms/src/uidrivers/curses/widgets
Date: Wed, 20 Dec 2006 02:09:41 -0600 (CST)

Author: johannes
Date: 2006-12-20 02:09:40 -0600 (Wed, 20 Dec 2006)
New Revision: 9180

Modified:
   trunk/gnue-forms/src/uidrivers/curses/widgets/grid.py
Log:
Grid get additional rows as the get more space available to the control


Modified: trunk/gnue-forms/src/uidrivers/curses/widgets/grid.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/curses/widgets/grid.py       2006-12-19 
15:54:55 UTC (rev 9179)
+++ trunk/gnue-forms/src/uidrivers/curses/widgets/grid.py       2006-12-20 
08:09:40 UTC (rev 9180)
@@ -83,10 +83,18 @@
         self.height = height
 
         # The header rows are not available to the grid's children
-        i_height = height - len(self._children)
+        i_height = num_recs = height - len(self._children)
 
         self._repaint_()
 
+        if num_recs > self.__visible:
+            self.__add_new_records(num_recs - self.__visible)
+            self._gfObject._event_rows_changed(self.__visible)
+
+        elif num_recs < self.__visible:
+            self.__hide_records(self.__visible - num_recs)
+            self._gfObject._event_rows_changed(self.__visible)
+
         for (row, child) in enumerate(self._children):
             child.left = self.left
             child.top = self.top + row
@@ -121,6 +129,53 @@
                     self._uiDriver.attr['background'])
 
 
+    # -------------------------------------------------------------------------
+    # Add new rows to the grid
+    # -------------------------------------------------------------------------
+
+    def __add_new_records(self, num_recs):
+
+        for index in range(num_recs):
+            record = self.__visible + index
+            if record >= self.__max:
+                self.walk(self.__child_add_walker, record)
+                self.__max += 1
+            else:
+                self.__change_visibility(record, True)
+
+        self.__visible += num_recs
+
+
+    # -------------------------------------------------------------------------
+    # Create all child widgets for a new row
+    # -------------------------------------------------------------------------
+
+    def __child_add_walker(self, item, spacer):
+
+        if item != self:
+            widget = item.create_widget(item._creationEvent, spacer)
+            item.widgets.append(widget)
+
+
+    # -------------------------------------------------------------------------
+    # Show or hide grid lines
+    # -------------------------------------------------------------------------
+
+    def __change_visibility(self, record, state):
+        pass
+
+
+    # -------------------------------------------------------------------------
+    # Hide a given number of rows
+    # -------------------------------------------------------------------------
+
+    def __hide_records(self, num_recs):
+
+        for index in range(num_recs):
+            self.__change_visibility(self.__visible-1, False)
+            self.__visible -= 1
+
+
 # =============================================================================
 # Configuration data
 # =============================================================================





reply via email to

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