diff --git a/freecad/kiconnect/api.py b/freecad/kiconnect/api.py index 31c05ed..698c590 100644 --- a/freecad/kiconnect/api.py +++ b/freecad/kiconnect/api.py @@ -2,6 +2,7 @@ import FreeCAD as App import FreeCADGui as Gui from kipy import KiCad +from kipy.proto.common.types import DocumentType from . import settings from .bases import BaseObject, BaseViewProvider @@ -14,6 +15,7 @@ class APIObject(BaseObject): feature.addProperty('App::PropertyFile', 'Socket', 'KiConnect', 'Path to the KiCAD Socket File').Socket = '/tmp/kicad/api.lock' feature.addProperty('App::PropertyBool', 'Connected', 'KiConnect', 'Is socket connected') + feature.addProperty('App::PropertyInteger', 'DocumentCount', 'KiConnect', 'Count of open Documnets') self.onDocumentRestored(feature) @@ -44,20 +46,31 @@ class APIObject(BaseObject): Ping the KiCAD API to determine if it's connected ''' + connection_status = 'Disconnected' + document_status = 'No Documents' + try: self.kicad.ping() feature.Connected = True - feature.Label2 = 'Connected' - - return True + connection_status = 'Connected' except Exception as e: - print(e) feature.Connected = False - feature.Label2 = 'Disconnected' + connection_status = 'Disconnected' - return False + if feature.Connected: + try: + docs = self.kicad.get_open_documents(DocumentType.DOCTYPE_PCB) + document_status = f'{len(docs)} Documents' + feature.DocumentCount = len(docs) + except Exception as e: + print(e) + feature.DocumentCount = 0 + + feature.Label2 = f'{connection_status} ({document_status})' + + return feature.Connected class APIViewProvider(BaseViewProvider):