Proper taskk panel cleanup on escape.
This commit is contained in:
@@ -135,7 +135,7 @@ public:
|
||||
{
|
||||
#ifdef FC_DEBUG
|
||||
size_t count = _ObserverSet.size();
|
||||
printf("Attach observer %p\n", ToObserv);
|
||||
//printf("Attach observer %p\n", ToObserv);
|
||||
_ObserverSet.insert(ToObserv);
|
||||
if ( _ObserverSet.size() == count )
|
||||
printf("Observer %p already attached\n", ToObserv);
|
||||
@@ -154,7 +154,7 @@ public:
|
||||
{
|
||||
#ifdef FC_DEBUG
|
||||
size_t count = _ObserverSet.size();
|
||||
printf("Detach observer %p\n", ToObserv);
|
||||
//printf("Detach observer %p\n", ToObserv);
|
||||
_ObserverSet.erase(ToObserv);
|
||||
if ( _ObserverSet.size() == count )
|
||||
printf("Observer %p already detached\n", ToObserv);
|
||||
|
||||
@@ -1044,27 +1044,29 @@ class TaskPanel:
|
||||
def modifyStandardButtons(self, buttonBox):
|
||||
self.buttonBox = buttonBox
|
||||
|
||||
def reject(self):
|
||||
PathLog.info("reject")
|
||||
def abort(self):
|
||||
FreeCAD.ActiveDocument.abortTransaction()
|
||||
self.cleanup()
|
||||
self.cleanup(False)
|
||||
|
||||
def reject(self):
|
||||
FreeCAD.ActiveDocument.abortTransaction()
|
||||
self.cleanup(True)
|
||||
|
||||
def accept(self):
|
||||
PathLog.info("accept")
|
||||
self.getFields()
|
||||
FreeCAD.ActiveDocument.commitTransaction()
|
||||
self.cleanup()
|
||||
self.cleanup(True)
|
||||
FreeCAD.ActiveDocument.recompute()
|
||||
|
||||
def cleanup(self):
|
||||
PathLog.info("cleanup")
|
||||
def cleanup(self, gui):
|
||||
self.removeGlobalCallbacks()
|
||||
self.viewProvider.clearTaskPanel()
|
||||
FreeCADGui.ActiveDocument.resetEdit()
|
||||
FreeCADGui.Control.closeDialog()
|
||||
FreeCAD.ActiveDocument.recompute()
|
||||
if self.jvoVisible:
|
||||
self.jvo.show()
|
||||
if gui:
|
||||
FreeCADGui.ActiveDocument.resetEdit()
|
||||
FreeCADGui.Control.closeDialog()
|
||||
FreeCAD.ActiveDocument.recompute()
|
||||
if self.jvoVisible:
|
||||
self.jvo.show()
|
||||
|
||||
def getTags(self, includeCurrent):
|
||||
tags = []
|
||||
@@ -1357,6 +1359,7 @@ class ViewProviderDressup:
|
||||
|
||||
def __init__(self, vobj):
|
||||
vobj.Proxy = self
|
||||
self.panel = None
|
||||
|
||||
def setupColors(self):
|
||||
def colorForColorValue(val):
|
||||
@@ -1401,8 +1404,11 @@ class ViewProviderDressup:
|
||||
self.setupTaskPanel(panel)
|
||||
return True
|
||||
|
||||
def unsetEdit(self, vobj, mode):
|
||||
if hasattr(self, 'panel') and self.panel:
|
||||
self.panel.abort()
|
||||
|
||||
def setupTaskPanel(self, panel):
|
||||
PathLog.info("setupTaskPanel")
|
||||
self.panel = panel
|
||||
FreeCADGui.Control.closeDialog()
|
||||
FreeCADGui.Control.showDialog(panel)
|
||||
@@ -1411,7 +1417,6 @@ class ViewProviderDressup:
|
||||
FreeCADGui.Selection.addObserver(self)
|
||||
|
||||
def clearTaskPanel(self):
|
||||
PathLog.info("clearTaskPanel")
|
||||
self.panel = None
|
||||
FreeCADGui.Selection.removeSelectionGate()
|
||||
FreeCADGui.Selection.removeObserver(self)
|
||||
|
||||
@@ -182,6 +182,7 @@ class ViewProviderJob:
|
||||
vobj.setEditorMode('Selectable', mode)
|
||||
vobj.setEditorMode('ShapeColor', mode)
|
||||
vobj.setEditorMode('Transparency', mode)
|
||||
self.taskPanel = None
|
||||
|
||||
def __getstate__(self): # mandatory
|
||||
return None
|
||||
@@ -194,12 +195,19 @@ class ViewProviderJob:
|
||||
|
||||
def setEdit(self, vobj, mode=0):
|
||||
FreeCADGui.Control.closeDialog()
|
||||
taskd = TaskPanel(vobj.Object, self.deleteObjectsOnReject())
|
||||
FreeCADGui.Control.showDialog(taskd)
|
||||
taskd.setupUi()
|
||||
self.taskPanel = TaskPanel(vobj, self.deleteObjectsOnReject())
|
||||
FreeCADGui.Control.showDialog(self.taskPanel)
|
||||
self.taskPanel.setupUi()
|
||||
self.deleteOnReject = False
|
||||
return True
|
||||
|
||||
def unsetEdit(self, vobj, mode):
|
||||
if self.taskPanel:
|
||||
self.taskPanel.reject()
|
||||
|
||||
def resetTaskPanel(self):
|
||||
self.taskPanel = None
|
||||
|
||||
def getIcon(self):
|
||||
return ":/icons/Path-Job.svg"
|
||||
|
||||
@@ -213,14 +221,15 @@ class ViewProviderJob:
|
||||
|
||||
|
||||
class TaskPanel:
|
||||
def __init__(self, obj, deleteOnReject):
|
||||
def __init__(self, vobj, deleteOnReject):
|
||||
FreeCAD.ActiveDocument.openTransaction(translate("Path_Job", "Edit Job"))
|
||||
self.obj = obj
|
||||
self.vobj = vobj
|
||||
self.obj = vobj.Object
|
||||
self.deleteOnReject = deleteOnReject
|
||||
self.form = FreeCADGui.PySideUic.loadUi(":/panels/JobEdit.ui")
|
||||
#self.form = FreeCADGui.PySideUic.loadUi(FreeCAD.getHomePath() + "Mod/Path/JobEdit.ui")
|
||||
|
||||
currentPostProcessor = obj.PostProcessor
|
||||
currentPostProcessor = self.obj.PostProcessor
|
||||
postProcessors = PathPreferences.allEnabledPostProcessors(['', currentPostProcessor])
|
||||
for post in postProcessors:
|
||||
self.form.cboPostProcessor.addItem(post)
|
||||
@@ -236,13 +245,16 @@ class TaskPanel:
|
||||
self.postProcessorArgsDefaultTooltip = self.form.cboPostProcessorArgs.toolTip()
|
||||
|
||||
def accept(self):
|
||||
PathLog.error('accept')
|
||||
self.getFields()
|
||||
FreeCADGui.ActiveDocument.resetEdit()
|
||||
FreeCADGui.Control.closeDialog()
|
||||
FreeCAD.ActiveDocument.commitTransaction()
|
||||
FreeCAD.ActiveDocument.recompute()
|
||||
self.vobj.Proxy.resetTaskPanel()
|
||||
|
||||
def reject(self):
|
||||
PathLog.error('reject')
|
||||
FreeCADGui.Control.closeDialog()
|
||||
FreeCAD.ActiveDocument.abortTransaction()
|
||||
if self.deleteOnReject:
|
||||
@@ -253,6 +265,8 @@ class TaskPanel:
|
||||
FreeCAD.ActiveDocument.removeObject(self.obj.Name)
|
||||
FreeCAD.ActiveDocument.commitTransaction()
|
||||
FreeCAD.ActiveDocument.recompute()
|
||||
self.vobj.Proxy.resetTaskPanel()
|
||||
return True
|
||||
|
||||
def updateTooltips(self):
|
||||
if hasattr(self.obj, "Proxy") and hasattr(self.obj.Proxy, "tooltip") and self.obj.Proxy.tooltip:
|
||||
|
||||
Reference in New Issue
Block a user