From b191a28a0a2c73d21c5e6b8ef4406506a00adedb Mon Sep 17 00:00:00 2001 From: "Morgan 'ARR\\!' Allen" Date: Thu, 10 Jul 2025 12:11:46 -0700 Subject: [PATCH] add save_keys functionality to BaseViewProvider (mixin?) and fixed icon loading --- freecad/kiconnect/bases/BaseObject.py | 4 +-- freecad/kiconnect/bases/BaseViewProvider.py | 28 +++++++++++++++------ 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/freecad/kiconnect/bases/BaseObject.py b/freecad/kiconnect/bases/BaseObject.py index 5aa8fd5..7eb5766 100644 --- a/freecad/kiconnect/bases/BaseObject.py +++ b/freecad/kiconnect/bases/BaseObject.py @@ -17,9 +17,7 @@ class BaseObject: self.sync_from() def execute(self, feature): - # TODO this might not be the right move - print(self, 'BaseObject.execute') - #self.onDocumentRestored(feature) + pass def get_api(self): p = self.feature diff --git a/freecad/kiconnect/bases/BaseViewProvider.py b/freecad/kiconnect/bases/BaseViewProvider.py index 18affc4..4d5dfab 100644 --- a/freecad/kiconnect/bases/BaseViewProvider.py +++ b/freecad/kiconnect/bases/BaseViewProvider.py @@ -9,6 +9,8 @@ class BaseViewProvider: TYPE = None EXTENSIONS = [] + save_keys = [] + def __init__(self, viewprovider): self.viewprovider = viewprovider self.feature = viewprovider.Object.Proxy.feature @@ -16,6 +18,7 @@ class BaseViewProvider: 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) viewprovider.Proxy = self @@ -36,6 +39,7 @@ class BaseViewProvider: Gui.Selection.clearSelection() def getIcon(self): + print(self.icon) return self.icon 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 'Standard' - def __getstate__(self): - return { - 'icon': self.icon - } + def dumps(self): + data = [ getattr(self, 'icon') ] - def __setstate__(self, props): - for prop in props: - setattr(self, prop, props[prop]) + if len(self.save_keys) > 0: + for key in self.save_keys: + 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])