add save_keys functionality to BaseViewProvider (mixin?) and fixed icon loading

This commit is contained in:
Morgan 'ARR\!' Allen 2025-07-10 12:11:46 -07:00
parent 417a7065de
commit b191a28a0a
2 changed files with 22 additions and 10 deletions

View file

@ -17,9 +17,7 @@ class BaseObject:
self.sync_from() self.sync_from()
def execute(self, feature): def execute(self, feature):
# TODO this might not be the right move pass
print(self, 'BaseObject.execute')
#self.onDocumentRestored(feature)
def get_api(self): def get_api(self):
p = self.feature p = self.feature

View file

@ -9,6 +9,8 @@ class BaseViewProvider:
TYPE = None TYPE = None
EXTENSIONS = [] EXTENSIONS = []
save_keys = []
def __init__(self, viewprovider): def __init__(self, viewprovider):
self.viewprovider = viewprovider self.viewprovider = viewprovider
self.feature = viewprovider.Object.Proxy.feature self.feature = viewprovider.Object.Proxy.feature
@ -16,6 +18,7 @@ class BaseViewProvider:
self.icon = '' self.icon = ''
if self.ICON: if self.ICON:
print('>', settings.ICONPATH, self.ICON, os.path.join(settings.ICONPATH, self.ICON))
self.icon = os.path.join(settings.ICONPATH, self.ICON) self.icon = os.path.join(settings.ICONPATH, self.ICON)
viewprovider.Proxy = self viewprovider.Proxy = self
@ -36,6 +39,7 @@ class BaseViewProvider:
Gui.Selection.clearSelection() Gui.Selection.clearSelection()
def getIcon(self): def getIcon(self):
print(self.icon)
return self.icon return self.icon
def getDisplayModes(self,obj): def getDisplayModes(self,obj):
@ -46,11 +50,21 @@ class BaseViewProvider:
'''Return the name of the default display mode. It must be defined in getDisplayModes.''' '''Return the name of the default display mode. It must be defined in getDisplayModes.'''
return 'Standard' return 'Standard'
def __getstate__(self): def dumps(self):
return { data = [ getattr(self, 'icon') ]
'icon': self.icon
}
def __setstate__(self, props): if len(self.save_keys) > 0:
for prop in props: for key in self.save_keys:
setattr(self, prop, props[prop]) try:
data.append(getattr(self, key))
except Exception as e:
#XXX logging
print(e)
return tuple(data)
def loads(self, state):
self.icon = state[0]
for idx, key in enumerate(self.save_keys):
setattr(self, key, state[idx + 1])