commit-gnue
[Top][All Lists]
Advanced

[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



reply via email to

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