From e5ec81b2ddf5bdb148466a3021ff17382eb74395 Mon Sep 17 00:00:00 2001 From: "Morgan 'ARR\\!' Allen" Date: Mon, 7 Apr 2025 17:10:25 -0700 Subject: [PATCH] move TYPE/ICON declarations to Object/ViewObject classes --- freecad/kiconnect/api.py | 30 ++++++++++++++++----- freecad/kiconnect/bases/BaseViewProvider.py | 9 +++---- freecad/kiconnect/copper.py | 2 +- freecad/kiconnect/parts.py | 2 +- 4 files changed, 30 insertions(+), 13 deletions(-) diff --git a/freecad/kiconnect/api.py b/freecad/kiconnect/api.py index 00ba5cf..14d7b35 100644 --- a/freecad/kiconnect/api.py +++ b/freecad/kiconnect/api.py @@ -7,6 +7,8 @@ from . import settings from .bases import BaseObject, BaseViewProvider class APIObject(BaseObject): + TYPE = 'KiConnect::API' + def __init__(self, parent, feature): super(APIObject, self).__init__(parent, feature) @@ -19,9 +21,6 @@ class APIObject(BaseObject): class APIViewProvider(BaseViewProvider): pass -class API(): - ICON = 'icon_footprint_browser.svg' - TYPE = 'KiConnect::API' def __init__(self): self.feature = App.ActiveDocument.addObject('App::FeaturePython', 'API') @@ -39,6 +38,25 @@ class API(): def ping_connection(self): try: self.kicad.ping() - self._connected = True - except: - self._connected = False + feature.Connected = True + except Exception as e: + print(e) + feature.Connected = False + pass + + +class APIViewProvider(BaseViewProvider): + ICON = 'icon_footprint_browser.svg' + TYPE = 'KiConnect::API' + + def __init__(self, parent, viewprovider): + super(APIViewProvider, self).__init__(parent, viewprovider) + + +class API(): + def __init__(self): + self.feature = App.ActiveDocument.addObject('App::FeaturePython', 'API') + + self.object = APIObject(self, self.feature) + self.viewobject = APIViewProvider(self, self.feature.ViewObject) + diff --git a/freecad/kiconnect/bases/BaseViewProvider.py b/freecad/kiconnect/bases/BaseViewProvider.py index d1858eb..e4b7ab7 100644 --- a/freecad/kiconnect/bases/BaseViewProvider.py +++ b/freecad/kiconnect/bases/BaseViewProvider.py @@ -5,6 +5,10 @@ from pivy import coin from .. import settings class BaseViewProvider: + ICON = None + TYPE = None + VIEWPROVIDER_EXTENSIONS = [] + def __init__(self, parent, viewprovider): self.parent = parent self.viewprovider = viewprovider @@ -13,11 +17,6 @@ class BaseViewProvider: viewprovider.Proxy = self - self.Type = '' - - if hasattr(self, 'TYPE'): - self.Type = self.TYPE - self.setup_extensions() def setup_extensions(self): diff --git a/freecad/kiconnect/copper.py b/freecad/kiconnect/copper.py index 3e69a13..be1e640 100644 --- a/freecad/kiconnect/copper.py +++ b/freecad/kiconnect/copper.py @@ -16,7 +16,7 @@ materials_manager = Materials.MaterialManager() gold = materials_manager.Materials[gold_mat_uuid] class CopperObject(BaseObject): - pass + TYPE = 'KiConnect::Copper' class CopperViewProvider(BaseViewProvider): ICON = 'show_all_copper_layers.svg' diff --git a/freecad/kiconnect/parts.py b/freecad/kiconnect/parts.py index d2f30de..09ad44a 100644 --- a/freecad/kiconnect/parts.py +++ b/freecad/kiconnect/parts.py @@ -13,7 +13,7 @@ from . import settings from .bases import BaseObject, BaseViewProvider class PartsObject(BaseObject): - pass + TYPE = 'KiConnect::Parts' class PartsViewProvider(BaseViewProvider): ICON = 'icon_footprint_browser.svg'