[Top][All Lists]
[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- gnue common/src/GTrigger.py forms/src/GFObjects...,
James Thompson <=