commit-gnue
[Top][All Lists]
Advanced

[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
   # ---------------------------------------------------------------------------





reply via email to

[Prev in Thread] Current Thread [Next in Thread]