diff --git a/src/Mod/Draft/DraftGui.py b/src/Mod/Draft/DraftGui.py index fff6c1db04..0f0cc09822 100644 --- a/src/Mod/Draft/DraftGui.py +++ b/src/Mod/Draft/DraftGui.py @@ -1179,12 +1179,12 @@ class DraftToolBar: else: # self.taskmode == 0 Draft toolbar is obsolete and has been disabled (February 2020) self.cmdlabel.setText(title) - def selectUi(self,extra=None,callback=None): + def selectUi(self,extra=None, on_close_call=None): if not self.taskmode: # self.taskmode == 0 Draft toolbar is obsolete and has been disabled (February 2020) self.labelx.setText(translate("draft", "Pick Object")) self.labelx.show() - self.makeDumbTask(extra,callback) + self.makeDumbTask(extra, on_close_call) def editUi(self, mode=None): self.lastMode=mode @@ -1306,20 +1306,21 @@ class DraftToolBar: else: self.layout.setDirection(QtGui.QBoxLayout.LeftToRight) - def makeDumbTask(self,extra=None,callback=None): + def makeDumbTask(self, extra=None, on_close_call=None): """create a dumb taskdialog to prevent deleting the temp object""" class TaskPanel: - def __init__(self,extra=None,callback=None): + def __init__(self, extra=None, callback=None): if extra: self.form = [extra] + self.callback = callback def getStandardButtons(self): return int(QtGui.QDialogButtonBox.Close) def reject(self): - if callback: - callback() + if self.callback: + self.callback() return True FreeCADGui.Control.closeDialog() - panel = TaskPanel(extra,callback) + panel = TaskPanel(extra, on_close_call) FreeCADGui.Control.showDialog(panel) diff --git a/src/Mod/Draft/draftguitools/gui_clone.py b/src/Mod/Draft/draftguitools/gui_clone.py index 26797cefd3..b65329aae0 100644 --- a/src/Mod/Draft/draftguitools/gui_clone.py +++ b/src/Mod/Draft/draftguitools/gui_clone.py @@ -75,7 +75,7 @@ class Clone(gui_base_original.Modifier): super(Clone, self).Activated(name=translate("draft","Clone")) if not Gui.Selection.getSelection(): if self.ui: - self.ui.selectUi() + self.ui.selectUi(on_close_call=self.finish) _msg(translate("draft", "Select an object to clone")) self.call = self.view.addEventCallback( "SoEvent", diff --git a/src/Mod/Draft/draftguitools/gui_downgrade.py b/src/Mod/Draft/draftguitools/gui_downgrade.py index 015717681d..6cf612739a 100644 --- a/src/Mod/Draft/draftguitools/gui_downgrade.py +++ b/src/Mod/Draft/draftguitools/gui_downgrade.py @@ -63,7 +63,7 @@ class Downgrade(gui_base_original.Modifier): super(Downgrade, self).Activated(name=translate("draft","Downgrade")) if self.ui: if not Gui.Selection.getSelection(): - self.ui.selectUi() + self.ui.selectUi(on_close_call=self.finish) _msg(translate("draft", "Select an object to upgrade")) self.call = self.view.addEventCallback( "SoEvent", diff --git a/src/Mod/Draft/draftguitools/gui_draft2sketch.py b/src/Mod/Draft/draftguitools/gui_draft2sketch.py index 2759e6e0ff..bb8efc8855 100644 --- a/src/Mod/Draft/draftguitools/gui_draft2sketch.py +++ b/src/Mod/Draft/draftguitools/gui_draft2sketch.py @@ -62,7 +62,7 @@ class Draft2Sketch(gui_base_original.Modifier): super(Draft2Sketch, self).Activated(name=translate("draft","Convert Draft/Sketch")) if not Gui.Selection.getSelection(): if self.ui: - self.ui.selectUi() + self.ui.selectUi(on_close_call=self.finish) _msg(translate("draft", "Select an object to convert.")) self.call = self.view.addEventCallback( "SoEvent", diff --git a/src/Mod/Draft/draftguitools/gui_edit.py b/src/Mod/Draft/draftguitools/gui_edit.py index 5dbac65bef..612d217444 100644 --- a/src/Mod/Draft/draftguitools/gui_edit.py +++ b/src/Mod/Draft/draftguitools/gui_edit.py @@ -300,7 +300,7 @@ class Edit(gui_base_original.Modifier): if Gui.Selection.getSelection(): self.proceed() else: - self.ui.selectUi() + self.ui.selectUi(on_close_call=self.finish) App.Console.PrintMessage(translate("draft", "Select a Draft object to edit") + "\n") diff --git a/src/Mod/Draft/draftguitools/gui_facebinders.py b/src/Mod/Draft/draftguitools/gui_facebinders.py index 7a8bf83f0c..a0aa1a5ef5 100644 --- a/src/Mod/Draft/draftguitools/gui_facebinders.py +++ b/src/Mod/Draft/draftguitools/gui_facebinders.py @@ -67,7 +67,7 @@ class Facebinder(gui_base_original.Creator): if not Gui.Selection.getSelection(): if self.ui: - self.ui.selectUi() + self.ui.selectUi(on_close_call=self.finish) _msg(translate("draft", "Select faces from existing objects")) self.call = self.view.addEventCallback( "SoEvent", diff --git a/src/Mod/Draft/draftguitools/gui_join.py b/src/Mod/Draft/draftguitools/gui_join.py index ce2b6a4119..d9e9d716e4 100644 --- a/src/Mod/Draft/draftguitools/gui_join.py +++ b/src/Mod/Draft/draftguitools/gui_join.py @@ -72,7 +72,7 @@ class Join(gui_base_original.Modifier): if not self.ui: return if not Gui.Selection.getSelection(): - self.ui.selectUi() + self.ui.selectUi(on_close_call=self.finish) _msg(translate("draft", "Select an object to join")) self.call = self.view.addEventCallback( "SoEvent", diff --git a/src/Mod/Draft/draftguitools/gui_mirror.py b/src/Mod/Draft/draftguitools/gui_mirror.py index 01e7d3f581..2677bbb238 100644 --- a/src/Mod/Draft/draftguitools/gui_mirror.py +++ b/src/Mod/Draft/draftguitools/gui_mirror.py @@ -70,7 +70,7 @@ class Mirror(gui_base_original.Modifier): self.ghost = None if self.ui: if not Gui.Selection.getSelection(): - self.ui.selectUi() + self.ui.selectUi(on_close_call=self.finish) _msg(translate("draft", "Select an object to mirror")) self.call = \ self.view.addEventCallback("SoEvent", diff --git a/src/Mod/Draft/draftguitools/gui_move.py b/src/Mod/Draft/draftguitools/gui_move.py index d12f32278f..1a2bbe2d68 100644 --- a/src/Mod/Draft/draftguitools/gui_move.py +++ b/src/Mod/Draft/draftguitools/gui_move.py @@ -78,7 +78,7 @@ class Move(gui_base_original.Modifier): """Get the object selection.""" if Gui.Selection.getSelectionEx(): return self.proceed() - self.ui.selectUi() + self.ui.selectUi(on_close_call=self.finish) _msg(translate("draft", "Select an object to move")) self.call = \ self.view.addEventCallback("SoEvent", gui_tool_utils.selectObject) diff --git a/src/Mod/Draft/draftguitools/gui_offset.py b/src/Mod/Draft/draftguitools/gui_offset.py index 50f8c928f4..466a64b6c2 100644 --- a/src/Mod/Draft/draftguitools/gui_offset.py +++ b/src/Mod/Draft/draftguitools/gui_offset.py @@ -72,7 +72,7 @@ class Offset(gui_base_original.Modifier): self.arctrack = None if self.ui: if not Gui.Selection.getSelection(): - self.ui.selectUi() + self.ui.selectUi(on_close_call=self.finish) _msg(translate("draft", "Select an object to offset")) self.call = self.view.addEventCallback( "SoEvent", diff --git a/src/Mod/Draft/draftguitools/gui_rotate.py b/src/Mod/Draft/draftguitools/gui_rotate.py index bc71deb783..2223c965da 100644 --- a/src/Mod/Draft/draftguitools/gui_rotate.py +++ b/src/Mod/Draft/draftguitools/gui_rotate.py @@ -75,7 +75,7 @@ class Rotate(gui_base_original.Modifier): """Get the object selection.""" if Gui.Selection.getSelection(): return self.proceed() - self.ui.selectUi() + self.ui.selectUi(on_close_call=self.finish) _msg(translate("draft", "Select an object to rotate")) self.call = \ self.view.addEventCallback("SoEvent", gui_tool_utils.selectObject) diff --git a/src/Mod/Draft/draftguitools/gui_scale.py b/src/Mod/Draft/draftguitools/gui_scale.py index 30914c05b1..0a3615c7c1 100644 --- a/src/Mod/Draft/draftguitools/gui_scale.py +++ b/src/Mod/Draft/draftguitools/gui_scale.py @@ -84,7 +84,7 @@ class Scale(gui_base_original.Modifier): """Get object selection and proceed if successful.""" if Gui.Selection.getSelection(): return self.proceed() - self.ui.selectUi() + self.ui.selectUi(on_close_call=self.finish) _msg(translate("draft", "Select an object to scale")) self.call = self.view.addEventCallback("SoEvent", gui_tool_utils.selectObject) diff --git a/src/Mod/Draft/draftguitools/gui_selectplane.py b/src/Mod/Draft/draftguitools/gui_selectplane.py index 0f02e484c3..3c309ae928 100644 --- a/src/Mod/Draft/draftguitools/gui_selectplane.py +++ b/src/Mod/Draft/draftguitools/gui_selectplane.py @@ -91,6 +91,7 @@ class Draft_SelectPlane: # Create task panel FreeCADGui.Control.closeDialog() self.taskd = task_selectplane.SelectPlaneTaskPanel() + self.taskd.reject = self.reject # Fill values self.taskd.form.checkCenter.setChecked(self.param.GetBool("CenterPlaneOnView", False)) diff --git a/src/Mod/Draft/draftguitools/gui_shape2dview.py b/src/Mod/Draft/draftguitools/gui_shape2dview.py index 52ea98e5bb..90b57b2934 100644 --- a/src/Mod/Draft/draftguitools/gui_shape2dview.py +++ b/src/Mod/Draft/draftguitools/gui_shape2dview.py @@ -64,7 +64,7 @@ class Shape2DView(gui_base_original.Modifier): super(Shape2DView, self).Activated(name=translate("draft","Project 2D view")) if not Gui.Selection.getSelection(): if self.ui: - self.ui.selectUi() + self.ui.selectUi(on_close_call=self.finish) _msg(translate("draft", "Select an object to project")) self.call = self.view.addEventCallback( "SoEvent", diff --git a/src/Mod/Draft/draftguitools/gui_stretch.py b/src/Mod/Draft/draftguitools/gui_stretch.py index 4ea78d2982..3b068dc489 100644 --- a/src/Mod/Draft/draftguitools/gui_stretch.py +++ b/src/Mod/Draft/draftguitools/gui_stretch.py @@ -67,9 +67,11 @@ class Stretch(gui_base_original.Modifier): def Activated(self): """Execute when the command is called.""" super(Stretch, self).Activated(name=translate("draft","Stretch")) + self.rectracker = None + self.nodetracker = None if self.ui: if not Gui.Selection.getSelection(): - self.ui.selectUi() + self.ui.selectUi(on_close_call=self.finish) _msg(translate("draft", "Select an object to stretch")) self.call = \ self.view.addEventCallback("SoEvent", @@ -251,9 +253,9 @@ class Stretch(gui_base_original.Modifier): def finish(self, closed=False): """Terminate the operation of the command. and clean up.""" - if hasattr(self, "rectracker") and self.rectracker: + if self.rectracker: self.rectracker.finalize() - if hasattr(self, "nodetracker") and self.nodetracker: + if self.nodetracker: for n in self.nodetracker: n.finalize() super(Stretch, self).finish() diff --git a/src/Mod/Draft/draftguitools/gui_trimex.py b/src/Mod/Draft/draftguitools/gui_trimex.py index c478d4fcab..c0389faa0d 100644 --- a/src/Mod/Draft/draftguitools/gui_trimex.py +++ b/src/Mod/Draft/draftguitools/gui_trimex.py @@ -87,7 +87,7 @@ class Trimex(gui_base_original.Modifier): self.width = None if self.ui: if not Gui.Selection.getSelection(): - self.ui.selectUi() + self.ui.selectUi(on_close_call=self.finish) _msg(translate("draft", "Select objects to trim or extend")) self.call = \ self.view.addEventCallback("SoEvent", diff --git a/src/Mod/Draft/draftguitools/gui_upgrade.py b/src/Mod/Draft/draftguitools/gui_upgrade.py index fbab4fa431..cca3e74bf2 100644 --- a/src/Mod/Draft/draftguitools/gui_upgrade.py +++ b/src/Mod/Draft/draftguitools/gui_upgrade.py @@ -63,7 +63,7 @@ class Upgrade(gui_base_original.Modifier): super(Upgrade, self).Activated(name=translate("draft","Upgrade")) if self.ui: if not Gui.Selection.getSelection(): - self.ui.selectUi() + self.ui.selectUi(on_close_call=self.finish) _msg(translate("draft", "Select an object to upgrade")) self.call = self.view.addEventCallback( "SoEvent",