FreeCAD/src/Mod/TemplatePyMod/DocumentObject.py
2011-10-10 13:44:52 +00:00

180 lines
5.8 KiB
Python

# FreeCAD module provding base classes for document objects and view provider
# (c) 2011 Werner Mayer LGPL
class DocumentObject(object):
def __init__(self):
self.__object__=None
def execute(self):
raise Exception("Not yet implemented")
#def onChanged(self,prop):
# return None
#def __getattr__(self, attr):
# if hasattr(self.__object__,attr):
# return getattr(self.__object__,attr)
# else:
# return object.__getattribute__(self,attr)
def addProperty(self,type,name='',group='',doc='',attr=0,readonly=False,hidden=False):
self.__object__.addProperty(type,name,group,doc,attr,readonly,hidden)
def supportedProperties(self):
return self.__object__.supportedProperties()
def isDerivedFrom(self, obj):
return self.__object__.isDerivedFrom(obj)
def getAllDerivedFrom(self):
return self.__object__.getAllDerivedFrom()
def getProperty(self,attr):
return self.__object__.getPropertyByName(attr)
def getTypeOfProperty(self,attr):
return self.__object__.getTypeOfProperty(attr)
def getGroupOfProperty(self,attr):
return self.__object__.getGroupOfProperty(attr)
def getDocumentationOfProperty(self,attr):
return self.__object__.getDocumentationOfProperty(attr)
def touch(self):
return self.__object__.touch()
def purgeTouched(self):
return self.__object__.purgeTouched()
def __setstate__(self,value):
return None
def __getstate__(self):
return None
@property
def PropertiesList(self):
return self.__object__.PropertiesList
@property
def Type(self):
return self.__object__.Type
@property
def Module(self):
return self.__object__.Module
@property
def Content(self):
return self.__object__.Content
@property
def MemSize(self):
return self.__object__.MemSize
@property
def Name(self):
return self.__object__.Name
@property
def Document(self):
return self.__object__.Document
@property
def State(self):
return self.__object__.State
@property
def ViewObject(self):
return self.__object__.ViewObject
@ViewObject.setter
def ViewObject(self,value):
self.__object__.ViewObject=value
@property
def InList(self):
return self.__object__.InList
@property
def OutList(self):
return self.__object__.OutList
class ViewProvider(object):
def __init__(self):
self.__vobject__=None
#def getIcon(self):
# return ""
#def claimChildren(self):
# return []
#def setEdit(self,mode):
# return False
#def unsetEdit(self,mode):
# return False
#def attach(self):
# return None
#def updateData(self, prop):
# return None
#def onChanged(self, prop):
# return None
def addDisplayMode(self,node,mode):
self.__vobject__.addDisplayMode(node,mode)
#def getDefaultDisplayMode(self):
# return ""
#def getDisplayModes(self):
# return []
#def setDisplayMode(self,mode):
# return mode
def addProperty(self,type,name='',group='',doc='',attr=0,readonly=False,hidden=False):
self.__vobject__.addProperty(type,name,group,doc,attr,readonly,hidden)
def update(self):
self.__vobject__.update()
def show(self):
self.__vobject__.show()
def hide(self):
self.__vobject__.hide()
def isVisible(self):
return self.__vobject__.isVisible()
def toString(self):
return self.__vobject__.toString()
def startEditing(self,mode=0):
return self.__vobject__.startEditing(mode)
def finishEditing(self):
self.__vobject__.finishEditing()
def isEditing(self):
self.__vobject__.isEditing()
def setTransformation(self,trsf):
return self.__vobject__.setTransformation(trsf)
def supportedProperties(self):
return self.__vobject__.supportedProperties()
def isDerivedFrom(self, obj):
return self.__vobject__.isDerivedFrom(obj)
def getAllDerivedFrom(self):
return self.__vobject__.getAllDerivedFrom()
def getProperty(self,attr):
return self.__vobject__.getPropertyByName(attr)
def getTypeOfProperty(self,attr):
return self.__vobject__.getTypeOfProperty(attr)
def getGroupOfProperty(self,attr):
return self.__vobject__.getGroupOfProperty(attr)
def getDocumentationOfProperty(self,attr):
return self.__vobject__.getDocumentationOfProperty(attr)
@property
def Annotation(self):
return self.__vobject__.Annotation
@property
def RootNode(self):
return self.__vobject__.RootNode
@property
def DisplayModes(self):
return self.__vobject__.listDisplayModes()
@property
def PropertiesList(self):
return self.__vobject__.PropertiesList
@property
def Type(self):
return self.__vobject__.Type
@property
def Module(self):
return self.__vobject__.Module
@property
def Content(self):
return self.__vobject__.Content
@property
def MemSize(self):
return self.__vobject__.MemSize
@property
def Object(self):
return self.__vobject__.Object
### Examples
class MyFeature(DocumentObject):
def execute(self):
print "Execute my feature"
def onChanged(self,prop):
print "Property %s has changed" % (prop)
def testMethod():
import FreeCAD
doc=FreeCAD.newDocument()
obj=MyFeature()
doc.addObject("Mesh::FeaturePython","MyName",obj,None)
obj.addProperty("App::PropertyLinkList","Layers","Base", "Layers")