From bd02136f9d9fd06440628fbcfedf05a99c30f703 Mon Sep 17 00:00:00 2001 From: carlopav Date: Mon, 24 May 2021 23:26:26 +0200 Subject: [PATCH] Draft: Edit, change startEditing method to accept (obj, node_idx) This enable to start editing also without an user click event, by just calling the method and specifying the object and the edit point index. It is used for alternative edit mode (alt_edit_mode) by arc context menu --- src/Mod/Draft/draftguitools/gui_edit.py | 36 ++++++++++--------- .../draftguitools/gui_edit_draft_objects.py | 2 +- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/src/Mod/Draft/draftguitools/gui_edit.py b/src/Mod/Draft/draftguitools/gui_edit.py index 936b892876..cfb0323349 100644 --- a/src/Mod/Draft/draftguitools/gui_edit.py +++ b/src/Mod/Draft/draftguitools/gui_edit.py @@ -457,7 +457,16 @@ class Edit(gui_base_original.Modifier): ):#left click if not event.wasAltDown(): if self.editing is None: - self.startEditing(event) + + pos = event.getPosition() + node = self.getEditNode(pos) + node_idx = self.getEditNodeIndex(node) + if node_idx is None: + return + doc = App.getDocument(str(node.documentName.getValue())) + obj = doc.getObject(str(node.objectName.getValue())) + + self.startEditing(obj, node_idx) else: self.endEditing(self.obj, self.editing) elif event.wasAltDown(): # left click with ctrl down @@ -486,32 +495,25 @@ class Edit(gui_base_original.Modifier): self.overNode.setColor(COLORS["default"]) self.overNode = None - def startEditing(self, event): + def startEditing(self, obj, node_idx): """Start editing selected EditNode.""" - pos = event.getPosition() - node = self.getEditNode(pos) - ep = self.getEditNodeIndex(node) - if ep is None: + self.obj = obj # this is still needed to handle preview + if obj is None: return - doc = App.getDocument(str(node.documentName.getValue())) - self.obj = doc.getObject(str(node.objectName.getValue())) - if self.obj is None: - return - - App.Console.PrintMessage(self.obj.Name + App.Console.PrintMessage(obj.Name + ": editing node number " - + str(ep) + "\n") + + str(node_idx) + "\n") self.ui.lineUi() self.ui.isRelative.show() - self.editing = ep - self.trackers[self.obj.Name][self.editing].off() + self.editing = node_idx + self.trackers[obj.Name][node_idx].off() self.finalizeGhost() - self.initGhost(self.obj) + self.initGhost(obj) - self.node.append(self.trackers[self.obj.Name][self.editing].get()) + self.node.append(self.trackers[obj.Name][node_idx].get()) Gui.Snapper.setSelectMode(False) self.hideTrackers() diff --git a/src/Mod/Draft/draftguitools/gui_edit_draft_objects.py b/src/Mod/Draft/draftguitools/gui_edit_draft_objects.py index b8e986e057..c3abdebc05 100644 --- a/src/Mod/Draft/draftguitools/gui_edit_draft_objects.py +++ b/src/Mod/Draft/draftguitools/gui_edit_draft_objects.py @@ -290,7 +290,7 @@ class DraftCircleGuiTools(GuiTools): if action in ("move arc", "set radius", "set first angle", "set last angle"): edit_command.alt_edit_mode = 1 - edit_command.startEditing(edit_command.event) + edit_command.startEditing(obj, node_idx) def init_preview_object(self, obj): return trackers.arcTracker()