Cleanup so artifacts on task panel close.

This commit is contained in:
markus
2018-09-25 12:52:04 -07:00
committed by wmayer
parent 1c74eee9df
commit 1b214515d9
2 changed files with 20 additions and 0 deletions

View File

@@ -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()

View File

@@ -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