Merge pull request #4389 from marioalexis84/draft-close_button

[0.20] [Draft] Call finish method if Close button is pressed in dumb taskdialog
This commit is contained in:
Yorik van Havre
2021-04-20 11:36:03 +02:00
committed by GitHub
17 changed files with 28 additions and 24 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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