From f7f85143bb992a03d787dabb1361e46ecf3b034c Mon Sep 17 00:00:00 2001 From: Roy-043 <70520633+Roy-043@users.noreply.github.com> Date: Mon, 25 Nov 2024 13:34:23 +0100 Subject: [PATCH] Draft: minor improvements for gui_edit.py (#17970) * Draft: minor improvements for gui_edit.py * Fix error... --- src/Mod/Draft/draftguitools/gui_edit.py | 51 ++++++++++++++----------- 1 file changed, 29 insertions(+), 22 deletions(-) diff --git a/src/Mod/Draft/draftguitools/gui_edit.py b/src/Mod/Draft/draftguitools/gui_edit.py index bf571891d5..86f08299ba 100644 --- a/src/Mod/Draft/draftguitools/gui_edit.py +++ b/src/Mod/Draft/draftguitools/gui_edit.py @@ -364,17 +364,15 @@ class Edit(gui_base_original.Modifier): """ register editing callbacks (former action function) """ - viewer = Gui.ActiveDocument.ActiveView.getViewer() - self.render_manager = viewer.getSoRenderManager() - view = Gui.ActiveDocument.ActiveView + self.render_manager = self.view.getViewer().getSoRenderManager() if self._keyPressedCB is None: - self._keyPressedCB = view.addEventCallbackPivy( + self._keyPressedCB = self.view.addEventCallbackPivy( coin.SoKeyboardEvent.getClassTypeId(), self.keyPressed) if self._mouseMovedCB is None: - self._mouseMovedCB = view.addEventCallbackPivy( + self._mouseMovedCB = self.view.addEventCallbackPivy( coin.SoLocation2Event.getClassTypeId(), self.mouseMoved) if self._mousePressedCB is None: - self._mousePressedCB = view.addEventCallbackPivy( + self._mousePressedCB = self.view.addEventCallbackPivy( coin.SoMouseButtonEvent.getClassTypeId(), self.mousePressed) #App.Console.PrintMessage("Draft edit callbacks registered \n") @@ -382,17 +380,16 @@ class Edit(gui_base_original.Modifier): """ remove callbacks used during editing if they exist """ - view = Gui.ActiveDocument.ActiveView if self._keyPressedCB: - view.removeEventCallbackSWIG(coin.SoKeyboardEvent.getClassTypeId(), self._keyPressedCB) + self.view.removeEventCallbackSWIG(coin.SoKeyboardEvent.getClassTypeId(), self._keyPressedCB) self._keyPressedCB = None #App.Console.PrintMessage("Draft edit keyboard callback unregistered \n") if self._mouseMovedCB: - view.removeEventCallbackSWIG(coin.SoLocation2Event.getClassTypeId(), self._mouseMovedCB) + self.view.removeEventCallbackSWIG(coin.SoLocation2Event.getClassTypeId(), self._mouseMovedCB) self._mouseMovedCB = None #App.Console.PrintMessage("Draft edit location callback unregistered \n") if self._mousePressedCB: - view.removeEventCallbackSWIG(coin.SoMouseButtonEvent.getClassTypeId(), self._mousePressedCB) + self.view.removeEventCallbackSWIG(coin.SoMouseButtonEvent.getClassTypeId(), self._mousePressedCB) self._mousePressedCB = None #App.Console.PrintMessage("Draft edit mouse button callback unregistered \n") @@ -572,18 +569,25 @@ class Edit(gui_base_original.Modifier): index, obj.ViewObject.LineColor, marker=marker)) def removeTrackers(self, obj=None): - """Remove Edit Trackers.""" - if obj: - if obj.Name in self.trackers: - for t in self.trackers[obj.Name]: - t.finalize() - self.trackers[obj.Name] = [] - else: - for key in self.trackers.keys(): + """Remove Edit Trackers. + + Attributes + ---------- + obj: FreeCAD object + Removes trackers only for given object, + if obj is None, removes all trackers + """ + if obj is None: + for key in self.trackers: for t in self.trackers[key]: t.finalize() self.trackers = {'object': []} - + else: + key = obj.Name + if key in self.trackers: + for t in self.trackers[key]: + t.finalize() + self.trackers[key] = [] def hideTrackers(self, obj=None): """Hide Edit Trackers. @@ -810,15 +814,18 @@ class Edit(gui_base_original.Modifier): """Restore objects style during editing mode. """ for obj in objs: + if not obj.isAttachedToDocument(): + # Object has been deleted. + continue obj_gui_tools = self.get_obj_gui_tools(obj) - if obj_gui_tools and obj.isAttachedToDocument(): + if obj_gui_tools: obj_gui_tools.restore_object_style(obj, self.objs_formats[obj.Name]) def get_specific_object_info(self, obj, pos): """Return info of a specific object at a given position. """ - selobjs = Gui.ActiveDocument.ActiveView.getObjectsInfo((pos[0],pos[1])) + selobjs = self.view.getObjectsInfo((pos[0],pos[1])) if not selobjs: return for info in selobjs: @@ -834,7 +841,7 @@ class Edit(gui_base_original.Modifier): If object is one of the edited objects (self.edited_objects). """ - selobjs = Gui.ActiveDocument.ActiveView.getObjectsInfo((pos[0],pos[1])) + selobjs = self.view.getObjectsInfo((pos[0],pos[1])) if not selobjs: return for info in selobjs: