From 9f7861135dbf7adad22912b3e8eb77b5091b9162 Mon Sep 17 00:00:00 2001 From: tarman3 Date: Tue, 16 Dec 2025 12:37:03 +0200 Subject: [PATCH] CAM: Array - Fix ViewProviderArray and icon --- src/Mod/CAM/Path/Op/Gui/Array.py | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/src/Mod/CAM/Path/Op/Gui/Array.py b/src/Mod/CAM/Path/Op/Gui/Array.py index 9fcb587f80..c1801bd2bf 100644 --- a/src/Mod/CAM/Path/Op/Gui/Array.py +++ b/src/Mod/CAM/Path/Op/Gui/Array.py @@ -187,6 +187,9 @@ class ObjectArray: if prop == "Type": self.setEditorModes(obj) + if prop == "Active" and obj.ViewObject: + obj.ViewObject.signalChangeIcon() + def onDocumentRestored(self, obj): """onDocumentRestored(obj) ... Called automatically when document is restored.""" @@ -455,12 +458,12 @@ class PathArray: class ViewProviderArray: def __init__(self, vobj): - self.Object = vobj.Object + self.attach(vobj) vobj.Proxy = self def attach(self, vobj): - self.Object = vobj.Object - return + self.vobj = vobj + self.obj = vobj.Object def dumps(self): return None @@ -468,13 +471,21 @@ class ViewProviderArray: def loads(self, state): return None + def onChanged(self, vobj, prop): + return None + def claimChildren(self): - if hasattr(self, "Object"): - if hasattr(self.Object, "Base"): - if self.Object.Base: - return self.Object.Base return [] + def onDelete(self, vobj, args): + return None + + def getIcon(self): + if self.obj.Active: + return ":/icons/CAM_Array.svg" + else: + return ":/icons/CAM_OpActive.svg" + class CommandPathArray: def GetResources(self): @@ -535,7 +546,9 @@ class CommandPathArray: ) FreeCADGui.doCommand("obj.Base = %s" % baseString) - FreeCADGui.doCommand("obj.ViewObject.Proxy = 0") + FreeCADGui.doCommand( + "obj.ViewObject.Proxy = Path.Op.Gui.Array.ViewProviderArray(obj.ViewObject)" + ) FreeCADGui.doCommand("PathScripts.PathUtils.addToJob(obj)") FreeCAD.ActiveDocument.commitTransaction() FreeCAD.ActiveDocument.recompute()