[Draft] Edit: preview node with mouseover
Preview editing nodes with mouse move. Modified edit trackers to store in self.color the value. Also added a method to it to set color.
This commit is contained in:
committed by
Yorik van Havre
parent
6f676f06ab
commit
f3a4dda5b3
@@ -41,6 +41,20 @@ if FreeCAD.GuiUp:
|
||||
from PySide import QtCore
|
||||
from PySide.QtCore import QT_TRANSLATE_NOOP
|
||||
from DraftTools import translate
|
||||
|
||||
COLORS = {
|
||||
"default": FreeCADGui.draftToolBar.getDefaultColor("snap"),
|
||||
"black": (0., 0., 0.),
|
||||
"white": (1., 1., 1.),
|
||||
"grey": (.5, .5, .5),
|
||||
"red": (1., 0., 0.),
|
||||
"green": (0., 1., 0.),
|
||||
"blue": (0., 0., 1.),
|
||||
"yellow": (1., 1., 0.),
|
||||
"cyan": (0., 1., 1.),
|
||||
"magenta":(1., 0., 1.)
|
||||
}
|
||||
|
||||
|
||||
class Edit():
|
||||
|
||||
@@ -49,6 +63,7 @@ class Edit():
|
||||
def __init__(self):
|
||||
self.running = False
|
||||
self.trackers = {'object':[]}
|
||||
self.overNode = None # preselected node with mouseover
|
||||
self.obj = None
|
||||
self.editing = None
|
||||
|
||||
@@ -271,8 +286,18 @@ class Edit():
|
||||
if self.editing != None:
|
||||
self.updateTrackerAndGhost(event)
|
||||
else:
|
||||
# TODO add preselection color change for trackers
|
||||
pass
|
||||
# look for a node in mouse position and highlight it
|
||||
pos = event.getPosition()
|
||||
node = self.getEditNode(pos)
|
||||
ep = self.getEditNodeIndex(node)
|
||||
if ep != None:
|
||||
if self.overNode != None: self.overNode.setColor(COLORS["default"])
|
||||
self.trackers[str(node.objectName.getValue())][ep].setColor(COLORS["red"])
|
||||
self.overNode = self.trackers[str(node.objectName.getValue())][ep]
|
||||
else:
|
||||
if self.overNode != None:
|
||||
self.overNode.setColor(COLORS["default"])
|
||||
self.overNode = None
|
||||
|
||||
def startEditing(self, event):
|
||||
"start editing selected EditNode"
|
||||
|
||||
@@ -709,11 +709,11 @@ class editTracker(Tracker):
|
||||
"""A node edit tracker"""
|
||||
def __init__(self,pos=Vector(0,0,0),name=None,idx=0,objcol=None,\
|
||||
marker=FreeCADGui.getMarkerIndex("quad", 9),inactive=False):
|
||||
color = coin.SoBaseColor()
|
||||
self.color = coin.SoBaseColor()
|
||||
if objcol:
|
||||
color.rgb = objcol[:3]
|
||||
self.color.rgb = objcol[:3]
|
||||
else:
|
||||
color.rgb = FreeCADGui.draftToolBar.getDefaultColor("snap")
|
||||
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
|
||||
@@ -729,7 +729,7 @@ class editTracker(Tracker):
|
||||
selnode.subElementName.setValue("EditNode"+str(idx))
|
||||
node = coin.SoAnnotation()
|
||||
selnode.addChild(self.coords)
|
||||
selnode.addChild(color)
|
||||
selnode.addChild(self.color)
|
||||
selnode.addChild(self.marker)
|
||||
node.addChild(selnode)
|
||||
ontop = not inactive
|
||||
@@ -746,6 +746,12 @@ class editTracker(Tracker):
|
||||
def move(self,delta):
|
||||
self.set(self.get().add(delta))
|
||||
|
||||
def setColor(self,color):
|
||||
if color:
|
||||
self.color.rgb = color
|
||||
else:
|
||||
self.color.rgb = FreeCADGui.draftToolBar.getDefaultColor("snap")
|
||||
|
||||
class PlaneTracker(Tracker):
|
||||
"""A working plane tracker"""
|
||||
def __init__(self):
|
||||
|
||||
Reference in New Issue
Block a user