[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnue] r8982 - trunk/gnue-forms/src/uidrivers/qt3/widgets
From: |
johannes |
Subject: |
[gnue] r8982 - trunk/gnue-forms/src/uidrivers/qt3/widgets |
Date: |
Tue, 7 Nov 2006 08:57:10 -0600 (CST) |
Author: johannes
Date: 2006-11-07 08:57:09 -0600 (Tue, 07 Nov 2006)
New Revision: 8982
Modified:
trunk/gnue-forms/src/uidrivers/qt3/widgets/form.py
trunk/gnue-forms/src/uidrivers/qt3/widgets/grid.py
Log:
Grid widgets can add/remove rows on resizing
Modified: trunk/gnue-forms/src/uidrivers/qt3/widgets/form.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/qt3/widgets/form.py 2006-11-06 10:23:29 UTC
(rev 8981)
+++ trunk/gnue-forms/src/uidrivers/qt3/widgets/form.py 2006-11-07 14:57:09 UTC
(rev 8982)
@@ -75,6 +75,7 @@
self._form = None
self.__status_bar = None
self.__status_fields = []
+ self.sizing_enabled = False
# -------------------------------------------------------------------------
@@ -139,6 +140,7 @@
Show the form or dialog modeless
"""
+ self.sizing_enabled = True
self.main_window.show()
self._uiDriver.hide_splash()
@@ -153,6 +155,7 @@
"""
self._uiDriver.hide_splash()
+ self.sizing_enabled = True
if isinstance(self.main_window, qt.QDialog):
self.main_window.setModal(True)
self.main_window.exec_loop()
@@ -352,6 +355,7 @@
"""
Close the window (acutally only hide it)
"""
+ self.sizing_enabled = False
self.main_window.hide()
# =============================================================================
Modified: trunk/gnue-forms/src/uidrivers/qt3/widgets/grid.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/qt3/widgets/grid.py 2006-11-06 10:23:29 UTC
(rev 8981)
+++ trunk/gnue-forms/src/uidrivers/qt3/widgets/grid.py 2006-11-07 14:57:09 UTC
(rev 8982)
@@ -69,7 +69,7 @@
hbox = qt.QHBoxLayout(self.widget, 2)
- self._container = qt.QWidget(self.widget)
+ self._container = ResizeContainer(self.widget, self)
self.scroll = qt.QScrollBar(qt.Qt.Vertical, self.widget)
hbox.addWidget(self._container, 1)
@@ -142,11 +142,121 @@
"""
Adjust the thumb-position and the number of rows of the scrollbar
"""
- # self.scroll.SetScrollbar(position, size, count, size - 1, True)
- pass
+ self.scroll.setMaxValue(count)
+ self.scroll.setPageStep(size)
+ self.scroll.setValue(position)
+ # -------------------------------------------------------------------------
+ # Add or remove records from the grid
+ # -------------------------------------------------------------------------
+
+ def update_records(self, num_recs):
+
+ if num_recs > self.__visible:
+ self.__add_new_records(num_recs - self.__visible)
+ self._gfObject._event_rows_changed(self.__visible)
+ else:
+ self.__hide_records(self.__visible - num_recs)
+ self._gfObject._event_rows_changed(self.__visible)
+
+
+ # -------------------------------------------------------------------------
+ # Add new records to the grid (after resizing it)
+ # -------------------------------------------------------------------------
+
+ 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.__change_visibility(record, True)
+ self.__max += 1
+ else:
+ self.__change_visibility(record, True)
+
+ self.__visible += num_recs
+
+ self._uiForm.main_window.updateGeometry()
+
+
+ # -------------------------------------------------------------------------
+ # Create all child-widgets
+ # -------------------------------------------------------------------------
+
+ def __child_add_walker(self, item, spacer):
+
+ if item == self:
+ return
+
+ widget = item.create_widget(item._creationEvent, spacer)
+ item.widgets.append(widget)
+
+
+ # -------------------------------------------------------------------------
+ # Show or hide grid lines
+ # -------------------------------------------------------------------------
+
+ def __change_visibility(self, record, state):
+
+ grid = self._container.layout()
+
+ for item in self._children:
+ for panel in item._columns[record]:
+ if state:
+ panel.show()
+ else:
+ panel.hide()
+
+
+ # -------------------------------------------------------------------------
+ # Hide a given number of records
+ # -------------------------------------------------------------------------
+
+ def __hide_records(self, num_recs):
+
+ for index in range(num_recs):
+ self.__change_visibility(self.__visible-1, False)
+ self.__visible -= 1
+
+ self._uiForm.main_window.updateGeometry()
+
+
# =============================================================================
+# Qt class implementing the grid-container
+# =============================================================================
+
+class ResizeContainer(qt.QWidget):
+ def __init__(self, parent, ui_grid):
+ qt.QWidget.__init__(self, parent)
+ self.ui_grid = ui_grid
+
+ def resizeEvent(self, event):
+ qt.QWidget.resizeEvent(self, event)
+
+ if not self.ui_grid._uiForm.sizing_enabled:
+ return
+
+ saved = self.ui_grid._uiForm.sizing_enabled
+ self.ui_grid._uiForm.sizing_enabled = False
+ try:
+ header = self.layout().cellGeometry(0, 0)
+ rech = 0
+ for item in self.ui_grid._children:
+ rech += max([panel.layout().minimumSize().height() \
+ for panel in item._columns[0]])
+ available = self.size().height() - header.height()
+ num_recs = available / rech
+
+ self.ui_grid.update_records(num_recs)
+
+ finally:
+ self.ui_grid._uiForm.sizing_enabled = saved
+
+
+# =============================================================================
# Configuration data
# =============================================================================
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnue] r8982 - trunk/gnue-forms/src/uidrivers/qt3/widgets,
johannes <=