diff --git a/src/Mod/Path/PathScripts/PathOpGui.py b/src/Mod/Path/PathScripts/PathOpGui.py index f2564480b1..fd28dfcd08 100644 --- a/src/Mod/Path/PathScripts/PathOpGui.py +++ b/src/Mod/Path/PathScripts/PathOpGui.py @@ -223,6 +223,11 @@ class TaskPanelPage(object): Do not overwrite, implement setFields(obj) instead.''' self.setFields(self.obj) + def pageCleanup(self): + '''pageCleanup() ... internal callback. + Do not overwrite, implement cleanupPage(obj) instead.''' + self.cleanupPage(self.obj) + def pageRegisterSignalHandlers(self): '''pageRegisterSignalHandlers() .. internal callback. Registers a callback for all signals returned by getSignalsForUpdate(obj). @@ -262,6 +267,11 @@ class TaskPanelPage(object): Should be overwritten by subclasses.''' pass + def cleanupPage(self, obj): + '''cleanupPage(obj) ... overwrite to perform any cleanup tasks before page is destroyed. + Can safely be overwritten by subclasses.''' + pass + def modifyStandardButtons(self, buttonBox): '''modifyStandardButtons(buttonBox) ... overwrite if the task panel standard buttons need to be modified. Can safely be overwritten by subclasses.''' @@ -878,6 +888,7 @@ class TaskPanel(object): def cleanup(self, resetEdit): '''cleanup() ... implements common cleanup tasks.''' + self.panelCleanup() FreeCADGui.Control.closeDialog() if resetEdit: FreeCADGui.ActiveDocument.resetEdit() @@ -913,6 +924,12 @@ class TaskPanel(object): for page in self.featurePages: page.pageSetFields() + def panelCleanup(self): + '''panelCleanup() ... invoked before the receiver is destroyed.''' + PathLog.track() + for page in self.featurePages: + page.pageCleanup() + def open(self): '''open() ... callback invoked when the task panel is opened.''' self.selectionFactory() diff --git a/src/Mod/Path/PathScripts/PathPocketShapeGui.py b/src/Mod/Path/PathScripts/PathPocketShapeGui.py index 5b53a203e1..938bf2b1d7 100644 --- a/src/Mod/Path/PathScripts/PathPocketShapeGui.py +++ b/src/Mod/Path/PathScripts/PathPocketShapeGui.py @@ -112,6 +112,9 @@ class TaskPanelExtensionPage(PathOpGui.TaskPanelPage): self.obj.ViewObject.RootNode.addChild(self.switch) self.switch.whichChild = coin.SO_SWITCH_ALL + def cleanupPage(self, obj): + self.obj.ViewObject.RootNode.removeChild(self.switch) + def enable(self, ena): if ena != self.enabled: self.enabled = ena