From 5283c4e52d82f0404b37017693ea78b6a66b6ece Mon Sep 17 00:00:00 2001 From: Markus Lampert Date: Wed, 30 Aug 2017 19:50:49 -0700 Subject: [PATCH] Delete all subobjects of a job when the job itself is deleted. --- src/Mod/Path/PathScripts/PathJob.py | 18 +++++++++++++----- src/Mod/Path/PathScripts/PathJobGui.py | 5 +++++ 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/Mod/Path/PathScripts/PathJob.py b/src/Mod/Path/PathScripts/PathJob.py index d8682a7b57..3731de666e 100644 --- a/src/Mod/Path/PathScripts/PathJob.py +++ b/src/Mod/Path/PathScripts/PathJob.py @@ -97,15 +97,23 @@ class ObjectJob: self.assignTemplate(obj, template) def onDelete(self, obj, arg2=None): - PathLog.track(obj, arg2) + '''Called by the view provider, there doesn't seem to be a callback on the obj itself.''' + PathLog.track(obj.Label, arg2) + doc = obj.Document for tc in obj.ToolController: - FreeCAD.ActiveDocument.removeObject(tc.Name) + doc.removeObject(tc.Name) obj.ToolController = [] - for op in obj.Operations.Group: - FreeCAD.ActiveDocument.removeObject(op.Name) + while obj.Operations.Group: + doc.removeObject(obj.Operations.Group[0].Name) obj.Operations.Group = [] - FreeCAD.ActiveDocument.removeObject(obj.Operations.Name) + doc.removeObject(obj.Operations.Name) obj.Operations = None + if obj.Base: + doc.removeObject(obj.Base.Name) + obj.Base = None + if obj.Stock: + doc.removeObject(obj.Stock.Name) + obj.Stock = None def isResourceClone(self, obj, propName, resourceName): if hasattr(obj, propName): diff --git a/src/Mod/Path/PathScripts/PathJobGui.py b/src/Mod/Path/PathScripts/PathJobGui.py index b30c7bae4a..65b7b7a309 100644 --- a/src/Mod/Path/PathScripts/PathJobGui.py +++ b/src/Mod/Path/PathScripts/PathJobGui.py @@ -99,6 +99,11 @@ class ViewProvider: children.append(self.obj.Stock) return children + def onDelete(self, vobj, arg2=None): + PathLog.track(vobj.Object.Label, arg2) + self.obj.Proxy.onDelete(self.obj, arg2) + return True + class TaskPanel: DataObject = QtCore.Qt.ItemDataRole.UserRole DataProperty = QtCore.Qt.ItemDataRole.UserRole + 1