[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
gnue common/src/GObjects.py common/src/GTrigger...
From: |
James Thompson |
Subject: |
gnue common/src/GObjects.py common/src/GTrigger... |
Date: |
Wed, 30 Jan 2002 19:28:49 -0500 |
CVSROOT: /cvsroot/gnue
Module name: gnue
Changes by: James Thompson <address@hidden> 02/01/30 19:28:49
Modified files:
common/src : GObjects.py GTrigger.py GTriggerCore.py
forms/samples/intro: intro.gfd
forms/src : GFForm.py
forms/src/GFObjects: GFBlock.py GFEntry.py
Log message:
Work on common based trigger namespace
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/common/src/GObjects.py.diff?tr1=1.26&tr2=1.27&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/common/src/GTrigger.py.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/common/src/GTriggerCore.py.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/forms/samples/intro/intro.gfd.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/forms/src/GFForm.py.diff?tr1=1.141&tr2=1.142&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/forms/src/GFObjects/GFBlock.py.diff?tr1=1.27&tr2=1.28&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/forms/src/GFObjects/GFEntry.py.diff?tr1=1.33&tr2=1.34&r1=text&r2=text
Patches:
Index: gnue/common/src/GObjects.py
diff -c gnue/common/src/GObjects.py:1.26 gnue/common/src/GObjects.py:1.27
*** gnue/common/src/GObjects.py:1.26 Wed Jan 30 13:54:45 2002
--- gnue/common/src/GObjects.py Wed Jan 30 19:28:49 2002
***************
*** 111,117 ****
return content
def showTree(self, indent=0):
! print ' '*indent + `self._type` + `self`
for child in self._children:
child.showTree(indent + 2)
--- 111,117 ----
return content
def showTree(self, indent=0):
! print ' ' * indent + `self._type` + `self`
for child in self._children:
child.showTree(indent + 2)
Index: gnue/common/src/GTrigger.py
diff -c gnue/common/src/GTrigger.py:1.4 gnue/common/src/GTrigger.py:1.5
*** gnue/common/src/GTrigger.py:1.4 Wed Jan 30 13:54:45 2002
--- gnue/common/src/GTrigger.py Wed Jan 30 19:28:49 2002
***************
*** 27,42 ****
#
# NOTES:
#
- from gnue.common.GObjects import GObj
import types
!
#
#
# Trigger namespace classes
#
#
-
#
# GTriggerNamespace
#
--- 27,43 ----
#
# NOTES:
#
import types
! import string
! from gnue.common.GObjects import GObj
! from gnue.common import GDebug
#
#
# Trigger namespace classes
#
+ # Classes used in implementing the trigger namespace
#
#
# GTriggerNamespace
#
***************
*** 46,123 ****
#
class GTriggerNamespace(GObj):
def __init__(self,objectTree = None):
if objectTree:
! self.constructTriggerObjectTree(objectTree)
else:
print "ERROR!"
!
!
! def constructTriggerObjectTree(self, gobjObject, triggerParent=None):
! triggerObject = GTriggerObject(triggerParent)
!
! print triggerObject._children
! # Process GObj children
! if len(gobjObject._children):
! for child in gobjObject._children:
! self.constructTriggerObjectTree(child, triggerObject)
!
! # This actually goes above
! #
! # if len(gobjObject._triggerNamespace):
! # for item in gobjObject._triggerNamespace.keys():
! # print "Parent ",parentObject
! # if type(gobjObject._triggerNamespace[item]) == types.MethodType:
! # trigObject =
GTriggerFunction(item,gobjObject._triggerNamespace[item])
! # print " ",trigObject
! # else:
! # print " This is an attribute ", item
! # if len(object._triggerProperties):
! # print "got properties"
#
# GTriggerObject
#
# Inherrits GObj to gain it's parent/child system
#
class GTriggerObject(GObj):
! def __init__(self,parent=None):
! print "Creating GTriggerObject"
! GObj.__init__(self, parent)
! print self._children
! # This needs to be overwritten to fill in the values
! # of a specific GTriggerAttribute via it's _set function
#
def __setattr__(self, name, value):
! pass
!
class GTriggerFunction:
def __init__(self, name, functionLink):
self._name = name
self._objectFunction = functionLink
def __call__(self, *args):
! self._objectFunction(*args)
!
! class GTriggerAttribute:
! def __init__(self, name, linkObject, varName):
! self._name = name
! self._linkedToObject = linkObject
! self._objectVarName = varName
!
! def __repr__(self):
! return self._linkedToObject.__dict__[self._objectVarName]
!
! # TODO: Need to think about this more :(
! def _set(self, value):
! self._linkedToObject.__dict__[self._objectVarName] = value
!
! import string
#
# GTriggerExtension
#
--- 47,234 ----
#
class GTriggerNamespace(GObj):
def __init__(self,objectTree = None):
+ self._globalNamespace = {'True' : 1,
+ 'False': 0,
+ }
if objectTree:
! 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"
! foo = self._globalNamespace['SampleBlock'].NameEntry
! print foo
! print "Attribute test without get defined"
! foo = self._globalNamespace['SampleBlock']
! print foo
! print "Setting value"
! 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)
+
+ # Add this objects children to it's namespace by their name
+ if object:
+ triggerObject.__dict__[child.name] = object
+
+ return triggerObject
+
+
#
# GTriggerObject
#
# Inherrits GObj to gain it's parent/child system
#
class GTriggerObject(GObj):
! def __init__(self, parent):
! GObj.__init__(self,parent)
! self._triggerProperties = []
! self._triggerSet = None
! self._triggerGet = None
!
!
! #
! # __setattr__
! #
! # This is called when trying to write something inside a trigger object
! # namespace. It checks to see if the var name is already linked to a
! # GTriggerObject based object and calls that objects _triggerSet if it
! # exists.
! #
! # Example: form.block1.entry1 = "foo"
! #
! # The __setattr__ will execute at the block1 and call the functions that
! # are part of the entry1 object to set it's value
#
def __setattr__(self, name, value):
! if self.__dict__.has_key(name) and \
! isinstance(self.__dict__[name], GTriggerObject):
!
! if self.__dict__[name]._triggerSet:
! self.__dict__[name]._triggerSet(value)
! else:
! GDebug.printMesg(0,'Trigger attempting to reset a form object')
! else:
! self.__dict__[name] = value
! #
! #
! #
! # def __getattr__(self,name):
! # if name == 'widgetProperties':
! # if has_key(self._triggerProperties,name):
! # return self._triggerProperties[name]
!
! #
! # __str__
! #
! # This executes at a different level than the __setattr__
! # While __setattr__ is executed in the parent object to protect
! # it's namespace object links, this routine is called by the
! # object referenced
! #
! # Example: foo = form.block1.entry1
! #
! # This __str__ would execute against the entry1 object
! #
! def __str__(self):
! if self._triggerGet:
! return self._triggerGet()
! else:
! return ""
!
! #
! # showTree
! #
! # Handy function to dump a rough look at the namespace
! # doesn't show things nested properly though
! def showTree(self, indent=0):
! print ' ' * indent + `self._type` + `self`
! for item in self.__dict__.keys():
! if item[:1] != '_':
! print ' ' * indent + ' :' + item
! for child in self._children:
! child.showTree(indent + 2)
!
!
! #
! # GTriggerFunction
! #
! # Accessor class for functions that are made available in the trigger
! # namespace
! #
class GTriggerFunction:
def __init__(self, name, functionLink):
self._name = name
self._objectFunction = functionLink
def __call__(self, *args):
! 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
#
Index: gnue/common/src/GTriggerCore.py
diff -c gnue/common/src/GTriggerCore.py:1.1 gnue/common/src/GTriggerCore.py:1.2
*** gnue/common/src/GTriggerCore.py:1.1 Wed Jan 30 14:02:24 2002
--- gnue/common/src/GTriggerCore.py Wed Jan 30 19:28:49 2002
***************
*** 38,44 ****
class GTriggerCore:
def __init__(self):
self._triggerGlobal = 0
- self._triggerTransparent = 0
self._triggerNamespace = {}
self._triggerProperties = {}
--- 38,50 ----
class GTriggerCore:
def __init__(self):
self._triggerGlobal = 0
self._triggerNamespace = {}
self._triggerProperties = {}
+ #
+ # Links to functions to be used when
+ # trigger attempts to directly set or get
+ # the objects by name
+ #
+ self._triggerSet = None
+ self._triggerGet = None
Index: gnue/forms/samples/intro/intro.gfd
diff -c gnue/forms/samples/intro/intro.gfd:1.2
gnue/forms/samples/intro/intro.gfd:1.3
*** gnue/forms/samples/intro/intro.gfd:1.2 Tue Nov 20 18:25:36 2001
--- gnue/forms/samples/intro/intro.gfd Wed Jan 30 19:28:49 2002
***************
*** 106,112 ****
<label x="3" y="3" width="20" name="Label_6" text="Year you were born:"/>
<label x="3" y="5" width="15" name="Label_7" text="Your Code Name:"/>
<block name="SampleBlock">
! <entry x="14" y="2" name="NameEntry" width="23">
<trigger type="PRE-FOCUSOUT" name="Trigger_1" src="PigLatin"/>
</entry>
<entry name="YearEntry" x="22" y="3" width="6"/>
--- 106,112 ----
<label x="3" y="3" width="20" name="Label_6" text="Year you were born:"/>
<label x="3" y="5" width="15" name="Label_7" text="Your Code Name:"/>
<block name="SampleBlock">
! <entry x="14" y="2" name="NameEntry" width="23" default="Foo!">
<trigger type="PRE-FOCUSOUT" name="Trigger_1" src="PigLatin"/>
</entry>
<entry name="YearEntry" x="22" y="3" width="6"/>
Index: gnue/forms/src/GFForm.py
diff -c gnue/forms/src/GFForm.py:1.141 gnue/forms/src/GFForm.py:1.142
*** gnue/forms/src/GFForm.py:1.141 Wed Jan 30 13:54:45 2002
--- gnue/forms/src/GFForm.py Wed Jan 30 19:28:49 2002
***************
*** 80,88 ****
}
# The "None" init gives datasources time to setup master/detail
! self._inits = [self.primaryInit, None, self.secondaryInit]
! # self._inits = [self.primaryInit, None, self.secondaryInit,
self.initTriggerSystem]
def _buildObject(self):
# Convert some deprecated options to new style
--- 80,92 ----
}
# The "None" init gives datasources time to setup master/detail
! self._inits = [self.primaryInit, None, self.secondaryInit,
self.initTriggerSystem]
+ #
+ # New trigger support
+ #
+ self._triggerGlobal = 1
+
def _buildObject(self):
# Convert some deprecated options to new style
Index: gnue/forms/src/GFObjects/GFBlock.py
diff -c gnue/forms/src/GFObjects/GFBlock.py:1.27
gnue/forms/src/GFObjects/GFBlock.py:1.28
*** gnue/forms/src/GFObjects/GFBlock.py:1.27 Wed Nov 14 15:44:28 2001
--- gnue/forms/src/GFObjects/GFBlock.py Wed Jan 30 19:28:49 2002
***************
*** 71,76 ****
--- 71,81 ----
self._gap = 0
self._rows = 1
+ #
+ # Trigger exposure
+ #
+ self._triggerGlobal = 1
+
def __getitem__(self, index):
cnt = self._resultSet.getRecordCount() - 1
Index: gnue/forms/src/GFObjects/GFEntry.py
diff -c gnue/forms/src/GFObjects/GFEntry.py:1.33
gnue/forms/src/GFObjects/GFEntry.py:1.34
*** gnue/forms/src/GFObjects/GFEntry.py:1.33 Wed Jan 30 13:54:45 2002
--- gnue/forms/src/GFObjects/GFEntry.py Wed Jan 30 19:28:49 2002
***************
*** 75,83 ****
self._triggerNamespace={'rows':self._rows,
'testFunc':self.testFunc,
}
def testFunc(self):
! print "I have to do something"
def _buildObject(self):
# Convert deprecated attributes
--- 75,98 ----
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
def testFunc(self):
! #return "I have to do something"
! 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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- gnue common/src/GObjects.py common/src/GTrigger...,
James Thompson <=