commit-gnue
[Top][All Lists]
Advanced

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

gnue/forms/src GFDisplayHandler.py GFEvent.py G...


From: Jason Cater
Subject: gnue/forms/src GFDisplayHandler.py GFEvent.py G...
Date: Fri, 15 Feb 2002 22:57:56 -0500

CVSROOT:        /home/cvs
Module name:    gnue
Changes by:     Jason Cater <address@hidden>    02/02/15 22:57:56

Modified files:
        forms/src      : GFDisplayHandler.py GFEvent.py GFForm.py 
                         GFInstance.py GFParser.py GFTrigger.py 
                         UIbase.py UIcurses.py UIwxpython.py 
        forms/src/GFObjects: GFBlock.py GFEntry.py 

Log message:
        Implemented a centralized events system

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/forms/src/GFDisplayHandler.py.diff?cvsroot=OldCVS&tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/forms/src/GFEvent.py.diff?cvsroot=OldCVS&tr1=1.18&tr2=1.19&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/forms/src/GFForm.py.diff?cvsroot=OldCVS&tr1=1.147&tr2=1.148&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/forms/src/GFInstance.py.diff?cvsroot=OldCVS&tr1=1.27&tr2=1.28&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/forms/src/GFParser.py.diff?cvsroot=OldCVS&tr1=1.62&tr2=1.63&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/forms/src/GFTrigger.py.diff?cvsroot=OldCVS&tr1=1.53&tr2=1.54&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/forms/src/UIbase.py.diff?cvsroot=OldCVS&tr1=1.52&tr2=1.53&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/forms/src/UIcurses.py.diff?cvsroot=OldCVS&tr1=1.14&tr2=1.15&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/forms/src/UIwxpython.py.diff?cvsroot=OldCVS&tr1=1.137&tr2=1.138&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/forms/src/GFObjects/GFBlock.py.diff?cvsroot=OldCVS&tr1=1.36&tr2=1.37&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/forms/src/GFObjects/GFEntry.py.diff?cvsroot=OldCVS&tr1=1.41&tr2=1.42&r1=text&r2=text

Patches:
Index: gnue/forms/src/GFDisplayHandler.py
diff -c gnue/forms/src/GFDisplayHandler.py:1.3 
gnue/forms/src/GFDisplayHandler.py:1.4
*** gnue/forms/src/GFDisplayHandler.py:1.3      Fri Feb 15 18:59:41 2002
--- gnue/forms/src/GFDisplayHandler.py  Fri Feb 15 22:57:55 2002
***************
*** 151,161 ****
  
  #############################################################################
  #
- # Handler for Date types
  #
! class DateDisplayHandler(FieldDisplayHandler):
    def __init__(self, entry, displayMask, inputMask):
!     FieldDisplayHandler(entry, DateMask.DateMask(displayMask,
                                       inputMask, displayMask))
  
  
--- 151,172 ----
  
  #############################################################################
  #
  #
! #
! class TextDisplayHandler(FieldDisplayHandler):
!   def __init__(self, entry, displayMask, inputMask, formatMask):
!     FieldDisplayHandler.__init__(entry, DateMask.DateMask(displayMask,
!                                      inputMask, formatMask))
! 
! 
! 
! #############################################################################
! #
! # Handler for Numeric types
! #
! class NumberDisplayHandler(FieldDisplayHandler):
    def __init__(self, entry, displayMask, inputMask):
!     FieldDisplayHandler.__init__(entry, DateMask.DateMask(displayMask,
                                       inputMask, displayMask))
  
  
***************
*** 163,172 ****
  
  #############################################################################
  #
  #
! #
! class TextDisplayHandler(FieldDisplayHandler):
!   pass
  
  
  
--- 174,186 ----
  
  #############################################################################
  #
+ # Handler for Date types
  #
! class DateDisplayHandler(FieldDisplayHandler):
!   def __init__(self, entry, displayMask, inputMask):
!     FieldDisplayHandler.__init__(entry, DateMask.DateMask(displayMask,
!                                      inputMask, displayMask))
! 
  
  
  
Index: gnue/forms/src/GFEvent.py
diff -c gnue/forms/src/GFEvent.py:1.18 gnue/forms/src/GFEvent.py:1.19
*** gnue/forms/src/GFEvent.py:1.18      Mon Jan 21 20:41:55 2002
--- gnue/forms/src/GFEvent.py   Fri Feb 15 22:57:55 2002
***************
*** 1,9 ****
  #
  # This file is part of GNU Enterprise.
  #
! # GNU Enterprise is free software; you can redistribute it 
! # and/or modify it under the terms of the GNU General Public 
! # License as published by the Free Software Foundation; either 
  # version 2, or (at your option) any later version.
  #
  # GNU Enterprise is distributed in the hope that it will be
--- 1,11 ----
  #
+ # Copyright 2000-2002 Free Software Foundation
+ #
  # This file is part of GNU Enterprise.
  #
! # GNU Enterprise is free software; you can redistribute it
! # and/or modify it under the terms of the GNU General Public
! # License as published by the Free Software Foundation; either
  # version 2, or (at your option) any later version.
  #
  # GNU Enterprise is distributed in the hope that it will be
***************
*** 16,23 ****
  # write to the Free Software Foundation, Inc., 59 Temple Place
  # - Suite 330, Boston, MA 02111-1307, USA.
  #
- # Copyright 2000, 2001 Free Software Foundation
- #
  # FILE:
  # GFEvent.py
  #
--- 18,23 ----
***************
*** 28,33 ****
--- 28,34 ----
  #
  
  from gnue.common import GDebug
+ import string
  
  #
  # Basic event passed between items
***************
*** 35,96 ****
  # If event = GFEvent('MYEVENT',x=1, y=2, object=MyObject), then
  #   event.event == 'MYEVENT', event.x = 1,
  #   event.y == 2, and event.object == MyObject
  class GFEvent:
    def __init__(self, event, data=None, **parms):
  
      self.__dict__.update(parms)
-     self.event = event
  
      # TODO: Get rid of data=
      self.data  = data
  
!     
    def getEvent(self):
!     return self.event
  
  
  #
  # Base for and object that sends and receives events
  #
  class GFEventAware:
    def __init__(self):
!     self.eventListener = []
!     self.incommingEvent = {}
  
-   #
-   # registerEventListener
-   #
-   # method to allow systems to register listener
-   # methods that should be passed events
-   #
-   def registerEventListener(self, listener):
-     self.eventListener.append(listener)
- 
-   #
-   # dispatchEvent
-   #
-   # calls each listener passing it a copy of the event
-   #
    def dispatchEvent(self, event):
-     for function in self.eventListener:
-       function(event)
  
!   #
!   # processEvent
!   #
!   # looks up the appropirate method to call to
!   # handle an incomming event
!   #
!   def processEvent(self, event):
!     #GDebug.printMesg(10, "Event: %s in %s" % (event.getEvent(), self))
!     if self.incommingEvent.has_key(event.event): 
!        self.incommingEvent[event.event] (event)
!     else: 
        GDebug.printMesg(3, "Unknown Event: %s " % (event.getEvent()))
!       GDebug.printMesg(3, "My events: %s" % (self.incommingEvent.keys()))
  
!                                                                     
  
  
  
  
--- 36,114 ----
  # If event = GFEvent('MYEVENT',x=1, y=2, object=MyObject), then
  #   event.event == 'MYEVENT', event.x = 1,
  #   event.y == 2, and event.object == MyObject
+ #
  class GFEvent:
    def __init__(self, event, data=None, **parms):
  
      self.__dict__.update(parms)
  
      # TODO: Get rid of data=
      self.data  = data
  
!     self.__event__ = event
!     self.__result__ = None
!     self.__dropped__ = 0
!     self.__error__ = 0
! 
! 
!   def getResult(self):
!     return self.__result__
! 
!   def setResult(self, value):
!     self.__result__ = value
! 
    def getEvent(self):
!     return self.__event__
  
  
  #
  # Base for and object that sends and receives events
  #
  class GFEventAware:
+ 
+   def __init__(self, controller):
+     self.__controller = controller
+     self.dispatchEvent = controller.dispatchEvent
+     self.registerEventListeners = controller.registerEventListeners
+ 
+   def __del__(self):
+     self.__controller = None
+     self.dispatchEvent = None
+     self.registerEventListeners = None
+ 
+ 
+ 
+ class GFEventController:
+ 
    def __init__(self):
!     self.__incomingEvents = {}
! 
! 
!   def registerEventListeners(self, events):
!     for event in events.keys():
!       evt = string.lower(event)
!       try:
!         self.__incomingEvents[evt].append(events[event])
!       except KeyError:
!         self.__incomingEvents[evt] = [events[event]]
! 
  
    def dispatchEvent(self, event):
  
!     ## GDebug.printMesg(10, "Event: %s" % (event.__event__))
!     try:
!       handlers = self.__incomingEvents[string.lower(event.__event__)]
!     except KeyError:
        GDebug.printMesg(3, "Unknown Event: %s " % (event.getEvent()))
!       return
  
!     for handler in handlers:
!       ## GDebug.printMesg(10, "Event: %s in %s" % (event.__event__, handler))
!       handler(event)
!       if event.__error__ or event.__dropped__:
!         break
  
+     return event.__result__
  
  
  
Index: gnue/forms/src/GFForm.py
diff -c gnue/forms/src/GFForm.py:1.147 gnue/forms/src/GFForm.py:1.148
*** gnue/forms/src/GFForm.py:1.147      Fri Feb 15 18:59:41 2002
--- gnue/forms/src/GFForm.py    Fri Feb 15 22:57:55 2002
***************
*** 51,57 ****
    def __init__(self, parent=None, app=None):
      GRootObj.__init__(self)
      GFObj.__init__(self, parent)
-     GFEventAware.__init__(self)
      self._type = "GFForm"
      self._currentObject = [self]
  
--- 51,56 ----
***************
*** 81,93 ****
  
      #
      # New trigger support
!     # 
      self._triggerGlobal = 1
      self._triggerFunctions = {'setFocus':{'function':self.triggerSetFocus,
                                            'global': 1,
                                            },
                                }
!     
    def _buildObject(self):
  
      # Convert some deprecated options to new style
--- 80,93 ----
  
      #
      # New trigger support
!     #
      self._triggerGlobal = 1
      self._triggerFunctions = {'setFocus':{'function':self.triggerSetFocus,
                                            'global': 1,
                                            },
                                }
! 
! 
    def _buildObject(self):
  
      # Convert some deprecated options to new style
***************
*** 118,133 ****
    # Called during phaseInit startup by GParser.
    #
    def primaryInit(self):
      # TODO: Look at moving this into GParser
      # Import all needed objects
      self.walk(self.initImportedObjects)
  
      # analyze the tree
      self.walk(self.analyzeTree)
!     
      self.initTriggerSystem()
      self._triggerns.update(self._triggerNamespaceTree._globalNamespace)
!    
    def secondaryInit(self):
      # create the first records
      for key in self._datasourceDictionary.keys():
--- 118,138 ----
    # Called during phaseInit startup by GParser.
    #
    def primaryInit(self):
+ 
+     # Initialize our events system
+     GFEventAware.__init__(self, self._app.eventController)
+     
+ 
      # TODO: Look at moving this into GParser
      # Import all needed objects
      self.walk(self.initImportedObjects)
  
      # analyze the tree
      self.walk(self.analyzeTree)
! 
      self.initTriggerSystem()
      self._triggerns.update(self._triggerNamespaceTree._globalNamespace)
! 
    def secondaryInit(self):
      # create the first records
      for key in self._datasourceDictionary.keys():
Index: gnue/forms/src/GFInstance.py
diff -c gnue/forms/src/GFInstance.py:1.27 gnue/forms/src/GFInstance.py:1.28
*** gnue/forms/src/GFInstance.py:1.27   Sun Feb 10 20:13:18 2002
--- gnue/forms/src/GFInstance.py        Fri Feb 15 22:57:55 2002
***************
*** 47,53 ****
    # Initialize the class
    #
    def __init__(self, manager, serial, connections, ui, disableSplash):
!     GFEventAware.__init__(self)
  
      self.connections = connections
      self.manager = manager
--- 47,56 ----
    # Initialize the class
    #
    def __init__(self, manager, serial, connections, ui, disableSplash):
! 
!     self.eventController = GFEventController()
! 
!     GFEventAware.__init__(self, self.eventController)
  
      self.connections = connections
      self.manager = manager
***************
*** 56,62 ****
      self._uimodule = ui
      self._disableSplash = disableSplash
      # Incomming events
!     self.incommingEvent = {'requestNEXTENTRY'    : self.nextEntry,
                             'requestPREVENTRY'    : self.previousEntry,
                             'requestNEXTBLOCK'    : self.nextBlock,
                             'requestPREVBLOCK'    : self.previousBlock,
--- 59,67 ----
      self._uimodule = ui
      self._disableSplash = disableSplash
      # Incomming events
!     self.registerEventListeners( {
!                            # Focus-related events
!                            'requestNEXTENTRY'    : self.nextEntry,
                             'requestPREVENTRY'    : self.previousEntry,
                             'requestNEXTBLOCK'    : self.nextBlock,
                             'requestPREVBLOCK'    : self.previousBlock,
***************
*** 65,70 ****
--- 70,76 ----
                             'requestRECORDNUMBER' : self.jumpRecords,
                             'requestPAGE'         : self.gotoPage,
  
+                            # Proxied "Entry" events
                             'requestKEYPRESS'     : self.keyPress,
                             'requestREPLACEVALUE' : self.replaceValue,
                             'requestCURSORLEFT'   : self.cursorMove,
***************
*** 76,95 ****
                             'requestFOCUS'        : self.changeFocus,
                             'requestMODETOGGLE'   : self.toggleInsertMode,
  
                             'requestNEWRECORD'     : self.newRecord,
                             'requestMARKFORDELETE' : self.deleteRecord,
- 
-                            'requestENTERQUERY' : self.requestQuery,
-                            'requestEXECQUERY'  : self.executeQuery,
                             'requestCOMMIT'     : self.executeCommit,
                             'requestPRINTOUT'   : self.executePrintout,
                             'requestROLLBACK'   : self.executeRollback,
                             'requestEXIT'       : self.executeExit,
                             'requestABOUT'      : self.executeAbout,
                             'fireTRIGGER'       : self.fireTrigger,
  
                             'requestTOGGLECHKBOX'  : self.toggleCheckBox,
!                            }
  
    #
    # Associate a form object with this instance
--- 82,113 ----
                             'requestFOCUS'        : self.changeFocus,
                             'requestMODETOGGLE'   : self.toggleInsertMode,
  
+                            # Selection/clipboard events
+                            'requestSELECTALL'    : None, # TODO
+                            'requestSELECTTOHOME' : None, # TODO
+                            'requestSELECTTOEND'  : None, # TODO
+                            'requestSELECTLEFT'   : None, # TODO
+                            'requestSELECTRIGHT'  : None, # TODO
+                            'requestCOPY'         : None, # TODO
+                            'requestCUT'          : None, # TODO
+                            'requestPASTE'        : None, # TODO
+ 
+                            # Data set manipulation
                             'requestNEWRECORD'     : self.newRecord,
                             'requestMARKFORDELETE' : self.deleteRecord,
                             'requestCOMMIT'     : self.executeCommit,
                             'requestPRINTOUT'   : self.executePrintout,
                             'requestROLLBACK'   : self.executeRollback,
+                            'requestENTERQUERY' : self.requestQuery,
+                            'requestEXECQUERY'  : self.executeQuery,
+ 
+                            # High-level forms stuff
                             'requestEXIT'       : self.executeExit,
                             'requestABOUT'      : self.executeAbout,
                             'fireTRIGGER'       : self.fireTrigger,
  
                             'requestTOGGLECHKBOX'  : self.toggleCheckBox,
!                            } )
  
    #
    # Associate a form object with this instance
***************
*** 497,511 ****
      object = event.data[0]
      value = event.data[1]
      object.setValue(value)
!     
    #
    #  Activate this puppy...
    #
!   def activate(self): 
!     ui = self._uiinstance =  
self._uimodule.GFUserInterface(self._disableSplash)
!     #ui = self._uiinstance
!     ui.registerEventListener(self.processEvent)
!     self.registerEventListener(ui.processEvent)
  
      ui.buildForm(self._form)
      ui.activateForm(self._form)
--- 515,529 ----
      object = event.data[0]
      value = event.data[1]
      object.setValue(value)
! 
    #
    #  Activate this puppy...
    #
!   def activate(self):
!     ui = self._uiinstance =  
self._uimodule.GFUserInterface(self.eventController, self._disableSplash)
! ##    ui = self._uiinstance
! ##    ui.registerEventListener(self.processEvent)
! ##    self.registerEventListener(ui.processEvent)
  
      ui.buildForm(self._form)
      ui.activateForm(self._form)
Index: gnue/forms/src/GFObjects/GFBlock.py
diff -c gnue/forms/src/GFObjects/GFBlock.py:1.36 
gnue/forms/src/GFObjects/GFBlock.py:1.37
*** gnue/forms/src/GFObjects/GFBlock.py:1.36    Mon Feb 11 13:59:34 2002
--- gnue/forms/src/GFObjects/GFBlock.py Fri Feb 15 22:57:55 2002
***************
*** 1,4 ****
--- 1,6 ----
  #
+ # Copyright 2000-2002 Free Software Foundation
+ #
  # This file is part of GNU Enterprise.
  #
  # GNU Enterprise is free software; you can redistribute it 
***************
*** 16,29 ****
  # write to the Free Software Foundation, Inc., 59 Temple Place 
  # - Suite 330, Boston, MA 02111-1307, USA.
  #
- # Copyright 2000, 2001 Free Software Foundation
- #
  #
  # FILE:
  # GFBlock.py
  #
  # DESCRIPTION:
! # 
  #
  # NOTES:
  #
--- 18,29 ----
  # write to the Free Software Foundation, Inc., 59 Temple Place 
  # - Suite 330, Boston, MA 02111-1307, USA.
  #
  #
  # FILE:
  # GFBlock.py
  #
  # DESCRIPTION:
! #
  #
  # NOTES:
  #
***************
*** 51,57 ****
  class GFBlock(GFObj, GFEventAware):
    def __init__(self, parent=None):
      GFObj.__init__(self, parent, 'GFBlock')
-     GFEventAware.__init__(self)
  
      self.mode = 'normal'
  
--- 51,56 ----
***************
*** 127,132 ****
--- 126,136 ----
  
    def initialize(self):
      self._form = self.findParentOfType('GFForm')
+ 
+     # Initialize our events system
+     GFEventAware.__init__(self, self._form._app.eventController)
+ 
+ 
      self.walk(self.buildEntryList)
  
      if not hasattr(self,'datasource') or not self.datasource:
Index: gnue/forms/src/GFObjects/GFEntry.py
diff -c gnue/forms/src/GFObjects/GFEntry.py:1.41 
gnue/forms/src/GFObjects/GFEntry.py:1.42
*** gnue/forms/src/GFObjects/GFEntry.py:1.41    Fri Feb 15 21:17:29 2002
--- gnue/forms/src/GFObjects/GFEntry.py Fri Feb 15 22:57:55 2002
***************
*** 177,183 ****
  ##               self._maskHandler)
  ##    elif self.typecast == 'text':
  ##      self.displayHandler = GFDisplayHandler.TextDisplayHandler(self,
! ##               self._maskHandler)
  
  
  
--- 177,189 ----
  ##               self._maskHandler)
  ##    elif self.typecast == 'text':
  ##      self.displayHandler = GFDisplayHandler.TextDisplayHandler(self,
! ##               self._inputmask, self._displaymask, self._formatmask)
! ##    elif self.typecast == 'number':
! ##      self.displayHandler = GFDisplayHandler.NumberDisplayHandler(self,
! ##               self._inputmask, self._displaymask)
! ##    elif self.typecast == 'date':
! ##      self.displayHandler = GFDisplayHandler.DateDisplayHandler(self,
! ##               self._inputmask, self._displaymask)
  
  
  
Index: gnue/forms/src/GFParser.py
diff -c gnue/forms/src/GFParser.py:1.62 gnue/forms/src/GFParser.py:1.63
*** gnue/forms/src/GFParser.py:1.62     Mon Feb 11 22:03:50 2002
--- gnue/forms/src/GFParser.py  Fri Feb 15 22:57:55 2002
***************
*** 58,64 ****
  
  def loadForm(URL, app, initialize=1):
    return GParser.loadXMLObject (URL, xmlFormsHandler, 'GFForm', 'form', 
!            initialize, attributes={"_app": app, 
                                 "_connections": app.connections })
  
  
--- 58,64 ----
  
  def loadForm(URL, app, initialize=1):
    return GParser.loadXMLObject (URL, xmlFormsHandler, 'GFForm', 'form', 
!            initialize, attributes={"_app": app,
                                 "_connections": app.connections })
  
  
Index: gnue/forms/src/GFTrigger.py
diff -c gnue/forms/src/GFTrigger.py:1.53 gnue/forms/src/GFTrigger.py:1.54
*** gnue/forms/src/GFTrigger.py:1.53    Thu Jan 31 21:25:51 2002
--- gnue/forms/src/GFTrigger.py Fri Feb 15 22:57:55 2002
***************
*** 89,105 ****
  #
  # Class used to implement triggers
  #
- #class GFTrigger(GFEventAware, GObj):
  class GFTrigger(GTrigger):
- ##  def __init__(self, parent=None, type=None, name=None, src=None, 
text=None, language='python'):
- ##     GTrigger.__init__(self, parent=None, type=None, name=None, src=None, 
text=None, language='python')
- ##     self._type="GFTrigger"
- 
- ##     print language
- ##     print type
- ##     print src
- ##     print text
- ##     print self._inits
  
    def __init__(self, parent=None, type=None, name=None, src=None, text=None, 
language='python'):
      GObj.__init__(self, parent)
--- 89,95 ----
Index: gnue/forms/src/UIbase.py
diff -c gnue/forms/src/UIbase.py:1.52 gnue/forms/src/UIbase.py:1.53
*** gnue/forms/src/UIbase.py:1.52       Fri Feb 15 18:59:41 2002
--- gnue/forms/src/UIbase.py    Fri Feb 15 22:57:55 2002
***************
*** 40,64 ****
  # Provides basic functionality.
  #
  class GFUserInterfaceBase(GFEventAware):
!   def __init__(self):
!     GFEventAware.__init__(self)
!     
      #
!     # incommintEvents
      #
!     self.incommingEvent = {'gotoENTRY'       : self.switchFocus,
!                            'updateENTRY'     : self.updateEntry,
!                            'gotoPAGE'        : self.gotoPage,
!                            'formALERT'       : self.formAlert,
!                            'beginWAIT'       : self.beginWait, 
!                            'endWAIT'         : self.endWait, 
!                            'uiNEXTRECORD'    : self.adjustMultiView,
!                            'uiPREVRECORD'    : self.adjustMultiView,
!                            'uiUPDATESTATUS'  : self.updateStatusBar,
!                            'uiABOUT'         : self.aboutBox,
!                            'exitApplication' : self.exitApplication,
!                            'msgBoxUI'        : self.msgBox
!                            }
  
      #
      # UGLY, UGLY, NASTY, NASY
--- 40,72 ----
  # Provides basic functionality.
  #
  class GFUserInterfaceBase(GFEventAware):
!   def __init__(self, eventHandler):
!     GFEventAware.__init__(self, eventHandler)
! 
      #
!     # Events I monitor...
      #
!     self.registerEventListeners( {
!             'gotoENTRY'       : self.switchFocus,
!             'updateENTRY'     : self.updateEntry,
!             'gotoPAGE'        : self.gotoPage,
!             'formALERT'       : self.formAlert,
!             'beginWAIT'       : self.beginWait,
!             'endWAIT'         : self.endWait,
!             'uiNEXTRECORD'    : self.adjustMultiView,
!             'uiPREVRECORD'    : self.adjustMultiView,
!             'uiUPDATESTATUS'  : self.updateStatusBar,
!             'uiABOUT'         : self.aboutBox,
!             'exitApplication' : self.exitApplication,
!             'msgBoxUI'        : self.msgBox,
! 
!             # Clipboard contents
!             'setCLIPBOARD'    : self.setClipboardContents,
!             'getCLIPBOARD'    : self.getClipboardContents,
!           })
! 
!     # Our local "clipboard"
!     self.__clipboard = None
  
      #
      # UGLY, UGLY, NASTY, NASY
***************
*** 75,81 ****
  
      self._formToUI = {}                   # the GFObj to UI widget cross ref
      self._formToUIWidget = {}                   # the GFObj to UI widget 
cross ref
!     
      self.containerWidgets= ['GFPage']    # GFForm objects that contain others
      
      self._pageList = []                   # A list of pages
--- 83,89 ----
  
      self._formToUI = {}                   # the GFObj to UI widget cross ref
      self._formToUIWidget = {}                   # the GFObj to UI widget 
cross ref
! 
      self.containerWidgets= ['GFPage']    # GFForm objects that contain others
      
      self._pageList = []                   # A list of pages
***************
*** 163,173 ****
  
    
#############################################################################
    #
!   # Generic Incomming Event Handlers
    #
!   # Handles incomming events and calls UI instance specific functions to
    # execute the actions
    #
  
  
    #
--- 171,195 ----
  
    
#############################################################################
    #
!   # Generic Incoming Event Handlers
    #
!   # Handles incoming events and calls UI instance specific functions to
    # execute the actions
    #
+ 
+ 
+   #
+   # Clipboard routines
+   #
+   # If a particular UI has a system-wide clipboard,
+   # these methods should be overridden to use that
+   # clipboard.
+   #
+   def getClipboardContents(self, event):
+     event.SetResult(self.__clipboard)
+ 
+   def setClipboardContents(self, event):
+     self.__clipboard = "%s" % event.text
  
  
    #
Index: gnue/forms/src/UIcurses.py
diff -c gnue/forms/src/UIcurses.py:1.14 gnue/forms/src/UIcurses.py:1.15
*** gnue/forms/src/UIcurses.py:1.14     Tue Feb  5 19:13:38 2002
--- gnue/forms/src/UIcurses.py  Fri Feb 15 22:57:55 2002
***************
*** 42,48 ****
  # All UIs must provide this class
  #
  class GFUserInterface(GFUserInterfaceBase):
!   def __init__(self):
      self.stdscr=None
      self.stdscr=curses.initscr()
      self.stdscr.keypad(0)
--- 42,48 ----
  # All UIs must provide this class
  #
  class GFUserInterface(GFUserInterfaceBase):
!   def __init__(self, eventController):
      self.stdscr=None
      self.stdscr=curses.initscr()
      self.stdscr.keypad(0)
***************
*** 58,69 ****
      def cleanup(self=self):
        if not curses.isendwin():
          curses.endwin()
      atexit.register(cleanup)
  
!     GFUserInterfaceBase.__init__(self)
!     self.incommingEvent.update({'msgBoxUI' : self.msgBox,
!                                 'getLogin' : self.getLogin
!                                 })
      self.widgetConstructorFunction['GFLabel'] = self.labelHandler
      self.widgetConstructorFunction['GFEntry'] = self.entryHandler
      self.widgetConstructorFunction['GFBox'] = self.boxHandler
--- 58,74 ----
      def cleanup(self=self):
        if not curses.isendwin():
          curses.endwin()
+ 
      atexit.register(cleanup)
  
! 
!     GFUserInterfaceBase.__init__(self, eventController)
! 
!     self.registerEventListeners({
!                           'msgBoxUI' : self.msgBox,
!                           'getLogin' : self.getLogin
!                         })
! 
      self.widgetConstructorFunction['GFLabel'] = self.labelHandler
      self.widgetConstructorFunction['GFEntry'] = self.entryHandler
      self.widgetConstructorFunction['GFBox'] = self.boxHandler
***************
*** 94,107 ****
  ##                      }
  ##
  
!     self.incommingEvent.update( {'gotoENTRY'  : self.switchFocus,
                                   'updateENTRY': self.updateEntry,
                                   'gotoPAGE': self.gotoPage,
                                   'uiUPDATESTATUS': self.updateStatus,
                                   'uiNEXTRECORD' : self.adjustMultiView,
                                   'uiPREVRECORD' : self.adjustMultiView,
                                   'exitApplication': self.exitApplication
!                                  })
  
      self.containerWidgets= ['GFPage', 'GFForm']
  
--- 99,112 ----
  ##                      }
  ##
  
!     self.registerEventListeners( {'gotoENTRY'  : self.switchFocus,
                                   'updateENTRY': self.updateEntry,
                                   'gotoPAGE': self.gotoPage,
                                   'uiUPDATESTATUS': self.updateStatus,
                                   'uiNEXTRECORD' : self.adjustMultiView,
                                   'uiPREVRECORD' : self.adjustMultiView,
                                   'exitApplication': self.exitApplication
!                                  } )
  
      self.containerWidgets= ['GFPage', 'GFForm']
  
***************
*** 257,263 ****
  #
  # Event handlers
  #
! # Methods called to deal with incomming events
  #
  
   #
--- 262,268 ----
  #
  # Event handlers
  #
! # Methods called to deal with incoming events
  #
  
   #
Index: gnue/forms/src/UIwxpython.py
diff -c gnue/forms/src/UIwxpython.py:1.137 gnue/forms/src/UIwxpython.py:1.138
*** gnue/forms/src/UIwxpython.py:1.137  Fri Feb 15 18:59:41 2002
--- gnue/forms/src/UIwxpython.py        Fri Feb 15 22:57:55 2002
***************
*** 133,142 ****
  # All UIs must provide this class
  #
  class GFUserInterface(GFUserInterfaceBase):
!   def __init__(self, disableSplash = None):
      self._wxapp = getWxApp()
      self._disableSplash = disableSplash
!     GFUserInterfaceBase.__init__(self)
      
      self.forms = {}
      self.init()
--- 133,142 ----
  # All UIs must provide this class
  #
  class GFUserInterface(GFUserInterfaceBase):
!   def __init__(self, eventController, disableSplash = None):
      self._wxapp = getWxApp()
      self._disableSplash = disableSplash
!     GFUserInterfaceBase.__init__(self,eventController)
      
      self.forms = {}
      self.init()
***************
*** 417,423 ****
    #
    # Incoming Event Processors
    #
!   # Processes the incomming events from other objects
    #
  
    #
--- 417,423 ----
    #
    # Incoming Event Processors
    #
!   # Processes the incoming events from other objects
    #
  
    #



reply via email to

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