commit-gnue
[Top][All Lists]
Advanced

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

[gnue] r8647 - trunk/gnue-forms/src/uidrivers/wx26/widgets


From: johannes
Subject: [gnue] r8647 - trunk/gnue-forms/src/uidrivers/wx26/widgets
Date: Mon, 4 Sep 2006 09:02:28 -0500 (CDT)

Author: johannes
Date: 2006-09-04 09:02:28 -0500 (Mon, 04 Sep 2006)
New Revision: 8647

Modified:
   trunk/gnue-forms/src/uidrivers/wx26/widgets/grid.py
Log:
Add a scrollbar to a grid automatically (still needs refinement)


Modified: trunk/gnue-forms/src/uidrivers/wx26/widgets/grid.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/wx26/widgets/grid.py 2006-08-31 14:51:24 UTC 
(rev 8646)
+++ trunk/gnue-forms/src/uidrivers/wx26/widgets/grid.py 2006-09-04 14:02:28 UTC 
(rev 8647)
@@ -79,9 +79,27 @@
         self.widget.Bind(wx.EVT_SIZE, self.__on_size)
         self.widget.Bind(wx.EVT_MOUSEWHEEL, self.__on_mousewheel)
 
-        self.widget.SetSizer(wx.GridBagSizer())
-        self._container = self.widget
+        inner = wx.BoxSizer(wx.HORIZONTAL)
+        self.widget.SetSizer(inner)
 
+        self._container = wx.Panel(self.widget, -1)
+        self._container.SetSizer(wx.GridBagSizer())
+
+        inner.Add(self._container, 1, wx.EXPAND | wx.ALL, 3)
+
+        self.scroll = wx.ScrollBar(self.widget, -1, style=wx.SB_VERTICAL)
+        inner.Add(self.scroll, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 3)
+
+        block = self._gfObject._block
+
+        crec = block._currentRecord
+        recs = block._recordCount
+        self.pg_size = self._gfObject.rows
+        block.register_scrollbar(self)
+
+        self.scroll.Bind(wx.EVT_SCROLL, self.__on_scroll)
+        self.do_adjust_scrollbar(crec, recs)
+
         self._max = self._gfObject.rows
         self._visible = self._max
 
@@ -90,7 +108,7 @@
 
         owner.add_widgets(self, spacer)
 
-        return self._container.GetSizer()
+        return None
 
 
     # -------------------------------------------------------------------------
@@ -116,7 +134,7 @@
 
         for clx in colnum:
             sizer.AddGrowableCol(clx)
-            pnl = wx.Panel(self.widget, -1, style=wx.RAISED_BORDER)
+            pnl = wx.Panel(self._container, -1, style=wx.RAISED_BORDER)
             vbx = wx.BoxSizer(wx.VERTICAL)
             pnl.SetSizer(vbx)
 
@@ -190,14 +208,19 @@
         forward = event.GetWheelRotation() < 0
         block = self._gfObject.get_block()
 
-        if self._form._currentBlock != block:
-            # FIXME: this does not look like a good solution, does it?
-            self._request('FOCUS', data=block._entryList[0])
-            return
+        delta = -1
+        if forward:
+            delta = 1
+        else:
+            delta = -1
+        block._event_scroll_delta(delta)
 
-        self._request(['PREVRECORD', 'NEXTRECORD'][forward])
 
+    # -------------------------------------------------------------------------
 
+    def __on_scroll(self, event):
+        self._gfObject._block._event_scroll_to_record(event.GetPosition())
+        event.Skip()
 
     # -------------------------------------------------------------------------
     # Add new records to the grid (after resizing it)
@@ -279,7 +302,14 @@
 
         item._gfObject._rows = self._visible
 
+    def do_adjust_scrollbar(self, position, count):
+        """
+        Adjust the thumb-position and the number of rows of the scrollbar
+        """
+        self.scroll.SetScrollbar(position, self.pg_size, count,
+                        self.pg_size-1, True)
 
+
 # =============================================================================
 # Configuration data
 # =============================================================================





reply via email to

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