Draft: minor improvements for gui_edit.py (#17970)

* Draft: minor improvements for gui_edit.py

* Fix error...
This commit is contained in:
Roy-043
2024-11-25 13:34:23 +01:00
committed by GitHub
parent df97a3ad21
commit ed209dab68

View File

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