commit-gnue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gnue] r8550 - in trunk/gnue-forms/src: . uidrivers/_base uidrivers/curs


From: reinhard
Subject: [gnue] r8550 - in trunk/gnue-forms/src: . uidrivers/_base uidrivers/curses/widgets uidrivers/gtk2/widgets/form uidrivers/win32/widgets/form uidrivers/wx uidrivers/wx/widgets/form uidrivers/wx26
Date: Tue, 8 Aug 2006 11:59:14 -0500 (CDT)

Author: reinhard
Date: 2006-08-08 11:59:12 -0500 (Tue, 08 Aug 2006)
New Revision: 8550

Modified:
   trunk/gnue-forms/src/GFForm.py
   trunk/gnue-forms/src/GFInstance.py
   trunk/gnue-forms/src/uidrivers/_base/UIdriver.py
   trunk/gnue-forms/src/uidrivers/curses/widgets/form.py
   trunk/gnue-forms/src/uidrivers/gtk2/widgets/form/widget.py
   trunk/gnue-forms/src/uidrivers/win32/widgets/form/widget.py
   trunk/gnue-forms/src/uidrivers/wx/PrintForm.py
   trunk/gnue-forms/src/uidrivers/wx/UIdriver.py
   trunk/gnue-forms/src/uidrivers/wx/widgets/form/widget.py
   trunk/gnue-forms/src/uidrivers/wx26/UIdriver.py
Log:
Properly display Cancel button in wx26 if requested.
New function GFForm.__must_save() to ask user if changes should be 
saved.
A few files that have been forgotten at last commit (screen dump).


Modified: trunk/gnue-forms/src/GFForm.py
===================================================================
--- trunk/gnue-forms/src/GFForm.py      2006-08-03 15:49:49 UTC (rev 8549)
+++ trunk/gnue-forms/src/GFForm.py      2006-08-08 16:59:12 UTC (rev 8550)
@@ -156,6 +156,8 @@
             'rollback': {
                 'function': self.__trigger_rollback,
                 'global': True},
+            'printout': {
+                'function': self.__trigger_printout},
             'initQuery': {
                 'function': self.__trigger_init_query},
             'activateDialog': {
@@ -430,6 +432,14 @@
 
     # -------------------------------------------------------------------------
 
+    def __trigger_printout(self):
+        """
+        Print the form.
+        """
+        self.printout()
+
+    # -------------------------------------------------------------------------
+
     def __trigger_init_query(self):
         """
         Set form into query mode.
@@ -1011,20 +1021,15 @@
     def initQuery(self):
         """
         Enters the form into Query mode.
-        @return: None if all went well, error message in case of error.
         """
-        message = None
         if self._currentBlock.mode != 'query':
 
           # Auto-commit?
           if self._currentBlock.autoCommit:
             self.commit()
 
-          for block in self._logic._blockList:
-            if block.isPending():
-              message = _("Data not saved. Save changes or clear the form to "
-                          "proceed.")
-              return message
+          if not self.__must_save():
+              return
 
         for block in self._logic._blockList:
           block.processRollback()
@@ -1033,18 +1038,12 @@
               assert gDebug (5, "%s will be set to %s" % (entry.name, 
entry.queryDefault))
               entry.setValue(entry.queryDefault)
 
-        # If Enter-Query is hit once, enter query mode
-        # If Enter-Query is hit twice, bring back conditions from last query.
-        # If Enter-Query is hit thrice, cancel the query and go into normal 
mode.
-
         self.dispatchEvent('beginENTERQUERY', _form=self)
-        #self._instance.dispatchEvent('beginENTERQUERY', _form=self)
 
         for block in self._logic._blockList:
           block.initQuery()
 
         self.status_message(u_('Enter your query criteria.'))
-        return message
 
 
     # -------------------------------------------------------------------------
@@ -1235,6 +1234,28 @@
 
 
     # -------------------------------------------------------------------------
+    # Print form
+    # -------------------------------------------------------------------------
+
+    def printout(self):
+        """
+        Print the form.
+
+        If the form has a trigger named "process-printout", fire it. Otherwise,
+        print a screen dump of the form.
+        """
+
+        if self._triggerDictionary.has_key('process-printout'):
+            self.fireTrigger('process-printout')
+        else:
+            if self.uiWidget:
+                self.uiWidget._ui_printout_(self.title,
+                        self._currentPage.caption,
+                        self._instance.connections.getAuthenticatedUser(None) \
+                                or 'Anonymous')
+
+
+    # -------------------------------------------------------------------------
     # Get all connections used by the form
     # -------------------------------------------------------------------------
 
@@ -1674,3 +1695,25 @@
         @return: None
         """
         self._insertMode = not self._insertMode
+
+
+    # -------------------------------------------------------------------------
+    # Ask the user whether to save or to discard changes if there are any
+    # -------------------------------------------------------------------------
+
+    def __must_save(self):
+
+        if self.isSaved():
+            return True
+
+        answer = self._instance.displayMessageBox(message=u_("Save changes?"),
+                kind='Question', cancel=True, title=self.title)
+
+        if answer is None:
+            # Cancel
+            return False
+
+        if answer:
+            self.commit()
+
+        return True

Modified: trunk/gnue-forms/src/GFInstance.py
===================================================================
--- trunk/gnue-forms/src/GFInstance.py  2006-08-03 15:49:49 UTC (rev 8549)
+++ trunk/gnue-forms/src/GFInstance.py  2006-08-08 16:59:12 UTC (rev 8550)
@@ -974,12 +974,7 @@
     If the form has a trigger named process-printout then fire it
     """
 
-    if event._form._triggerDictionary.has_key ('process-printout'):
-      event._form.fireTrigger ('process-printout')
-    else:
-      # TODO: should probably do something else as a default if trigger not
-      #       available like a screen print
-      self.dispatchEvent ('uiPRINTOUT', _form = event._form)
+    event._form.printout()
 
 
   # ---------------------------------------------------------------------------

Modified: trunk/gnue-forms/src/uidrivers/_base/UIdriver.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/_base/UIdriver.py    2006-08-03 15:49:49 UTC 
(rev 8549)
+++ trunk/gnue-forms/src/uidrivers/_base/UIdriver.py    2006-08-08 16:59:12 UTC 
(rev 8550)
@@ -196,9 +196,6 @@
             # Clipboard contents
             'setCLIPBOARD'     : self.setClipboardContents,
             'getCLIPBOARD'     : self.getClipboardContents,
-
-            # Printout
-            'uiPRINTOUT'       : self.printout,
           })
 
     # now call the implementation specific initialization
@@ -476,17 +473,6 @@
 
 
   # ---------------------------------------------------------------------------
-  # Perform the default printout function
-  # ---------------------------------------------------------------------------
-
-  def printout(self, event):
-    """
-    Perform the default printout/"screen print" function for this uidriver
-    """
-    pass
-
-
-  # ---------------------------------------------------------------------------
   # Show the last exception
   # ---------------------------------------------------------------------------
 

Modified: trunk/gnue-forms/src/uidrivers/curses/widgets/form.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/curses/widgets/form.py       2006-08-03 
15:49:49 UTC (rev 8549)
+++ trunk/gnue-forms/src/uidrivers/curses/widgets/form.py       2006-08-08 
16:59:12 UTC (rev 8550)
@@ -117,6 +117,14 @@
     self.__updateStatusBar ()
 
   # ---------------------------------------------------------------------------
+  # Print form screenshot
+  # ---------------------------------------------------------------------------
+
+  def _ui_printout_(self, title, subtitle, user):
+
+    pass
+
+  # ---------------------------------------------------------------------------
   # Output a message on the status bar
   # ---------------------------------------------------------------------------
 

Modified: trunk/gnue-forms/src/uidrivers/gtk2/widgets/form/widget.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/gtk2/widgets/form/widget.py  2006-08-03 
15:49:49 UTC (rev 8549)
+++ trunk/gnue-forms/src/uidrivers/gtk2/widgets/form/widget.py  2006-08-08 
16:59:12 UTC (rev 8550)
@@ -314,3 +314,12 @@
       self.statusBar5.push (context, self._makeSafe (text))
 
     self._uiDriver.processMessages ()
+
+
+  # ---------------------------------------------------------------------------
+  # Print form screenshot
+  # ---------------------------------------------------------------------------
+
+  def _ui_printout_(self, title, subtitle, user):
+
+    pass

Modified: trunk/gnue-forms/src/uidrivers/win32/widgets/form/widget.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/win32/widgets/form/widget.py 2006-08-03 
15:49:49 UTC (rev 8549)
+++ trunk/gnue-forms/src/uidrivers/win32/widgets/form/widget.py 2006-08-08 
16:59:12 UTC (rev 8550)
@@ -207,3 +207,12 @@
               ("%s/%s" % (page_number, page_count)).strip())
 
     return
+
+
+  # ---------------------------------------------------------------------------
+  # Print form screenshot
+  # ---------------------------------------------------------------------------
+
+  def _ui_printout_(self, title, subtitle, user):
+
+    pass

Modified: trunk/gnue-forms/src/uidrivers/wx/PrintForm.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/wx/PrintForm.py      2006-08-03 15:49:49 UTC 
(rev 8549)
+++ trunk/gnue-forms/src/uidrivers/wx/PrintForm.py      2006-08-08 16:59:12 UTC 
(rev 8550)
@@ -38,26 +38,12 @@
 from gnue.forms import VERSION
 import time
 
-def printForm(form, driver):
-  _Timer(_printForm, form, driver).Start(100,1)
+def printForm(form, title, subtitle, user):
+  _Timer(_printForm, form, title, subtitle, user).Start(100,1)
 
-def _printForm(form, driver):
-  # Get a suitable title for the print job
-  # We default to either "Form Name" or "Form Name" + "Page Name"
-  # depending on if the page has a caption or not.
-  subtitle = ""
-  try:
-    title = form.title
-  except AttributeError:
-    title = 'Untitled Form'
-  try:
-    if form._currentPage.caption:
-      subtitle = ' (' + form._currentPage.caption + ')'
-  except AttributeError:
-    pass
+def _printForm(form, title, subtitle, user):
 
-##  window = driver._gfObjToUIWidget[form._currentPage]._containerToolkitWidget
-  window = driver._gfObjToUIWidget[form].mainWindow
+  window = form.mainWindow
 
   printData = wxPrintData()
   printData.SetPaperId(wxPAPER_LETTER)
@@ -79,10 +65,9 @@
   prd.SetPrintData(printData)
   prn = wxPrinter(prd)
 
-  printout = FormPrintout(window, title, subtitle,
-       form._instance.connections.getAuthenticatedUser(None) or 'Anonymous', 
dest)
+  printout = FormPrintout(window, title, subtitle, user, dest)
 
-  if not prn.Print(driver._gfObjToUIWidget[form].mainWindow, printout):
+  if not prn.Print(form.mainWindow, printout):
     wxMessageBox(_("There was a problem printing.\nPlease verify your printer 
setup and try again."), _("Printing"), wxOK)
 
   printout.Destroy()
@@ -93,7 +78,7 @@
   def __init__(self, window, title, subtitle, login, dc):
     self.__window = window
     self.__title = title
-    self.__subtitle = subtitle
+    self.__subtitle = subtitle or ''
     self.__login = login
     self.__dc = dc
     wxPrintout.__init__(self, title)

Modified: trunk/gnue-forms/src/uidrivers/wx/UIdriver.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/wx/UIdriver.py       2006-08-03 15:49:49 UTC 
(rev 8549)
+++ trunk/gnue-forms/src/uidrivers/wx/UIdriver.py       2006-08-08 16:59:12 UTC 
(rev 8550)
@@ -48,7 +48,6 @@
 from gnue.forms.uidrivers.wx.widgets._base  import *
 from gnue.forms.uidrivers.wx.common import _eventObjTowxWindow
 from gnue.forms.uidrivers.wx import dialogs
-from PrintForm import printForm
 
 from common import wxEncode
 
@@ -211,9 +210,6 @@
       assert gDebug(6,'Unable to open clipboard for write')
 
 
-  def printout(self, event):
-    printForm(self._form, self)
-
   def setTitle(self, event):
     ui = self._gfObjToUIWidget[event._form]
     try:

Modified: trunk/gnue-forms/src/uidrivers/wx/widgets/form/widget.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/wx/widgets/form/widget.py    2006-08-03 
15:49:49 UTC (rev 8549)
+++ trunk/gnue-forms/src/uidrivers/wx/widgets/form/widget.py    2006-08-08 
16:59:12 UTC (rev 8550)
@@ -37,6 +37,9 @@
 from gnue.forms.uidrivers.wx.MenuBar import MenuBar
 from gnue.forms.uidrivers.wx.ToolBar import ToolBar
 
+from PrintForm import printForm
+
+
 # =============================================================================
 # Wrap an UI layer around a wx Form widget
 # =============================================================================
@@ -229,3 +232,12 @@
     pageWidth   = pageWidth   and (pageWidth   * 2) or 5
 
     self.statusBar.SetStatusWidths([tipWidth, statusWidth, insertWidth, 
recordWidth, pageWidth])
+
+
+  # --------------------------------------------------------------------------
+  # Print out form screenshot
+  # --------------------------------------------------------------------------
+
+  def _ui_printout_(self, title, subtitle, user):
+
+    printForm(self, title, subtitle, user)

Modified: trunk/gnue-forms/src/uidrivers/wx26/UIdriver.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/wx26/UIdriver.py     2006-08-03 15:49:49 UTC 
(rev 8549)
+++ trunk/gnue-forms/src/uidrivers/wx26/UIdriver.py     2006-08-08 16:59:12 UTC 
(rev 8550)
@@ -241,6 +241,8 @@
 
     mbRec  = self._MBOX_KIND.get (kind.lower ())
     flags  = mbRec ['type'] | mbRec ['buttons']
+    if cancel:
+        flags |= wx.CANCEL
     title  = title and title or mbRec ['title']
 
     dialog = wx.MessageDialog (None, message, title, flags)





reply via email to

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