commit-gnue
[Top][All Lists]
Advanced

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

gnue common/src/GTrigger.py forms/src/GFObjects...


From: James Thompson
Subject: gnue common/src/GTrigger.py forms/src/GFObjects...
Date: Wed, 30 Jan 2002 21:08:21 -0500

CVSROOT:        /cvsroot/gnue
Module name:    gnue
Changes by:     James Thompson <address@hidden> 02/01/30 21:08:21

Modified files:
        common/src     : GTrigger.py 
        forms/src/GFObjects: GFEntry.py 

Log message:
        More trigger namespace work checking in prior to rolling forms over to
        new namespace

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/common/src/GTrigger.py.diff?tr1=1.5&tr2=1.6&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/forms/src/GFObjects/GFEntry.py.diff?tr1=1.34&tr2=1.35&r1=text&r2=text

Patches:
Index: gnue/common/src/GTrigger.py
diff -c gnue/common/src/GTrigger.py:1.5 gnue/common/src/GTrigger.py:1.6
*** gnue/common/src/GTrigger.py:1.5     Wed Jan 30 19:28:49 2002
--- gnue/common/src/GTrigger.py Wed Jan 30 21:08:21 2002
***************
*** 27,32 ****
--- 27,33 ----
  #
  # NOTES:
  #
+ import sys
  import types
  import string
  from gnue.common.GObjects import GObj
***************
*** 54,61 ****
        self._globalNamespace['form'] = self.constructTriggerObject(objectTree)
      else:
        GDebug.printMesg(0,'GTriggerNamespace was passed an empty object tree')
-       print "ERROR!"
        
        print "Function test"
        print self._globalNamespace['SampleBlock'].NameEntry.testFunc()
        print "Attribute test with get defined"
--- 55,62 ----
        self._globalNamespace['form'] = self.constructTriggerObject(objectTree)
      else:
        GDebug.printMesg(0,'GTriggerNamespace was passed an empty object tree')
        
+     if 0:
        print "Function test"
        print self._globalNamespace['SampleBlock'].NameEntry.testFunc()
        print "Attribute test with get defined"
***************
*** 68,115 ****
        self._globalNamespace['SampleBlock'].YearEntry = 1952
        print "Showing value"
        print self._globalNamespace['SampleBlock'].YearEntry
        
!                         
    def constructTriggerObject(self, gobjObject, triggerParent=None):
      triggerObject = None
      
!     if isinstance(gobjObject,GObj):
        triggerObject = GTriggerObject(triggerParent)
  
!       # Added to global namespace if object requests it
        if gobjObject._triggerGlobal:
          self._globalNamespace[gobjObject.name] = triggerObject
  
!       # setup get ans set functions with they exist
        triggerObject._triggerSet = gobjObject._triggerSet
        triggerObject._triggerGet = gobjObject._triggerGet
        
!       if gobjObject._triggerGlobal:
!         self._globalNamespace[gobjObject.name] = triggerObject
! 
! 
!       # Add object methods requested by object
        if len(gobjObject._triggerNamespace):
          for item in gobjObject._triggerNamespace.keys():
            
            if type(gobjObject._triggerNamespace[item]) == types.MethodType:
              object = 
GTriggerFunction(item,gobjObject._triggerNamespace[item])                       
 
            else:
!             object = None
  
!           # Add this object's published attributes and functionst to it's 
namespace
!           # by their defined name
!           if object:
!             triggerObject.__dict__[item] = object
  
!       # TODO: implement the widgetProperties
! #      if len(gobjObject._triggerProperties):
! #        for item in gobjObject._triggerProperties:
! #          object = GTriggerProperty(item, 
gobjObject._triggerProperties['get'], gobjObject._triggerProperties['set'])
! #          triggerObject._triggerProperties.append(object)
!           
!           
!       # Process GObj children
        if len(gobjObject._children):
          for child in gobjObject._children:
            object = self.constructTriggerObject(child, triggerObject)
--- 69,125 ----
        self._globalNamespace['SampleBlock'].YearEntry = 1952
        print "Showing value"
        print self._globalNamespace['SampleBlock'].YearEntry
+       print "Showing property"
+       print self._globalNamespace['SampleBlock'].YearEntry.gobjProperties.rows
+       print "Setting property"
+       self._globalNamespace['SampleBlock'].YearEntry.gobjProperties.rows = 23
+       print "Showing property"
+       print self._globalNamespace['SampleBlock'].YearEntry.gobjProperties.x
        
! 
!   #
!   # constructTriggerObject
!   #
!   # Travels down thru a GObj based tree and builds a set
!   # of GTriggerObjects that will implement the namespace 
!   # inside triggers.
!   # 
    def constructTriggerObject(self, gobjObject, triggerParent=None):
      triggerObject = None
+ 
+     # Some items in a GObj tree may not be GObj based (GContent for instance)
      
!     if isinstance(gobjObject,GObj): 
        triggerObject = GTriggerObject(triggerParent)
  
!       # Add this triggerObject to global namespace if the GObj requests it
        if gobjObject._triggerGlobal:
          self._globalNamespace[gobjObject.name] = triggerObject
  
!       # setup get and set functions when they exist in the GObj
        triggerObject._triggerSet = gobjObject._triggerSet
        triggerObject._triggerGet = gobjObject._triggerGet
        
!       # Add any trigger methods defined by GObj 
        if len(gobjObject._triggerNamespace):
          for item in gobjObject._triggerNamespace.keys():
            
            if type(gobjObject._triggerNamespace[item]) == types.MethodType:
              object = 
GTriggerFunction(item,gobjObject._triggerNamespace[item])                       
 
+             triggerObject.__dict__[item] = object
            else:
!             GDebug.printMesg(0,'Only functions are supported in an objects 
_triggerNamespace %s %s' % (gobjObject,item))
!             
!             sys.exit()
  
!       # Load the defined gobjProperties into this object's
!       # GTriggerObjectProperties instance
!       if len(gobjObject._triggerProperties):
!         for item in gobjObject._triggerProperties.keys():
!           
triggerObject._triggerProperties.addProperty(item,gobjObject._triggerProperties[item]['get'],\
!                                                             
gobjObject._triggerProperties[item]['set'])
  
!       # Process the children of this Gobj 
        if len(gobjObject._children):
          for child in gobjObject._children:
            object = self.constructTriggerObject(child, triggerObject)
***************
*** 120,126 ****
              
      return triggerObject
  
- 
  #
  # GTriggerObject
  #
--- 130,135 ----
***************
*** 129,138 ****
  class GTriggerObject(GObj):
    def __init__(self, parent):
      GObj.__init__(self,parent)
!     self._triggerProperties = []
      self._triggerSet = None
      self._triggerGet = None
- 
      
    #
    # __setattr__
--- 138,146 ----
  class GTriggerObject(GObj):
    def __init__(self, parent):
      GObj.__init__(self,parent)
!     self._triggerProperties = GTriggerObjectProperties()
      self._triggerSet = None
      self._triggerGet = None
      
    #
    # __setattr__
***************
*** 159,171 ****
        self.__dict__[name] = value
  
    #
    #
    #
! #  def __getattr__(self,name):
! #    if name == 'widgetProperties':
! #      if has_key(self._triggerProperties,name):
! #        return self._triggerProperties[name]
!       
    #
    # __str__
    #
--- 167,182 ----
        self.__dict__[name] = value
  
    #
+   # __getattr__
    #
+   # Only needed to return the GTriggerObjectProperties
+   # object 
    #
!   def __getattr__(self,name):
!     if name == 'gobjProperties':
!         return self._triggerProperties
!     else:
!       return self.__dict__[name]
    #
    # __str__
    #
***************
*** 213,233 ****
      return self._objectFunction(*args)
  
  #
! # GTriggerAttribute
  #
! # Used to link things listed in the _triggerProperties
! # into the namespace.
  #
! class GTriggerProperties:
!   def __init__(self, name, getFunc, setFunc):
!     self._name = name
!     self._triggerSet = setFunc
!     self._triggerGet = getFunc
  
  
-   def __str__(self):
-     if self._triggerGet:
-       return self._triggerGet()
            
  #
  # GTriggerExtension
--- 224,281 ----
      return self._objectFunction(*args)
  
  #
! # GTriggerObjectProperties
  #
! # Accessor class for properties that are made available in this an
! # object's gobjProperties namespace
  #
! class GTriggerObjectProperties:
!   def __init__(self):
!     self._properties = {}
! 
!   def addProperty(self,name, getFunc, setFunc):
!     self._properties[name] = {'get':getFunc,
!                               'set':setFunc,
!                               }
! 
!   def __setattr__(self, name, value):
!     # Hack to ensure that self._properties exists
!     if not self.__dict__.has_key('_properties'):
!       self.__dict__['_properties'] = {}
!       
!     if self._properties.has_key(name):
!       # If none the it's readonly
!       if self._properties[name]['set']: 
!         self._properties[name]['set'](value)
!       else:
!         GDebug.printMesg(0,'Attempt to set readonly property :%s' %(name))
!     else:
!       self.__dict__[name] = value
! 
!   def __getattr__(self,name):
!     if self.__dict__['_properties'].has_key(name):
!       return self._properties[name]['get']()
!     else:
!       return None
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
  
  
            
  #
  # GTriggerExtension
***************
*** 458,537 ****
  ##     else: 
  ##       xmlString = xmlString + "/>\n"      
  ##     return xmlString
- 
- 
- ## #
- ## # Helper class for building the namespace for python triggers. All access
- ## # to GFObjects from triggers are through this class. Its function is to
- ## # instantiate a subclass of GFTriggerHelperBase and pass information 
through
- ## # this.
- ## #
- ## class GFTriggerHelper:
- ##   def __init__(self,object, helper=None):
- ##     baseClassDict = { 'GFBlock': GFTriggerBlock,
- ##                       'GFDataSource': GFTriggerDatasource}
- ##     if helper == None:
- ##       self.__dict__['helper'] = baseClassDict[ object._type ](object)
- ##     else:
- ##       self.__dict__['helper'] = helper( object )
- 
- ##   def __getattr__(self,name):
- ##     return self.__dict__['helper'].getattribute(name)
- 
- ##   def __setattr__(self,name,value):
- ##     self.__dict__['helper'].setattribute(name, value)
- 
- ## class GFTriggerHelperBase:
- ##   def __init__( self, object ):
- ##     self.object = object
- 
- ##   def getattribute( self, name ):
- ##     return getattr( self.object, name )
- 
- ##   def setattribute( self, name, value ):
- ##     setattr( self.object, name, value )
- 
- ## class GFTriggerBlock( GFTriggerHelperBase ):
- ##   def __init__(self, object):
- ##     GFTriggerHelperBase.__init__(self, object)
- ##     self.fields=GFTriggerHelper( object, helper=GFTriggerFields )
- 
- ##   def getattribute( self, name ):
- ##     # Here I've implemented the syntax blockname.fields.fieldname
- ##     # we could use things like this to implent e.g.
- ##     # blockname.functions.nextField or blockname.properties.dataSource
- ##     # while protecting internal variables from malicious trigger code.
- ##     if name == 'fields':
- ##       return self.fields
- ##     elif name == '__getitem__':
- ##       return self.__dict__['object'].__getitem__
- ##     else:
- ##       raise AttributeError
- 
- ##   def setattributes( self, name, value ):
- ##     raise AttributeError
- 
- ## class GFTriggerDatasource(GFTriggerHelperBase ):
- ##   def __init__(self, object):
- ##     GFTriggerHelperBase.__init__(self, object)
- 
- ## class GFTriggerFields( GFTriggerHelperBase ):
- ##   def getattribute( self, name ):
- ##     for item in self.object._entryList:
- ##       if item.name == name:
- ##         return item.getValue()
- ##     return None
- 
- ##   def setattribute( self, name, value ):
- ##     try:
- ##       for item in self.object._entryList:
- ##         if item.name == name:
- ##          item._cursorPosition = len(value)
- ##          item.setValue(value)
- ##          return
- ##     except KeyError:
- ##       self.name = value
- ##     return
- 
  
  
--- 506,510 ----
Index: gnue/forms/src/GFObjects/GFEntry.py
diff -c gnue/forms/src/GFObjects/GFEntry.py:1.34 
gnue/forms/src/GFObjects/GFEntry.py:1.35
*** gnue/forms/src/GFObjects/GFEntry.py:1.34    Wed Jan 30 19:28:49 2002
--- gnue/forms/src/GFObjects/GFEntry.py Wed Jan 30 21:08:21 2002
***************
*** 72,83 ****
      #
      # Trigger exposure
      #
!     self._triggerNamespace={'rows':self._rows,
!                             'testFunc':self.testFunc,
                              }
      self._triggerProperties={'x':{'set':self.setX,
                                    'get':self.getX,
!                                   }
                               }
      self._triggerSet = self.setValue
      self._triggerGet = self.getValue
--- 72,85 ----
      #
      # Trigger exposure
      #
!     self._triggerNamespace={'testFunc':self.testFunc,
                              }
      self._triggerProperties={'x':{'set':self.setX,
                                    'get':self.getX,
!                                   },
!                              'rows':{'set':None,
!                                      'get':self.getRows
!                                      },
                               }
      self._triggerSet = self.setValue
      self._triggerGet = self.getValue
***************
*** 87,98 ****
      return self._buildObject
  
    def setX(self,value):
!     print "setting X"
!     return "3"
    
    def getX(self):
-     print "getting X"
      return self.x
      
    def _buildObject(self):
      # Convert deprecated attributes
--- 89,103 ----
      return self._buildObject
  
    def setX(self,value):
!     self.x = value
    
    def getX(self):
      return self.x
+ 
+   def getRows(self):
+     return self._rows
+ 
+ 
      
    def _buildObject(self):
      # Convert deprecated attributes



reply via email to

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