text: """
  __Attribute.py_____________________________________________________
  
  Automatically generated AToM3 syntactic object (DO NOT MODIFY DIRECTLY)
  Author: gehan
  Modified: Sat Aug 30 18:23:40 2014
  ___________________________________________________________________
  """
  from ASGNode import *
  
  from ATOM3Type import *
  
  from ATOM3Enum import *
  from ATOM3String import *
  from graph_Attribute import *
  class Attribute(ASGNode, ATOM3Type):
  
     def __init__(self, parent = None):
        ASGNode.__init__(self)
        ATOM3Type.__init__(self)
        self.superTypes = ['Expression']
        self.graphClass_ = graph_Attribute
        self.isGraphObjectVisual = True
        if(hasattr(self, '_setHierarchicalLink')):
          self._setHierarchicalLink(False)
        if(hasattr(self, '_setHierarchicalNode')):
          self._setHierarchicalNode(False)
        self.parent = parent
        self.Type=ATOM3Enum(['String', 'Bool', 'Integer', 'Float'], None, 0)
        self.Type.setNone()
        self.name=ATOM3String('exp_', 20)
        self.generatedAttributes = {'Type': ('ATOM3Enum', ),
                                    'name': ('ATOM3String', )      }
        self.realOrder = ['Type','name']
        self.directEditing = [1,1]
     def clone(self):
        cloneObject = Attribute( self.parent )
        for atr in self.realOrder:
           cloneObject.setAttrValue(atr, self.getAttrValue(atr).clone() )
        ASGNode.cloneActions(self, cloneObject)
  
        return cloneObject
     def copy(self, other):
        ATOM3Type.copy(self, other)
        for atr in self.realOrder:
           self.setAttrValue(atr, other.getAttrValue(atr) )
        ASGNode.copy(self, other)
  
     def preCondition (self, actionID, * params):
        if self.graphObject_:
           return self.graphObject_.preCondition(actionID, params)
        else: return None
     def postCondition (self, actionID, * params):
        if self.graphObject_:
           return self.graphObject_.postCondition(actionID, params)
        else: return None
     def preAction (self, actionID, * params):
        if self.graphObject_:
           return self.graphObject_.preAction(actionID, params)
        else: return None
     def postAction (self, actionID, * params):
        if self.graphObject_:
           return self.graphObject_.postAction(actionID, params)
        else: return None
     def QOCA(self, params):
        """
        QOCA Constraint Template
        NOTE: DO NOT select a POST/PRE action trigger
        Constraints will be added/removed in a logical manner by other mechanisms.
        """
        return # <---- Remove this to use QOCA
        
        """ Get the high level constraint helper and solver """
        from Qoca.atom3constraints.OffsetConstraints import OffsetConstraints
        oc = OffsetConstraints(self.parent.qocaSolver)  
        
        """
        Example constraint, see Kernel/QOCA/atom3constraints/OffsetConstraints.py
        For more types of constraints
        """
        oc.fixedWidth(self.graphObject_, self.graphObject_.sizeX)
        oc.fixedHeight(self.graphObject_, self.graphObject_.sizeY)
        
        
  
  
  
  