diff --git a/src/Mod/Draft/Resources/ui/TaskSelectPlane.ui b/src/Mod/Draft/Resources/ui/TaskSelectPlane.ui index 62d9028ba4..b744c1c377 100644 --- a/src/Mod/Draft/Resources/ui/TaskSelectPlane.ui +++ b/src/Mod/Draft/Resources/ui/TaskSelectPlane.ui @@ -243,6 +243,20 @@ value by using the [ and ] keys while drawing + + + + + + Grid color + + + + + + + + @@ -291,6 +305,11 @@ value by using the [ and ] keys while drawing QLineEdit
Gui/InputField.h
+ + Gui::ColorButton + QPushButton +
Gui/Widgets.h
+
diff --git a/src/Mod/Draft/draftguitools/gui_selectplane.py b/src/Mod/Draft/draftguitools/gui_selectplane.py index 0c2fd18567..ea0b99d515 100644 --- a/src/Mod/Draft/draftguitools/gui_selectplane.py +++ b/src/Mod/Draft/draftguitools/gui_selectplane.py @@ -112,6 +112,13 @@ class Draft_SelectPlane: form.buttonPrevious.setIcon(QtGui.QIcon(":/icons/sel-back.svg")) form.buttonNext.setIcon(QtGui.QIcon(":/icons/sel-forward.svg")) + # color and transparency + color = params.get_param("gridColor") + r = ((color >> 24) & 0xFF) / 255.0 + g = ((color >> 16) & 0xFF) / 255.0 + b = ((color >> 8) & 0xFF) / 255.0 + form.buttonColor.setProperty("color", QtGui.QColor.fromRgbF(r, g, b)) + # Connect slots form.buttonTop.clicked.connect(self.on_click_top) form.buttonFront.clicked.connect(self.on_click_front) @@ -128,6 +135,7 @@ class Draft_SelectPlane: form.fieldGridMainLine.valueChanged.connect(self.on_set_main_line) form.fieldGridExtension.valueChanged.connect(self.on_set_extension) form.fieldSnapRadius.valueChanged.connect(self.on_set_snap_radius) + form.buttonColor.changed.connect(self.on_color_changed) # Enable/disable buttons. form.buttonPrevious.setEnabled(self.wp._has_previous()) @@ -276,6 +284,11 @@ class Draft_SelectPlane: if hasattr(Gui, "Snapper"): Gui.Snapper.showradius() + def on_color_changed(self): + color = self.taskd.form.buttonColor.property("color").rgb() << 8 + params.set_param("gridColor", color) + if self.grid is not None: + self.grid.update() Gui.addCommand('Draft_SelectPlane', Draft_SelectPlane()) diff --git a/src/Mod/Draft/draftguitools/gui_trackers.py b/src/Mod/Draft/draftguitools/gui_trackers.py index 2789ada488..f73a1f3031 100644 --- a/src/Mod/Draft/draftguitools/gui_trackers.py +++ b/src/Mod/Draft/draftguitools/gui_trackers.py @@ -1001,25 +1001,16 @@ class gridTracker(Tracker): def __init__(self): - gtrans = params.get_param("gridTransparency") - col = utils.get_rgba_tuple(params.get_param("gridColor"))[:3] - if params.get_param("coloredGridAxes"): - red = ((1.0+col[0])/2,0.0,0.0) - green = (0.0,(1.0+col[1])/2,0.0) - blue = (0.0,0.0,(1.0+col[2])/2) - else: - red = col - green = col - blue = col + col, red, green, blue, gtrans = self.getGridColors() pick = coin.SoPickStyle() pick.style.setValue(coin.SoPickStyle.UNPICKABLE) self.trans = coin.SoTransform() self.trans.translation.setValue([0, 0, 0]) # small squares - mat1 = coin.SoMaterial() - mat1.transparency.setValue(0.7*(1-gtrans)) - mat1.diffuseColor.setValue(col) + self.mat1 = coin.SoMaterial() + self.mat1.transparency.setValue(0.7*(1-gtrans)) + self.mat1.diffuseColor.setValue(col) self.font = coin.SoFont() self.coords1 = coin.SoCoordinate3() self.lines1 = coin.SoLineSet() # small squares @@ -1044,9 +1035,9 @@ class gridTracker(Tracker): texts.addChild(t2) # big squares - mat2 = coin.SoMaterial() - mat2.transparency.setValue(0.3*(1-gtrans)) - mat2.diffuseColor.setValue(col) + self.mat2 = coin.SoMaterial() + self.mat2.transparency.setValue(0.3*(1-gtrans)) + self.mat2.diffuseColor.setValue(col) self.coords2 = coin.SoCoordinate3() self.lines2 = coin.SoLineSet() # big squares @@ -1058,9 +1049,9 @@ class gridTracker(Tracker): self.human = coin.SoLineSet() # axes - mat3 = coin.SoMaterial() - mat3.transparency.setValue(gtrans) - mat3.diffuseColor.setValues([col,red,green,blue]) + self.mat3 = coin.SoMaterial() + self.mat3.transparency.setValue(gtrans) + self.mat3.diffuseColor.setValues([col,red,green,blue]) self.coords3 = coin.SoCoordinate3() self.lines3 = coin.SoIndexedLineSet() # axes self.lines3.coordIndex.setValues(0,5,[0,1,-1,2,3]) @@ -1072,17 +1063,17 @@ class gridTracker(Tracker): s = coin.SoType.fromName("SoSkipBoundingGroup").createInstance() s.addChild(pick) s.addChild(self.trans) - s.addChild(mat1) + s.addChild(self.mat1) s.addChild(self.coords1) s.addChild(self.lines1) - s.addChild(mat2) + s.addChild(self.mat2) s.addChild(self.coords2) s.addChild(self.lines2) s.addChild(mat_human) s.addChild(self.coords_human) s.addChild(self.human) s.addChild(mbind3) - s.addChild(mat3) + s.addChild(self.mat3) s.addChild(self.coords3) s.addChild(self.lines3) s.addChild(texts) @@ -1181,6 +1172,25 @@ class gridTracker(Tracker): self.coords3.point.setValues(apts) #self.lines3.numVertices.setValues(aidx) self.pts = pts + # update the grid colors + col, red, green, blue, gtrans = self.getGridColors() + self.mat1.diffuseColor.setValue(col) + self.mat2.diffuseColor.setValue(col) + self.mat3.diffuseColor.setValues([col,red,green,blue]) + + def getGridColors(self): + """Returns grid colors stored in the preferences""" + gtrans = params.get_param("gridTransparency")/100.0 + col = utils.get_rgba_tuple(params.get_param("gridColor"))[:3] + if params.get_param("coloredGridAxes"): + red = ((1.0+col[0])/2,0.0,0.0) + green = (0.0,(1.0+col[1])/2,0.0) + blue = (0.0,0.0,(1.0+col[2])/2) + else: + red = col + green = col + blue = col + return col, red, green, blue, gtrans def displayHumanFigure(self, wp): """ Display the human figure at the grid corner.