kiconnect/freecad/kiconnect/bases/BaseObject.py
2025-05-16 17:51:18 -07:00

66 lines
1.5 KiB
Python

class BaseObject:
EXTENSIONS = []
TYPE = None
def __init__(self, feature):
self.feature = feature
feature.Proxy = self
self.setup_properties(feature)
self.setup_extensions(feature)
feature.Type = self.TYPE
self.sync_from()
def execute(self, feature):
# TODO this might not be the right move
print(self, 'BaseObject.execute')
#self.onDocumentRestored(feature)
def get_api(self):
p = self.feature
while p:
if p.Type == 'KiConnect::Project':
return [ o for o in p.Group if hasattr(o, 'Type') and o.Type == 'KiConnect::API' ][0].Proxy
p = p.getParent()
return None
def isChildOf(self, parent):
p = self.feature
while p:
if p == parent:
return True
p = p.getParent()
return False
def onBeforeChange(self, feature, prop):
pass
def onChanged(self, feature, prop):
pass
def onDocumentRestored(self, feature):
self.feature = feature
def setup_extensions(self, feature):
if hasattr(self, 'EXTENSIONS'):
for ext in self.EXTENSIONS:
self.feature.addExtension(ext)
def setup_properties(self, feature):
feature.addProperty('App::PropertyString', 'Type', 'KiConnect', 'Internal KiConnect Type', read_only=True, hidden=True)
def sync_from(self):
pass
def sync_to(self):
pass
def __getstate__(self):
return None