Author: reinhard Date: 2009-12-09 11:27:09 -0600 (Wed, 09 Dec 2009) New Revision: 10107
Modified: trunk/gnue-forms/src/GFForm.py trunk/gnue-forms/src/GFObjects/GFButton.py trunk/gnue-forms/src/GFObjects/GFEntry.py trunk/gnue-forms/src/GFObjects/GFField.py trunk/gnue-forms/src/GFObjects/GFTabStop.py trunk/gnue-forms/src/uidrivers/curses/widgets/entry.py trunk/gnue-forms/src/uidrivers/qt3/widgets/entry.py trunk/gnue-forms/src/uidrivers/qt3/widgets/image.py trunk/gnue-forms/src/uidrivers/qt4/widgets/entry.py trunk/gnue-forms/src/uidrivers/qt4/widgets/image.py trunk/gnue-forms/src/uidrivers/wx/widgets/entry.py trunk/gnue-forms/src/uidrivers/wx/widgets/image.py Log: Disable entries when they are not editable, since this is what users are used to. Disable buttons in filter mode. Modified: trunk/gnue-forms/src/GFForm.py =================================================================== --- trunk/gnue-forms/src/GFForm.py 2009-12-09 16:27:29 UTC (rev 10106) +++ trunk/gnue-forms/src/GFForm.py 2009-12-09 17:27:09 UTC (rev 10107) @@ -92,6 +92,9 @@ # Dictionary to locate actions self._actions = {} + # Buttons on this form + self._buttons = [] + # Dictionary with all the subforms self.__subforms = {} @@ -1286,6 +1289,11 @@ for block in self._logic._blockList: block.init_filter() + # Update enabled/disabled status for all buttons (in this case: + # disable all buttons) + for button in self._buttons: + button.update_status() + self.status_message(u_('Enter your filter criteria.')) finally: self.beginEditing() @@ -1313,6 +1321,11 @@ for block in self._logic._blockList: block.change_filter() + # Update enabled/disabled status for all buttons (in this case: + # disable all buttons) + for button in self._buttons: + button.update_status() + self.status_message(u_('Enter your filter criteria.')) finally: self.beginEditing() @@ -1332,6 +1345,10 @@ for block in self._logic._blockList: block.discard_filter() + # Update enabled/disabled status for all buttons + for button in self._buttons: + button.update_status() + self.status_message(u_('Query canceled.')) finally: if self._currentBlock is not None: @@ -1368,6 +1385,10 @@ for block in self._logic._blockList: block.mode = "normal" + # Update enabled/disabled status for all buttons + for button in self._buttons: + button.update_status() + for block in self._logic._blockList: block.apply_filter() Modified: trunk/gnue-forms/src/GFObjects/GFButton.py =================================================================== --- trunk/gnue-forms/src/GFObjects/GFButton.py 2009-12-09 16:27:29 UTC (rev 10106) +++ trunk/gnue-forms/src/GFObjects/GFButton.py 2009-12-09 17:27:09 UTC (rev 10107) @@ -63,6 +63,8 @@ GFTabStop._phase_1_init_(self) + self._form._buttons.append(self) + if self._block: self._block._entryList.append(self) @@ -78,6 +80,22 @@ # ------------------------------------------------------------------------- + # Determine whether this widget is enabled or disabled + # ------------------------------------------------------------------------- + + def _is_enabled_(self, index): + """ + Return True if the widget should be enabled, False if it should be + disabled. + """ + + if not GFTabStop._is_enabled_(self, index): + return False + else: + return not self._form.in_filter_mode() + + + # ------------------------------------------------------------------------- # Fire the trigger associated with the button from outside GF # ------------------------------------------------------------------------- Modified: trunk/gnue-forms/src/GFObjects/GFEntry.py =================================================================== --- trunk/gnue-forms/src/GFObjects/GFEntry.py 2009-12-09 16:27:29 UTC (rev 10106) +++ trunk/gnue-forms/src/GFObjects/GFEntry.py 2009-12-09 17:27:09 UTC (rev 10107) @@ -25,7 +25,7 @@ The primary data entry widget in forms """ -from gnue.forms.GFObjects.GFTabStop import GFFieldBound +from gnue.forms.GFObjects.GFTabStop import GFTabStop, GFFieldBound # ============================================================================= # Class for data entry widgets @@ -106,6 +106,24 @@ # ------------------------------------------------------------------------- + # Determine whether this widget is enabled or disabled + # ------------------------------------------------------------------------- + + def _is_enabled_(self, index): + """ + Return True if the widget should be enabled, False if it should be + disabled. + """ + + # "label" style entries don't get disabled when the attached field is + # not editable. + if self.style == 'label': + return GFTabStop._is_enabled_(self, index) + else: + return GFFieldBound._is_enabled_(self, index) + + + # ------------------------------------------------------------------------- # Indicate whether this widget makes use of the separate label column # ------------------------------------------------------------------------- Modified: trunk/gnue-forms/src/GFObjects/GFField.py =================================================================== --- trunk/gnue-forms/src/GFObjects/GFField.py 2009-12-09 16:27:29 UTC (rev 10106) +++ trunk/gnue-forms/src/GFObjects/GFField.py 2009-12-09 17:27:09 UTC (rev 10107) @@ -353,7 +353,7 @@ if value in ['Y', 'N', 'null', 'new', 'update']: self.editable = value for entry in self._entryList: - entry.update_editable() + entry.update_status() else: raise InvalidPropertyValueError('editable', value) Modified: trunk/gnue-forms/src/GFObjects/GFTabStop.py =================================================================== --- trunk/gnue-forms/src/GFObjects/GFTabStop.py 2009-12-09 16:27:29 UTC (rev 10106) +++ trunk/gnue-forms/src/GFObjects/GFTabStop.py 2009-12-09 17:27:09 UTC (rev 10107) @@ -49,6 +49,7 @@ # Attributes # ------------------------------------------------------------------------- + enabled = True navigable = False # ------------------------------------------------------------------------- @@ -112,7 +113,9 @@ if self._block: self._block._entryList.append(self) + self.__last_enabled_row = self._rows - 1 + # ------------------------------------------------------------------------- # UI events (called from UIEntry/UIButton) # ------------------------------------------------------------------------- @@ -284,7 +287,7 @@ # Enable rows if necessary for i in range(self.__last_enabled_row+1, last_enabled_row+1): - self.uiWidget._ui__set_enabled_(i, False) + self.uiWidget._ui_set_enabled_(i, False) self.__last_enabled_row = last_enabled_row @@ -309,8 +312,9 @@ if isinstance(self, GFFieldBound) and refresh_start is not None: self.refresh_ui(refresh_start, self._rows - 1) + if refresh_start is not None: # Set widgets to editable or non-editable - self.__update_editable(refresh_start) + self.__update_status(refresh_start) # Let the marker for the current row in grids follow. self.ui_set_current_row() @@ -329,26 +333,38 @@ # Set the widgets to editable or non-editable # ------------------------------------------------------------------------- - def update_editable(self): + def update_status(self): """ - Update the editable state of this entry. + Update the enabled/disabled state of this entry. This function is called by the field if the editable state of the field is changed by a trigger. """ - self.__update_editable(0) + self.__update_status(0) # ------------------------------------------------------------------------- - def __update_editable(self, refresh_start): + def __update_status(self, refresh_start): for index in range(refresh_start, self.__last_enabled_row + 1): - offset = index - self._visibleIndex - self.uiWidget._ui_set_editable_(index, - self._field.is_editable(offset)) + self.uiWidget._ui_set_enabled_(index, self._is_enabled_(index)) # ------------------------------------------------------------------------- + # Determine whether this widget is enabled or disabled + # ------------------------------------------------------------------------- + + def _is_enabled_(self, index): + """ + Return True if the widget should be enabled, False if it should be + disabled. + """ + + # Normal case: user setting. + return self.enabled + + + # ------------------------------------------------------------------------- # Find out whether this control is navigable # ------------------------------------------------------------------------- @@ -555,6 +571,23 @@ # ------------------------------------------------------------------------- + # Determine whether this widget is enabled or disabled + # ------------------------------------------------------------------------- + + def _is_enabled_(self, index): + """ + Return True if the widget should be enabled, False if it should be + disabled. + """ + + if not GFTabStop._is_enabled_(self, index): + return False + else: + offset = index - self._visibleIndex + return self._field.is_editable(offset) + + + # ------------------------------------------------------------------------- # UI events (called from UIEntry) # ------------------------------------------------------------------------- Modified: trunk/gnue-forms/src/uidrivers/curses/widgets/entry.py =================================================================== --- trunk/gnue-forms/src/uidrivers/curses/widgets/entry.py 2009-12-09 16:27:29 UTC (rev 10106) +++ trunk/gnue-forms/src/uidrivers/curses/widgets/entry.py 2009-12-09 17:27:09 UTC (rev 10107) @@ -108,16 +108,6 @@ # ------------------------------------------------------------------------- - # Set "editable" status for this widget - # ------------------------------------------------------------------------- - - def _ui_set_editable_(self, index, editable): - - # Not much we can do here. - pass - - - # ------------------------------------------------------------------------- # Set value for entry # ------------------------------------------------------------------------- Modified: trunk/gnue-forms/src/uidrivers/qt3/widgets/entry.py =================================================================== --- trunk/gnue-forms/src/uidrivers/qt3/widgets/entry.py 2009-12-09 16:27:29 UTC (rev 10106) +++ trunk/gnue-forms/src/uidrivers/qt3/widgets/entry.py 2009-12-09 17:27:09 UTC (rev 10107) @@ -151,16 +151,6 @@ # ------------------------------------------------------------------------- - # Set "editable" status for this widget - # ------------------------------------------------------------------------- - - def _ui_set_editable_(self, index, editable): - - # TODO: grey out entry, disallow changes if possible. - pass - - - # ------------------------------------------------------------------------- # Set value and cursor position # ------------------------------------------------------------------------- Modified: trunk/gnue-forms/src/uidrivers/qt3/widgets/image.py =================================================================== --- trunk/gnue-forms/src/uidrivers/qt3/widgets/image.py 2009-12-09 16:27:29 UTC (rev 10106) +++ trunk/gnue-forms/src/uidrivers/qt3/widgets/image.py 2009-12-09 17:27:09 UTC (rev 10107) @@ -95,15 +95,6 @@ return (width, height) - # ------------------------------------------------------------------------- - # Set "editable" status for this widget - # ------------------------------------------------------------------------- - - def _ui_set_editable_(self, index, editable): - - pass - - # ------------------------------------------------------------------------ # Set the widget's PIL # ------------------------------------------------------------------------ Modified: trunk/gnue-forms/src/uidrivers/qt4/widgets/entry.py =================================================================== --- trunk/gnue-forms/src/uidrivers/qt4/widgets/entry.py 2009-12-09 16:27:29 UTC (rev 10106) +++ trunk/gnue-forms/src/uidrivers/qt4/widgets/entry.py 2009-12-09 17:27:09 UTC (rev 10107) @@ -143,16 +143,6 @@ # ------------------------------------------------------------------------- - # Set "editable" status for this widget - # ------------------------------------------------------------------------- - - def _ui_set_editable_(self, index, editable): - - # TODO: grey out entry, disallow changes if possible. - pass - - - # ------------------------------------------------------------------------- # Set value and cursor position # ------------------------------------------------------------------------- Modified: trunk/gnue-forms/src/uidrivers/qt4/widgets/image.py =================================================================== --- trunk/gnue-forms/src/uidrivers/qt4/widgets/image.py 2009-12-09 16:27:29 UTC (rev 10106) +++ trunk/gnue-forms/src/uidrivers/qt4/widgets/image.py 2009-12-09 17:27:09 UTC (rev 10107) @@ -95,15 +95,6 @@ return (width, height) - # ------------------------------------------------------------------------- - # Set "editable" status for this widget - # ------------------------------------------------------------------------- - - def _ui_set_editable_(self, index, editable): - - pass - - # ------------------------------------------------------------------------ # Set the widget's PIL # ------------------------------------------------------------------------ Modified: trunk/gnue-forms/src/uidrivers/wx/widgets/entry.py =================================================================== --- trunk/gnue-forms/src/uidrivers/wx/widgets/entry.py 2009-12-09 16:27:29 UTC (rev 10106) +++ trunk/gnue-forms/src/uidrivers/wx/widgets/entry.py 2009-12-09 17:27:09 UTC (rev 10107) @@ -453,29 +453,6 @@ # ------------------------------------------------------------------------- - # Set "editable" status for this widget - # ------------------------------------------------------------------------- - - def _ui_set_editable_(self, index, editable): - - # Simple text controls can be explicitly set to non-editable, so they - # don't accept keyboard input. - if isinstance(self.widgets[index], wx.TextCtrl): - self.widgets[index].SetEditable(editable) - - # We set the background color to grey for all kinds of widgets if they - # are not editable, so the user can see some difference. - if not 'wxMac' in wx.PlatformInfo: - if editable: - colour = wx.NullColour - else: - colour = wx.SystemSettings.GetColour(wx.SYS_COLOUR_BTNFACE) - - self.widgets[index].SetBackgroundColour(colour) - self.widgets[index].Refresh() - - - # ------------------------------------------------------------------------- # Set the value of a widget # ------------------------------------------------------------------------- Modified: trunk/gnue-forms/src/uidrivers/wx/widgets/image.py =================================================================== --- trunk/gnue-forms/src/uidrivers/wx/widgets/image.py 2009-12-09 16:27:29 UTC (rev 10106) +++ trunk/gnue-forms/src/uidrivers/wx/widgets/image.py 2009-12-09 17:27:09 UTC (rev 10107) @@ -221,15 +221,6 @@ return (width, height) - # ------------------------------------------------------------------------- - # Set "editable" status for this widget - # ------------------------------------------------------------------------- - - def _ui_set_editable_(self, index, editable): - - pass - - # ------------------------------------------------------------------------ # Set the widget's PIL # ------------------------------------------------------------------------ _______________________________________________ commit-gnue mailing list commit-gnue@gnu.org http://lists.gnu.org/mailman/listinfo/commit-gnue