[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnue] r9231 - in trunk/gnue-forms/src: GFObjects input/displayHandlers
From: |
reinhard |
Subject: |
[gnue] r9231 - in trunk/gnue-forms/src: GFObjects input/displayHandlers uidrivers/curses/widgets uidrivers/gtk2/widgets uidrivers/qt3/widgets uidrivers/win32/widgets uidrivers/wx/widgets uidrivers/wx26/widgets |
Date: |
Mon, 8 Jan 2007 17:13:42 -0600 (CST) |
Author: reinhard
Date: 2007-01-08 17:13:36 -0600 (Mon, 08 Jan 2007)
New Revision: 9231
Modified:
trunk/gnue-forms/src/GFObjects/GFBlock.py
trunk/gnue-forms/src/GFObjects/GFField.py
trunk/gnue-forms/src/GFObjects/GFTabStop.py
trunk/gnue-forms/src/input/displayHandlers/Checkbox.py
trunk/gnue-forms/src/input/displayHandlers/Cursor.py
trunk/gnue-forms/src/uidrivers/curses/widgets/entry.py
trunk/gnue-forms/src/uidrivers/gtk2/widgets/entry.py
trunk/gnue-forms/src/uidrivers/qt3/widgets/entry.py
trunk/gnue-forms/src/uidrivers/win32/widgets/entry.py
trunk/gnue-forms/src/uidrivers/wx/widgets/entry.py
trunk/gnue-forms/src/uidrivers/wx26/widgets/entry.py
trunk/gnue-forms/src/uidrivers/wx26/widgets/image.py
Log:
(Re-)implemented editable Y/N/new/update/null feature.
Modified: trunk/gnue-forms/src/GFObjects/GFBlock.py
===================================================================
--- trunk/gnue-forms/src/GFObjects/GFBlock.py 2007-01-08 18:59:17 UTC (rev
9230)
+++ trunk/gnue-forms/src/GFObjects/GFBlock.py 2007-01-08 23:13:36 UTC (rev
9231)
@@ -803,7 +803,7 @@
# Status information
# -------------------------------------------------------------------------
- def get_record_status(self):
+ def get_record_status(self, offset=0):
"""
Find out about the status of the record.
@@ -814,9 +814,12 @@
if self.__resultset is None:
return None
- rec = self.__resultset.current
- if rec is None:
+ record_number = self.__resultset.getRecordNumber() + offset
+ if record_number < 0 or \
+ record_number >= self.__resultset.getRecordCount():
return None
+ else:
+ rec = self.__resultset[record_number]
# try functions that do not depend on detail records first, because
# they are faster
Modified: trunk/gnue-forms/src/GFObjects/GFField.py
===================================================================
--- trunk/gnue-forms/src/GFObjects/GFField.py 2007-01-08 18:59:17 UTC (rev
9230)
+++ trunk/gnue-forms/src/GFObjects/GFField.py 2007-01-08 23:13:36 UTC (rev
9231)
@@ -215,23 +215,38 @@
# Determine wether a field is editable or not
# -------------------------------------------------------------------------
- def isEditable(self):
+ def is_editable(self, offset):
- mode = self._form.getCurrentMode()
-
- if mode == 'query':
+ if self._block.mode == 'query':
return self._block.queryable
elif self._form.readonly:
return False
else:
- return (mode == 'new' and self.editable in ('Y', 'new', 'null') \
- and self._block.editable in ('Y', 'new')) or \
- (mode == 'edit' and self._block.editable in ('Y', 'update')\
- and (self.editable in ('Y','update') or \
- (self.editable == 'null' and self.isEmpty())))
+ if self._block.editable == 'N':
+ return False
+ if self.editable == 'N':
+ return False
+ new = (self._block.get_record_status(offset) \
+ in ['empty', 'inserted', 'void'])
+ if self._block.editable == 'new' and not new:
+ return False
+ if self.editable == 'new' and not new:
+ return False
+
+ if self._block.editable == 'update' and new:
+ return False
+ if self.editable == 'update' and new:
+ return False
+
+ if self.editable == 'null' and self.__get_value(offset) is not
None:
+ return False
+
+ return True
+
+
# -------------------------------------------------------------------------
# Autocomplete a value for this field
# -------------------------------------------------------------------------
Modified: trunk/gnue-forms/src/GFObjects/GFTabStop.py
===================================================================
--- trunk/gnue-forms/src/GFObjects/GFTabStop.py 2007-01-08 18:59:17 UTC (rev
9230)
+++ trunk/gnue-forms/src/GFObjects/GFTabStop.py 2007-01-08 23:13:36 UTC (rev
9231)
@@ -258,6 +258,12 @@
if isinstance(self, GFFieldBound) and refresh_start is not
None:
self.refresh_ui(refresh_start, self._rows - 1)
+ # Set widgets to editable or non-editable
+ for index in range(refresh_start, last_enabled_row + 1):
+ offset = index - self._visibleIndex
+ self.uiWidget._ui_set_editable_(index,
+ self._field.is_editable(offset))
+
finally:
# If this was the currently focused widget, move the focus along
if self._form.get_focus_object() is self:
Modified: trunk/gnue-forms/src/input/displayHandlers/Checkbox.py
===================================================================
--- trunk/gnue-forms/src/input/displayHandlers/Checkbox.py 2007-01-08
18:59:17 UTC (rev 9230)
+++ trunk/gnue-forms/src/input/displayHandlers/Checkbox.py 2007-01-08
23:13:36 UTC (rev 9231)
@@ -86,6 +86,10 @@
# Set checkbox to boolean value
def __set (self, value):
if value != self.display:
+ # Don't allow any changes if we aren't editing.
+ if not self.editing:
+ self.generateRefreshEvent() # Reset old value on UI
+ return
self.display = value
self.modified = True
self.generateRefreshEvent()
@@ -104,8 +108,6 @@
# Handle requestTOGGLECHKBOX event
def handleToggleChkbox (self, event):
- if not self.editing:
- return
if event.data == None:
self.__toggle()
else:
@@ -114,7 +116,7 @@
def beginEdit(self):
- self.editing = self.field.isEditable()
+ self.editing = self.field.is_editable(0)
self.display = self.build_display(self.field.get_value(), self.editing)
self.modified = False
self._cursor = 0
Modified: trunk/gnue-forms/src/input/displayHandlers/Cursor.py
===================================================================
--- trunk/gnue-forms/src/input/displayHandlers/Cursor.py 2007-01-08
18:59:17 UTC (rev 9230)
+++ trunk/gnue-forms/src/input/displayHandlers/Cursor.py 2007-01-08
23:13:36 UTC (rev 9231)
@@ -156,7 +156,7 @@
with this display handler, and creates the string to display in the
form.
"""
- self.editing = self.field.isEditable()
+ self.editing = self.field.is_editable(0)
self.modified = False
self.display = self.build_display(self.field.get_value(), True)
self._cursor = len(self.display)
@@ -196,9 +196,6 @@
def _addText(self, event):
- if not self.editing:
- return
-
if self._selection1 is not None:
# If text is selected, then we will replace
(start, end) = self.getSelectionArea()
@@ -212,9 +209,6 @@
def _replace_text(self, event):
- if not self.editing:
- return
-
if hasattr(event, 'position'):
new_cursor = event.position
else:
@@ -226,9 +220,6 @@
def _insertTextAt(self, event):
- if not self.editing:
- return
-
self.__change_text(event.position, event.position, event.text,
event.position)
@@ -236,9 +227,6 @@
def _deleteRange(self, event):
- if not self.editing:
- return
-
self.__change_text(event.start_pos, event.end_pos, u"",
event.start_pos)
@@ -257,9 +245,6 @@
def _backspace(self, event):
- if not self.editing:
- return
-
# If there is a selection, delete the selected portion.
if self._selection1 is not None:
(start, end) = self.getSelectionArea()
@@ -284,9 +269,6 @@
def _delete(self, event):
- if not self.editing:
- return
-
# If there is a selection, delete the selected portion.
if self._selection1 is not None:
(start, end) = self.getSelectionArea()
@@ -310,6 +292,11 @@
def __change_text(self, start, end, text, new_cursor):
+ # Don't accept any changes if we aren't editing.
+ if not self.editing:
+ self.generateRefreshEvent() # reset the UI to old state.
+ return
+
# Get the text to be added forcing to specific case if necessary.
if self.field._lowercase:
text = text.lower()
Modified: trunk/gnue-forms/src/uidrivers/curses/widgets/entry.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/curses/widgets/entry.py 2007-01-08
18:59:17 UTC (rev 9230)
+++ trunk/gnue-forms/src/uidrivers/curses/widgets/entry.py 2007-01-08
23:13:36 UTC (rev 9231)
@@ -114,6 +114,16 @@
# -------------------------------------------------------------------------
+ # 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/gtk2/widgets/entry.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/gtk2/widgets/entry.py 2007-01-08
18:59:17 UTC (rev 9230)
+++ trunk/gnue-forms/src/uidrivers/gtk2/widgets/entry.py 2007-01-08
23:13:36 UTC (rev 9231)
@@ -223,6 +223,16 @@
# ---------------------------------------------------------------------------
+ # Set "editable" status for this widget
+ # ---------------------------------------------------------------------------
+
+ def _ui_set_editable_(self, index, editable):
+
+ # FIXME: grey out entry, disallow changes if possible
+ pass
+
+
+ # ---------------------------------------------------------------------------
# Set the cursor position in a widget to position
# ---------------------------------------------------------------------------
Modified: trunk/gnue-forms/src/uidrivers/qt3/widgets/entry.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/qt3/widgets/entry.py 2007-01-08 18:59:17 UTC
(rev 9230)
+++ trunk/gnue-forms/src/uidrivers/qt3/widgets/entry.py 2007-01-08 23:13:36 UTC
(rev 9231)
@@ -146,8 +146,21 @@
def _ui_disable_(self, index):
self.widgets[index].setEnabled(False)
+
# -------------------------------------------------------------------------
+ # 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
+ # -------------------------------------------------------------------------
+
def _ui_set_value_(self, index, value):
"""
This function sets the value of a widget.
Modified: trunk/gnue-forms/src/uidrivers/win32/widgets/entry.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/win32/widgets/entry.py 2007-01-08
18:59:17 UTC (rev 9230)
+++ trunk/gnue-forms/src/uidrivers/win32/widgets/entry.py 2007-01-08
23:13:36 UTC (rev 9231)
@@ -111,6 +111,16 @@
self.widgets[index].Enable(False)
+ # -------------------------------------------------------------------------
+ # Set "editable" status for this widget
+ # -------------------------------------------------------------------------
+
+ def _ui_set_editable_(self, index, editable):
+
+ # TODO: grey out entry, disallow changes if possible.
+ pass
+
+
#
---------------------------------------------------------------------------
# Clipboard and selection
#
---------------------------------------------------------------------------
Modified: trunk/gnue-forms/src/uidrivers/wx/widgets/entry.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/wx/widgets/entry.py 2007-01-08 18:59:17 UTC
(rev 9230)
+++ trunk/gnue-forms/src/uidrivers/wx/widgets/entry.py 2007-01-08 23:13:36 UTC
(rev 9231)
@@ -200,6 +200,16 @@
self.widgets[index].Enable(False)
+ # ---------------------------------------------------------------------------
+ # Set "editable" status for this widget
+ # ---------------------------------------------------------------------------
+
+ def _ui_set_editable_(self, index, editable):
+
+ # TODO: grey out entry, disallow changes if possible.
+ pass
+
+
# -------------------------------------------------------------------------
# Clipboard and selection
# -------------------------------------------------------------------------
Modified: trunk/gnue-forms/src/uidrivers/wx26/widgets/entry.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/wx26/widgets/entry.py 2007-01-08
18:59:17 UTC (rev 9230)
+++ trunk/gnue-forms/src/uidrivers/wx26/widgets/entry.py 2007-01-08
23:13:36 UTC (rev 9231)
@@ -389,6 +389,26 @@
# -------------------------------------------------------------------------
+ # 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 editable:
+ colour = wx.NullColour
+ else:
+ colour = wx.SystemSettings.GetColour(wx.SYS_COLOUR_BTNFACE)
+ self.widgets[index].SetBackgroundColour(colour)
+
+
+ # -------------------------------------------------------------------------
# Set the value of a widget
# -------------------------------------------------------------------------
Modified: trunk/gnue-forms/src/uidrivers/wx26/widgets/image.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/wx26/widgets/image.py 2007-01-08
18:59:17 UTC (rev 9230)
+++ trunk/gnue-forms/src/uidrivers/wx26/widgets/image.py 2007-01-08
23:13:36 UTC (rev 9231)
@@ -101,6 +101,15 @@
return (width, height)
+ # -------------------------------------------------------------------------
+ # Set "editable" status for this widget
+ # -------------------------------------------------------------------------
+
+ def _ui_set_editable_(self, index, editable):
+
+ pass
+
+
# ------------------------------------------------------------------------
# Set the widget's PIL
# ------------------------------------------------------------------------
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnue] r9231 - in trunk/gnue-forms/src: GFObjects input/displayHandlers uidrivers/curses/widgets uidrivers/gtk2/widgets uidrivers/qt3/widgets uidrivers/win32/widgets uidrivers/wx/widgets uidrivers/wx26/widgets,
reinhard <=