diff --git a/freecad/kiconnect/commands/Syncable.py b/freecad/kiconnect/commands/Syncable.py new file mode 100644 index 0000000..42f64ae --- /dev/null +++ b/freecad/kiconnect/commands/Syncable.py @@ -0,0 +1,18 @@ +import FreeCADGui as Gui + +class Syncable: + SYNCABLES = [ 'KiConnect::Project', 'KiConnect::Board', 'KiConnect::Parts', 'KiConnect::BoardBody', ] + + def IsActive(self): + sel = Gui.Selection.getSelection() + + print(len(sel)) + if len(sel) == 0: return False + + print(sel, self.SYNCABLES) + + for obj in sel: + if obj.Type not in self.SYNCABLES: + return False + + return True diff --git a/freecad/kiconnect/commands/cmd_sync_from.py b/freecad/kiconnect/commands/cmd_sync_from.py index 3b1f5e5..2005d88 100644 --- a/freecad/kiconnect/commands/cmd_sync_from.py +++ b/freecad/kiconnect/commands/cmd_sync_from.py @@ -7,7 +7,9 @@ import sys from .. import settings from ..project import Project -class Sync: +from .Syncable import Syncable + +class SyncFrom(Syncable): def GetResources(self): tooltip = '

Reload Board from KiCAD.

' iconFile = os.path.join(settings.ICONPATH, 'import_brd_file.svg') @@ -26,4 +28,4 @@ class Sync: App.ActiveDocument.recompute() -Gui.addCommand('kiconn_sync_from', Sync()) +Gui.addCommand('kiconn_sync_from', SyncFrom()) diff --git a/freecad/kiconnect/commands/cmd_sync_to.py b/freecad/kiconnect/commands/cmd_sync_to.py index 3ddc617..e7190b7 100644 --- a/freecad/kiconnect/commands/cmd_sync_to.py +++ b/freecad/kiconnect/commands/cmd_sync_to.py @@ -6,7 +6,9 @@ import sys from .. import settings from ..project import Project -class Sync: +from .Syncable import Syncable + +class SyncTo(Syncable): def GetResources(self): tooltip = '

Update Board in KiCAD.

' iconFile = os.path.join(settings.ICONPATH, 'export_to_pcbnew.svg') @@ -26,4 +28,4 @@ class Sync: -Gui.addCommand('kiconn_sync_to', Sync()) +Gui.addCommand('kiconn_sync_to', SyncTo())