Author: reinhard Date: 2009-10-26 16:19:19 -0500 (Mon, 26 Oct 2009) New Revision: 10007
Modified: trunk/gnue-forms/src/GFObjects/GFTabStop.py trunk/gnue-forms/src/uidrivers/curses/widgets/_base.py trunk/gnue-forms/src/uidrivers/gtk2/widgets/_base.py trunk/gnue-forms/src/uidrivers/html/widgets/_base.py trunk/gnue-forms/src/uidrivers/qt3/widgets/_base.py trunk/gnue-forms/src/uidrivers/qt4/widgets/_base.py trunk/gnue-forms/src/uidrivers/win32/widgets/_base.py trunk/gnue-forms/src/uidrivers/wx26/widgets/_base.py trunk/gnue-forms/src/uidrivers/wx26/widgets/entry.py Log: If a grid contains an entry of style "label", highlight the current record. This makes it possible to use the grid much like a listbox with several columns, except that the labels in the grid cannot receive the focus. Currently only implemented for wx26. Modified: trunk/gnue-forms/src/GFObjects/GFTabStop.py =================================================================== --- trunk/gnue-forms/src/GFObjects/GFTabStop.py 2009-10-25 15:37:02 UTC (rev 10006) +++ trunk/gnue-forms/src/GFObjects/GFTabStop.py 2009-10-26 21:19:19 UTC (rev 10007) @@ -261,6 +261,9 @@ # Set widgets to editable or non-editable self.__update_editable(refresh_start) + # Let the marker for the current row in grids follow. + self.ui_set_current_row() + finally: # If this was the currently focused widget, move the focus along if self._form.get_focus_object() is self: @@ -415,7 +418,20 @@ self.uiWidget._ui_focus_out_(self._visibleIndex) + # ------------------------------------------------------------------------- + def ui_set_current_row(self): + """ + Notify the UI widget about the row on screen containing the current + record. + """ + + if self.__current_row_enabled: + self.uiWidget._ui_set_current_row_(self._visibleIndex) + else: + self.uiWidget._ui_set_current_row_(-1) + + # ============================================================================= # Base class for all widgets bound to a field # ============================================================================= Modified: trunk/gnue-forms/src/uidrivers/curses/widgets/_base.py =================================================================== --- trunk/gnue-forms/src/uidrivers/curses/widgets/_base.py 2009-10-25 15:37:02 UTC (rev 10006) +++ trunk/gnue-forms/src/uidrivers/curses/widgets/_base.py 2009-10-26 21:19:19 UTC (rev 10007) @@ -135,7 +135,13 @@ self._call_widget_(index, '_ui_focus_out_') self.__focus_index = None + # ------------------------------------------------------------------------- + def _ui_set_current_row_(self, index): + + pass + + # ------------------------------------------------------------------------- # Set text for widget # ------------------------------------------------------------------------- Modified: trunk/gnue-forms/src/uidrivers/gtk2/widgets/_base.py =================================================================== --- trunk/gnue-forms/src/uidrivers/gtk2/widgets/_base.py 2009-10-25 15:37:02 UTC (rev 10006) +++ trunk/gnue-forms/src/uidrivers/gtk2/widgets/_base.py 2009-10-26 21:19:19 UTC (rev 10007) @@ -218,7 +218,13 @@ if isinstance (item, gtk.Entry): item.select_region (0,0) + # ------------------------------------------------------------------------- + def _ui_set_current_row_(self, index): + + pass + + # --------------------------------------------------------------------------- # Set the value of a widget # --------------------------------------------------------------------------- Modified: trunk/gnue-forms/src/uidrivers/html/widgets/_base.py =================================================================== --- trunk/gnue-forms/src/uidrivers/html/widgets/_base.py 2009-10-25 15:37:02 UTC (rev 10006) +++ trunk/gnue-forms/src/uidrivers/html/widgets/_base.py 2009-10-26 21:19:19 UTC (rev 10007) @@ -149,7 +149,13 @@ widget = self.widgets[index] assert gDebug (6, "Lose focus: %s" % widget) + # ------------------------------------------------------------------------- + def _ui_set_current_row_(self, index): + + pass + + # --------------------------------------------------------------------------- # Set the value of a widget # --------------------------------------------------------------------------- Modified: trunk/gnue-forms/src/uidrivers/qt3/widgets/_base.py =================================================================== --- trunk/gnue-forms/src/uidrivers/qt3/widgets/_base.py 2009-10-25 15:37:02 UTC (rev 10006) +++ trunk/gnue-forms/src/uidrivers/qt3/widgets/_base.py 2009-10-26 21:19:19 UTC (rev 10007) @@ -81,8 +81,14 @@ label.show() widget.hide() + # ------------------------------------------------------------------------- + def _ui_set_current_row_(self, index): + + pass + + # ============================================================================= # Base class for H/V-Boxes in a managed layout # ============================================================================= Modified: trunk/gnue-forms/src/uidrivers/qt4/widgets/_base.py =================================================================== --- trunk/gnue-forms/src/uidrivers/qt4/widgets/_base.py 2009-10-25 15:37:02 UTC (rev 10006) +++ trunk/gnue-forms/src/uidrivers/qt4/widgets/_base.py 2009-10-26 21:19:19 UTC (rev 10007) @@ -81,8 +81,14 @@ label.show() widget.hide() + # ------------------------------------------------------------------------- + def _ui_set_current_row_(self, index): + + pass + + # ============================================================================= # Base class for H/V-Boxes in a managed layout # ============================================================================= Modified: trunk/gnue-forms/src/uidrivers/win32/widgets/_base.py =================================================================== --- trunk/gnue-forms/src/uidrivers/win32/widgets/_base.py 2009-10-25 15:37:02 UTC (rev 10006) +++ trunk/gnue-forms/src/uidrivers/win32/widgets/_base.py 2009-10-26 21:19:19 UTC (rev 10007) @@ -732,6 +732,9 @@ # If we are in a grid, exchange entry widget with the label assert gDebug(6, "_ui_focus_out_ not implemented for win32 driver yet") + def _ui_set_current_row_(self, index): + pass + def _ui_set_value_(self, index, value): widget = self.widgets[index] widget.SetValue(textEncode(value)) Modified: trunk/gnue-forms/src/uidrivers/wx26/widgets/_base.py =================================================================== --- trunk/gnue-forms/src/uidrivers/wx26/widgets/_base.py 2009-10-25 15:37:02 UTC (rev 10006) +++ trunk/gnue-forms/src/uidrivers/wx26/widgets/_base.py 2009-10-26 21:19:19 UTC (rev 10007) @@ -164,7 +164,13 @@ widget._gnue_label_.Show() widget.GetContainingSizer().Layout() + # ------------------------------------------------------------------------- + def _ui_set_current_row_(self, index): + + pass + + # ------------------------------------------------------------------------- # Add a widget into a vertical box sizer # ------------------------------------------------------------------------- Modified: trunk/gnue-forms/src/uidrivers/wx26/widgets/entry.py =================================================================== --- trunk/gnue-forms/src/uidrivers/wx26/widgets/entry.py 2009-10-25 15:37:02 UTC (rev 10006) +++ trunk/gnue-forms/src/uidrivers/wx26/widgets/entry.py 2009-10-26 21:19:19 UTC (rev 10007) @@ -69,6 +69,9 @@ if self.in_grid: self.widget._gnue_label_ = self.label + self.__current_row = None + self.__current_row_color_save = None + # We return the entry object here, since we will bind events to it # later return self.widget @@ -632,6 +635,39 @@ # ------------------------------------------------------------------------- + # Mark the current row for label style entries + # ------------------------------------------------------------------------- + + def _ui_set_current_row_(self, index): + + # If we are a label in a grid, change the background color. + if self.in_grid and self._gfObject.style.lower() == 'label': + # Reset old current row to normal color. + if self.__current_row is not None: + widget = self.widgets[self.__current_row] + widget.SetForegroundColour(wx.NullColour) + widget._gnue_label_.SetForegroundColour(wx.NullColour) + widget.GetParent().SetBackgroundColour( + self.__current_row_color_save) + + # Set new current row to specific color. + if index == -1: + self.__current_row = None + self.__current_row_color_save = None + else: + self.__current_row = index + widget = self.widgets[index] + self.__current_row_color_save = \ + widget.GetParent().GetBackgroundColour() + widget.SetForegroundColour( + wx.SystemSettings_GetColour(wx.SYS_COLOUR_HIGHLIGHTTEXT)) + widget._gnue_label_.SetForegroundColour( + wx.SystemSettings_GetColour(wx.SYS_COLOUR_HIGHLIGHTTEXT)) + widget.GetParent().SetBackgroundColour( + wx.SystemSettings_GetColour(wx.SYS_COLOUR_HIGHLIGHT)) + + + # ------------------------------------------------------------------------- # Get the minimum size of a widget # ------------------------------------------------------------------------- _______________________________________________ commit-gnue mailing list commit-gnue@gnu.org http://lists.gnu.org/mailman/listinfo/commit-gnue