[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnue] r8808 - in trunk/gnue-forms/src: . GFObjects
From: |
reinhard |
Subject: |
[gnue] r8808 - in trunk/gnue-forms/src: . GFObjects |
Date: |
Tue, 17 Oct 2006 04:25:01 -0500 (CDT) |
Author: reinhard
Date: 2006-10-17 04:25:01 -0500 (Tue, 17 Oct 2006)
New Revision: 8808
Modified:
trunk/gnue-forms/src/GFForm.py
trunk/gnue-forms/src/GFInstance.py
trunk/gnue-forms/src/GFObjects/GFBlock.py
Log:
Cleaned up beginEditing and endEditing calls for cases when field/block
validation fails.
Modified: trunk/gnue-forms/src/GFForm.py
===================================================================
--- trunk/gnue-forms/src/GFForm.py 2006-10-17 09:11:19 UTC (rev 8807)
+++ trunk/gnue-forms/src/GFForm.py 2006-10-17 09:25:01 UTC (rev 8808)
@@ -1001,13 +1001,18 @@
@param widget: entry to put focus on
"""
+
+ self.endEditing()
old_page = self._currentPage
if self._currentEntry is not None:
self._currentEntry.ui_focus_out()
- self.move_focus(widget)
- if self._currentPage != old_page:
- self.dispatchEvent('gotoPAGE', self._currentPage, _form=self);
- self._currentEntry.ui_focus_in()
+ try:
+ self.move_focus(widget)
+ if self._currentPage != old_page:
+ self.dispatchEvent('gotoPAGE', self._currentPage, _form=self);
+ finally:
+ self._currentEntry.ui_focus_in()
+ self.beginEditing()
# -------------------------------------------------------------------------
@@ -1222,25 +1227,27 @@
self.endEditing()
- if self._currentBlock is not None:
- if self._currentBlock.autoCommit:
- self.execute_commit()
+ try:
+ if self._currentBlock is not None:
+ if self._currentBlock.autoCommit:
+ self.execute_commit()
- if not self.__must_save():
- # Notify the UI to not show the query button pressed in
- self.dispatchEvent('endENTERQUERY', _form=self)
- self.beginEditing()
- return
+ if not self.__must_save():
+ # Notify the UI to not show the query button pressed in
+ self.dispatchEvent('endENTERQUERY', _form=self)
+ self.beginEditing()
+ return
- self.dispatchEvent('beginENTERQUERY', _form=self)
+ self.dispatchEvent('beginENTERQUERY', _form=self)
- for block in self._logic._blockList:
- block.init_query()
+ for block in self._logic._blockList:
+ block.init_query()
- self.status_message(u_('Enter your query criteria.'))
+ self.update_status()
- self.beginEditing()
- self.update_status()
+ self.status_message(u_('Enter your query criteria.'))
+ finally:
+ self.beginEditing()
# -------------------------------------------------------------------------
@@ -1251,25 +1258,27 @@
self.endEditing()
- if self._currentBlock is not None:
- if self._currentBlock.autoCommit:
- self.execute_commit()
+ try:
+ if self._currentBlock is not None:
+ if self._currentBlock.autoCommit:
+ self.execute_commit()
- if not self.__must_save():
- # Notify the UI to not show the query button pressed in
- self.dispatchEvent('endENTERQUERY', _form=self)
- self.beginEditing()
- return
+ if not self.__must_save():
+ # Notify the UI to not show the query button pressed in
+ self.dispatchEvent('endENTERQUERY', _form=self)
+ self.beginEditing()
+ return
- self.dispatchEvent('beginENTERQUERY', _form=self)
+ self.dispatchEvent('beginENTERQUERY', _form=self)
- for block in self._logic._blockList:
- block.copy_query()
+ for block in self._logic._blockList:
+ block.copy_query()
- self.status_message(u_('Enter your query criteria.'))
+ self.update_status()
- self.beginEditing()
- self.update_status()
+ self.status_message(u_('Enter your query criteria.'))
+ finally:
+ self.beginEditing()
# -------------------------------------------------------------------------
@@ -1280,15 +1289,17 @@
self.endEditing()
- self.dispatchEvent('endENTERQUERY', _form=self)
+ try:
+ self.dispatchEvent('endENTERQUERY', _form=self)
- for block in self._logic._blockList:
- block.cancel_query()
+ for block in self._logic._blockList:
+ block.cancel_query()
- self.status_message(u_('Query canceled.'))
+ self.update_status()
- self.beginEditing()
- self.update_status()
+ self.status_message(u_('Query canceled.'))
+ finally:
+ self.beginEditing()
# -------------------------------------------------------------------------
@@ -1301,30 +1312,33 @@
self.endEditing()
- # Do a rollback on all connections so the query starts a new
- # transaction.
- self.__rollback_all_connections()
+ try:
+ # Do a rollback on all connections so the query starts a new
+ # transaction.
+ self.__rollback_all_connections()
- self.dispatchEvent('endENTERQUERY', _form=self);
+ self.dispatchEvent('endENTERQUERY', _form=self);
- try:
try:
- self._currentBlock.execute_query()
+ try:
+ self._currentBlock.execute_query()
- except DBError:
- self.__rollback_all_connections()
- self.__clear_all_blocks()
- raise
+ except DBError:
+ self.__rollback_all_connections()
+ self.__clear_all_blocks()
+ raise
+ finally:
+ self.update_record_counter()
+ self.update_record_status()
+
+ if self._currentBlock.is_empty ():
+ self.status_message (u_('Query returned no results.'))
+ else:
+ self.status_message (u_('Query successful.'))
+
finally:
- if self._currentBlock.is_empty ():
- self.status_message (u_('Query returned no results.'))
- else:
- self.status_message (u_('Query successful.'))
-
self.beginEditing()
- self.update_record_counter()
- self.update_record_status()
# -------------------------------------------------------------------------
@@ -1413,14 +1427,16 @@
# Ignore errors, as we're discarding the changes anyway
pass
- # Call rollback only once per connection (if multiple blocks are
- # sharing the same connection)
- self.__rollback_all_connections()
- self.__clear_all_blocks()
+ try:
+ # Call rollback only once per connection (if multiple blocks are
+ # sharing the same connection)
+ self.__rollback_all_connections()
+ self.__clear_all_blocks()
- self.update_record_counter()
- self.update_record_status()
- self.beginEditing()
+ finally:
+ self.update_record_counter()
+ self.update_record_status()
+ self.beginEditing()
# -------------------------------------------------------------------------
Modified: trunk/gnue-forms/src/GFInstance.py
===================================================================
--- trunk/gnue-forms/src/GFInstance.py 2006-10-17 09:11:19 UTC (rev 8807)
+++ trunk/gnue-forms/src/GFInstance.py 2006-10-17 09:25:01 UTC (rev 8808)
@@ -435,8 +435,22 @@
if event.data == event._form._currentEntry:
return True
+ if event.data._type in ['GFEntry', 'GFImage', 'GFButton']:
+ if not event.data.is_navigable (event._form.getCurrentMode ()):
+ return False
+
try:
event._form.endEditing()
+ try:
+ event._form.move_focus(event.data)
+
+ event._form.update_record_status()
+ event._form.update_tip()
+ finally:
+ event._form.beginEditing()
+
+ return True
+
except:
# Old focus entry has invalid value: beat the UI focus back, so we are
# captured until the value is corrected.
@@ -444,20 +458,7 @@
event._form._currentEntry._displayHandler.generateRefreshEvent()
raise
- if event.data._type in ['GFEntry', 'GFImage', 'GFButton']:
- if not event.data.is_navigable (event._form.getCurrentMode ()):
- return False
- event._form.move_focus(event.data)
-
- event._form.beginEditing()
-
- event._form.update_record_status()
- event._form.update_tip()
-
- return True
-
-
# ---------------------------------------------------------------------------
# Move focus to the next entry
# ---------------------------------------------------------------------------
@@ -470,8 +471,6 @@
@param event: The event currently being processed.
"""
- event._form.endEditing()
-
origEntry = event._form._currentEntry
event._form._currentEntry.processTrigger ('ON-NEXT-ENTRY',
ignoreAbort = False)
@@ -480,8 +479,6 @@
if origEntry == event._form._currentEntry:
event._form.next_entry()
- event._form.beginEditing()
-
event._form.update_record_status()
event._form.update_tip()
@@ -498,8 +495,6 @@
param event: The event that requested the previous entry.
"""
- event._form.endEditing()
-
origEntry = event._form._currentEntry
event._form._currentEntry.processTrigger ('ON-PREVIOUS-ENTRY',
ignoreAbort = False)
@@ -508,8 +503,6 @@
if origEntry == event._form._currentEntry:
event._form.previous_entry()
- event._form.beginEditing()
-
event._form.update_record_status()
event._form.update_tip()
@@ -524,7 +517,6 @@
next data entry block
"""
- event._form.endEditing()
event._form.nextBlock()
event._form.update_status()
@@ -539,7 +531,6 @@
next data entry block
"""
- event._form.endEditing()
event._form.previousBlock()
event._form.update_status()
@@ -553,7 +544,6 @@
Called to make the form jump to the next page
"""
- event._form.endEditing()
currentIndex =
event._form._layout._pageList.index(event._form._currentPage)
if currentIndex == len (event._form._layout._pageList) - 1:
nextIndex = 0
@@ -572,7 +562,6 @@
Called to make the form jump to the previous page
"""
- event._form.endEditing()
pageList = event._form._layout._pageList
currentIndex = pageList.index (event._form._currentPage)
event._form.findAndChangeFocus (pageList [currentIndex - 1])
@@ -587,7 +576,6 @@
Jump to a specific page of the form
"""
- event._form.endEditing()
newpage = event._form._layout._pageList [event.data]
event._form.findAndChangeFocus (newpage)
event._form.update_status()
Modified: trunk/gnue-forms/src/GFObjects/GFBlock.py
===================================================================
--- trunk/gnue-forms/src/GFObjects/GFBlock.py 2006-10-17 09:11:19 UTC (rev
8807)
+++ trunk/gnue-forms/src/GFObjects/GFBlock.py 2006-10-17 09:25:01 UTC (rev
8808)
@@ -1074,15 +1074,20 @@
self._form.endEditing()
if self._form.get_focus_block() is self:
- field = self._form.get_focus_object().get_field()
- if field is not None:
- field.validate()
- self.validate()
- if field is not None:
- field.focus_out()
- self.focus_out()
+ try:
+ field = self._form.get_focus_object().get_field()
+ if field is not None:
+ field.validate()
+ self.validate()
+ if field is not None:
+ field.focus_out()
+ self.focus_out()
+ except Exception:
+ self._form.beginEditing()
+ raise
+
# ---------------------------------------------------------------------------
# Focus handling
# ---------------------------------------------------------------------------
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnue] r8808 - in trunk/gnue-forms/src: . GFObjects,
reinhard <=