Draft: Fix multiple crashes when using modification functions - fixes #0004243
This commit is contained in:
@@ -79,16 +79,14 @@ class Array(gui_base_original.Modifier):
|
||||
if self.ui:
|
||||
self.ui.selectUi()
|
||||
_msg(translate("draft", "Select an object to array"))
|
||||
self.call = \
|
||||
self.view.addEventCallback("SoEvent",
|
||||
gui_tool_utils.selectObject)
|
||||
self.call = self.view.addEventCallback(
|
||||
"SoEvent",
|
||||
gui_tool_utils.selectObject)
|
||||
else:
|
||||
self.proceed()
|
||||
|
||||
def proceed(self):
|
||||
"""Proceed with the command if one object was selected."""
|
||||
if self.call:
|
||||
self.view.removeEventCallback("SoEvent", self.call)
|
||||
if Gui.Selection.getSelection():
|
||||
obj = Gui.Selection.getSelection()[0]
|
||||
Gui.addModule("Draft")
|
||||
|
||||
@@ -80,17 +80,14 @@ class Clone(gui_base_original.Modifier):
|
||||
if self.ui:
|
||||
self.ui.selectUi()
|
||||
_msg(translate("draft", "Select an object to clone"))
|
||||
self.call = \
|
||||
self.view.addEventCallback("SoEvent",
|
||||
gui_tool_utils.selectObject)
|
||||
self.call = self.view.addEventCallback(
|
||||
"SoEvent",
|
||||
gui_tool_utils.selectObject)
|
||||
else:
|
||||
self.proceed()
|
||||
|
||||
def proceed(self):
|
||||
"""Proceed with the command if one object was selected."""
|
||||
if self.call:
|
||||
self.view.removeEventCallback("SoEvent", self.call)
|
||||
|
||||
if Gui.Selection.getSelection():
|
||||
sels = len(Gui.Selection.getSelection())
|
||||
Gui.addModule("Draft")
|
||||
|
||||
@@ -71,17 +71,14 @@ class Downgrade(gui_base_original.Modifier):
|
||||
if not Gui.Selection.getSelection():
|
||||
self.ui.selectUi()
|
||||
_msg(translate("draft", "Select an object to upgrade"))
|
||||
self.call = \
|
||||
self.view.addEventCallback("SoEvent",
|
||||
gui_tool_utils.selectObject)
|
||||
self.call = self.view.addEventCallback(
|
||||
"SoEvent",
|
||||
gui_tool_utils.selectObject)
|
||||
else:
|
||||
self.proceed()
|
||||
|
||||
def proceed(self):
|
||||
"""Proceed with execution of the command after selection."""
|
||||
if self.call:
|
||||
self.view.removeEventCallback("SoEvent", self.call)
|
||||
|
||||
if Gui.Selection.getSelection():
|
||||
Gui.addModule("Draft")
|
||||
_cmd = 'Draft.downgrade'
|
||||
|
||||
@@ -71,17 +71,14 @@ class Draft2Sketch(gui_base_original.Modifier):
|
||||
if self.ui:
|
||||
self.ui.selectUi()
|
||||
_msg(translate("draft", "Select an object to convert."))
|
||||
self.call = \
|
||||
self.view.addEventCallback("SoEvent",
|
||||
gui_tool_utils.selectObject)
|
||||
self.call = self.view.addEventCallback(
|
||||
"SoEvent",
|
||||
gui_tool_utils.selectObject)
|
||||
else:
|
||||
self.proceed()
|
||||
|
||||
def proceed(self):
|
||||
"""Proceed with the command if one object was selected."""
|
||||
if self.call:
|
||||
self.view.removeEventCallback("SoEvent", self.call)
|
||||
|
||||
sel = Gui.Selection.getSelection()
|
||||
allSketches = True
|
||||
allDraft = True
|
||||
|
||||
@@ -70,16 +70,14 @@ class Facebinder(gui_base_original.Creator):
|
||||
if self.ui:
|
||||
self.ui.selectUi()
|
||||
_msg(translate("draft", "Select faces from existing objects"))
|
||||
self.call = \
|
||||
self.view.addEventCallback("SoEvent",
|
||||
gui_tool_utils.selectObject)
|
||||
self.call = self.view.addEventCallback(
|
||||
"SoEvent",
|
||||
gui_tool_utils.selectObject)
|
||||
else:
|
||||
self.proceed()
|
||||
|
||||
def proceed(self):
|
||||
"""Proceed when a valid selection has been made."""
|
||||
if self.call:
|
||||
self.view.removeEventCallback("SoEvent", self.call)
|
||||
if Gui.Selection.getSelection():
|
||||
App.ActiveDocument.openTransaction("Create Facebinder")
|
||||
Gui.addModule("Draft")
|
||||
|
||||
@@ -78,8 +78,9 @@ class Join(gui_base_original.Modifier):
|
||||
if not Gui.Selection.getSelection():
|
||||
self.ui.selectUi()
|
||||
_msg(translate("draft", "Select an object to join"))
|
||||
self.call = self.view.addEventCallback("SoEvent",
|
||||
gui_tool_utils.selectObject)
|
||||
self.call = self.view.addEventCallback(
|
||||
"SoEvent",
|
||||
gui_tool_utils.selectObject)
|
||||
else:
|
||||
self.proceed()
|
||||
|
||||
@@ -90,8 +91,6 @@ class Join(gui_base_original.Modifier):
|
||||
visually share a point. This is due to the underlying `joinWires`
|
||||
method not handling the points correctly.
|
||||
"""
|
||||
if self.call:
|
||||
self.view.removeEventCallback("SoEvent", self.call)
|
||||
if Gui.Selection.getSelection():
|
||||
self.print_selection()
|
||||
Gui.addModule("Draft")
|
||||
|
||||
@@ -78,9 +78,9 @@ class Offset(gui_base_original.Modifier):
|
||||
if not Gui.Selection.getSelection():
|
||||
self.ui.selectUi()
|
||||
_msg(translate("draft", "Select an object to offset"))
|
||||
self.call = \
|
||||
self.view.addEventCallback("SoEvent",
|
||||
gui_tool_utils.selectObject)
|
||||
self.call = self.view.addEventCallback(
|
||||
"SoEvent",
|
||||
gui_tool_utils.selectObject)
|
||||
elif len(Gui.Selection.getSelection()) > 1:
|
||||
_wrn(translate("draft", "Offset only works "
|
||||
"on one object at a time."))
|
||||
|
||||
@@ -103,9 +103,6 @@ class PathArray(gui_base_original.Modifier):
|
||||
|
||||
def proceed(self):
|
||||
"""Proceed with the command if one object was selected."""
|
||||
if self.call:
|
||||
self.view.removeEventCallback("SoEvent", self.call)
|
||||
|
||||
sel = Gui.Selection.getSelectionEx()
|
||||
if len(sel) != 2:
|
||||
_err(_tr("Please select exactly two objects, "
|
||||
|
||||
@@ -80,9 +80,6 @@ class PathTwistedArray(gui_base_original.Modifier):
|
||||
|
||||
def proceed(self):
|
||||
"""Proceed with the command if one object was selected."""
|
||||
if self.call:
|
||||
self.view.removeEventCallback("SoEvent", self.call)
|
||||
|
||||
sel = Gui.Selection.getSelectionEx()
|
||||
if len(sel) != 2:
|
||||
_err(_tr("Please select exactly two objects, "
|
||||
|
||||
@@ -113,9 +113,6 @@ class PointArray(gui_base_original.Modifier):
|
||||
|
||||
def proceed(self):
|
||||
"""Proceed with the command if one object was selected."""
|
||||
if self.call:
|
||||
self.view.removeEventCallback("SoEvent", self.call)
|
||||
|
||||
sel = Gui.Selection.getSelectionEx()
|
||||
if len(sel) != 2:
|
||||
_err(_tr("Please select exactly two objects, "
|
||||
|
||||
@@ -75,17 +75,14 @@ class Shape2DView(gui_base_original.Modifier):
|
||||
if self.ui:
|
||||
self.ui.selectUi()
|
||||
_msg(translate("draft", "Select an object to project"))
|
||||
self.call = \
|
||||
self.view.addEventCallback("SoEvent",
|
||||
gui_tool_utils.selectObject)
|
||||
self.call = self.view.addEventCallback(
|
||||
"SoEvent",
|
||||
gui_tool_utils.selectObject)
|
||||
else:
|
||||
self.proceed()
|
||||
|
||||
def proceed(self):
|
||||
"""Proceed with the command if one object was selected."""
|
||||
if self.call:
|
||||
self.view.removeEventCallback("SoEvent", self.call)
|
||||
|
||||
faces = []
|
||||
objs = []
|
||||
vec = Gui.ActiveDocument.ActiveView.getViewDirection().negative()
|
||||
|
||||
@@ -112,8 +112,6 @@ class Split(gui_base_original.Modifier):
|
||||
self.commit(translate("draft", "Split line"),
|
||||
_cmd_list)
|
||||
|
||||
if self.call:
|
||||
self.view.removeEventCallback("SoEvent", self.call)
|
||||
self.finish()
|
||||
|
||||
|
||||
|
||||
@@ -73,17 +73,14 @@ class Upgrade(gui_base_original.Modifier):
|
||||
if not Gui.Selection.getSelection():
|
||||
self.ui.selectUi()
|
||||
_msg(translate("draft", "Select an object to upgrade"))
|
||||
self.call = \
|
||||
self.view.addEventCallback("SoEvent",
|
||||
gui_tool_utils.selectObject)
|
||||
self.call = self.view.addEventCallback(
|
||||
"SoEvent",
|
||||
gui_tool_utils.selectObject)
|
||||
else:
|
||||
self.proceed()
|
||||
|
||||
def proceed(self):
|
||||
"""Proceed with execution of the command after selection."""
|
||||
if self.call:
|
||||
self.view.removeEventCallback("SoEvent", self.call)
|
||||
|
||||
if Gui.Selection.getSelection():
|
||||
Gui.addModule("Draft")
|
||||
_cmd = 'Draft.upgrade'
|
||||
|
||||
Reference in New Issue
Block a user