diff --git a/src/Mod/Draft/draftguitools/gui_snapper.py b/src/Mod/Draft/draftguitools/gui_snapper.py index 53a4de6f44..6b3821eb25 100644 --- a/src/Mod/Draft/draftguitools/gui_snapper.py +++ b/src/Mod/Draft/draftguitools/gui_snapper.py @@ -94,7 +94,6 @@ class Snapper: self.cursorMode = None if Draft.getParam("maxSnap", 0): self.maxEdges = Draft.getParam("maxSnapEdges", 0) - self.snapStyle = Draft.getParam("snapStyle", 0) # we still have no 3D view when the draft module initializes self.tracker = None @@ -144,34 +143,7 @@ class Snapper: ] self.init_active_snaps() - - # the snapmarker has "dot","circle" and "square" available styles - if self.snapStyle: - self.mk = coll.OrderedDict([('passive', 'empty'), - ('extension', 'empty'), - ('parallel', 'empty'), - ('grid', 'quad'), - ('endpoint', 'quad'), - ('midpoint', 'quad'), - ('perpendicular', 'quad'), - ('angle', 'quad'), - ('center', 'quad'), - ('ortho', 'quad'), - ('intersection', 'quad'), - ('special', 'quad')]) - else: - self.mk = coll.OrderedDict([('passive', 'circle'), - ('extension', 'circle'), - ('parallel', 'circle'), - ('grid', 'circle'), - ('endpoint', 'dot'), - ('midpoint', 'square'), - ('perpendicular', 'dot'), - ('angle', 'square'), - ('center', 'dot'), - ('ortho', 'dot'), - ('intersection', 'dot'), - ('special', 'dot')]) + self.set_snap_style() self.cursors = \ coll.OrderedDict([('passive', ':/icons/Draft_Snap_Near.svg'), @@ -206,6 +178,37 @@ class Snapper: i += 1 + def set_snap_style(self): + self.snapStyle = Draft.getParam("snapStyle", 0) + # the snapmarker has "dot","circle" and "square" available styles + if self.snapStyle: + self.mk = coll.OrderedDict([('passive', 'empty'), + ('extension', 'empty'), + ('parallel', 'empty'), + ('grid', 'quad'), + ('endpoint', 'quad'), + ('midpoint', 'quad'), + ('perpendicular', 'quad'), + ('angle', 'quad'), + ('center', 'quad'), + ('ortho', 'quad'), + ('intersection', 'quad'), + ('special', 'quad')]) + else: + self.mk = coll.OrderedDict([('passive', 'circle'), + ('extension', 'circle'), + ('parallel', 'circle'), + ('grid', 'circle'), + ('endpoint', 'dot'), + ('midpoint', 'square'), + ('perpendicular', 'dot'), + ('angle', 'square'), + ('center', 'dot'), + ('ortho', 'dot'), + ('intersection', 'dot'), + ('special', 'dot')]) + + def cstr(self, lastpoint, constrain, point): """Return constraints if needed.""" if constrain or self.mask: diff --git a/src/Mod/Draft/draftguitools/gui_trackers.py b/src/Mod/Draft/draftguitools/gui_trackers.py index e2ba9f3a22..fb9a08aa6e 100644 --- a/src/Mod/Draft/draftguitools/gui_trackers.py +++ b/src/Mod/Draft/draftguitools/gui_trackers.py @@ -148,22 +148,27 @@ class snapTracker(Tracker): """Define Snap Mark tracker, used by tools that support snapping.""" def __init__(self): - color = coin.SoBaseColor() - color.rgb = FreeCADGui.draftToolBar.getDefaultColor("snap") self.marker = coin.SoMarkerSet() # this is the marker symbol self.marker.markerIndex = FreeCADGui.getMarkerIndex("", 9) self.coords = coin.SoCoordinate3() # this is the coordinate self.coords.point.setValue((0, 0, 0)) node = coin.SoAnnotation() node.addChild(self.coords) - node.addChild(color) node.addChild(self.marker) super().__init__(children=[node], name="snapTracker") + self.setColor() def setMarker(self, style): """Set the marker index.""" self.marker.markerIndex = FreeCADGui.getMarkerIndex(style, 9) + def setColor(self, color=None): + """Set the color.""" + if color is None: + self.color.rgb = FreeCADGui.draftToolBar.getDefaultColor("snap") + else: + self.color.rgb = color + def setCoords(self, point): """Set the coordinates to the point.""" self.coords.point.setValue((point.x, point.y, point.z)) @@ -678,14 +683,11 @@ class ghostTracker(Tracker): else: self.coords = coin.SoCoordinate3() self.coords.point.setValue((obj.X, obj.Y, obj.Z)) - color = coin.SoBaseColor() - color.rgb = FreeCADGui.draftToolBar.getDefaultColor("snap") self.marker = coin.SoMarkerSet() # this is the marker symbol self.marker.markerIndex = FreeCADGui.getMarkerIndex("quad", 9) node = coin.SoAnnotation() selnode = coin.SoSeparator() selnode.addChild(self.coords) - selnode.addChild(color) selnode.addChild(self.marker) node.addChild(selnode) rootsep.addChild(node) @@ -694,6 +696,14 @@ class ghostTracker(Tracker): self.children.append(rootsep) super().__init__(dotted, scolor, swidth, children=self.children, name="ghostTracker") + self.setColor() + + def setColor(self, color=None): + """Set the color.""" + if color is None: + self.color.rgb = FreeCADGui.draftToolBar.getDefaultColor("snap") + else: + self.color.rgb = color def remove(self): """Remove the ghost when switching to and from subelement mode.""" @@ -812,11 +822,6 @@ class editTracker(Tracker): def __init__(self, pos=Vector(0, 0, 0), name=None, idx=0, objcol=None, marker=FreeCADGui.getMarkerIndex("quad", 9), inactive=False): - self.color = coin.SoBaseColor() - if objcol: - self.color.rgb = objcol[:3] - else: - self.color.rgb = FreeCADGui.draftToolBar.getDefaultColor("snap") self.marker = coin.SoMarkerSet() # this is the marker symbol self.marker.markerIndex = marker self.coords = coin.SoCoordinate3() # this is the coordinate @@ -833,12 +838,15 @@ class editTracker(Tracker): self.selnode.subElementName.setValue("EditNode" + str(idx)) node = coin.SoAnnotation() self.selnode.addChild(self.coords) - self.selnode.addChild(self.color) self.selnode.addChild(self.marker) node.addChild(self.selnode) ontop = not inactive super().__init__(children=[node], ontop=ontop, name="editTracker") + if objcol is None: + self.setColor() + else: + self.setColor(objcol[:3]) self.on() def set(self, pos): @@ -872,12 +880,12 @@ class editTracker(Tracker): """Get the point and add a delta, and set the new point.""" self.set(self.get().add(delta)) - def setColor(self, color): + def setColor(self, color=None): """Set the color.""" - if color: - self.color.rgb = color - else: + if color is None: self.color.rgb = FreeCADGui.draftToolBar.getDefaultColor("snap") + else: + self.color.rgb = color class PlaneTracker(Tracker):