diff --git a/src/Mod/Draft/Resources/ui/TaskPanel_SetStyle.ui b/src/Mod/Draft/Resources/ui/TaskPanel_SetStyle.ui
index a85f6582c4..f9caf058e2 100644
--- a/src/Mod/Draft/Resources/ui/TaskPanel_SetStyle.ui
+++ b/src/Mod/Draft/Resources/ui/TaskPanel_SetStyle.ui
@@ -13,9 +13,9 @@
Style settings
-
+
-
-
+
-
@@ -51,434 +51,524 @@
-
-
-
- Shapes
-
-
-
- QLayout::SetDefaultConstraint
-
-
-
-
-
- Shape color
-
-
-
- -
-
-
-
- -
-
-
- Transparency
-
-
-
- -
-
-
- %
-
-
- 100
-
-
-
- -
-
-
- Line color
-
-
-
- -
-
-
-
- -
-
-
- Line width
-
-
-
- -
-
-
- px
-
-
-
- -
-
-
- Point color
-
-
-
- -
-
-
-
- -
-
-
- Point size
-
-
-
- -
-
-
- px
-
-
-
- -
-
-
- Draw style
-
-
-
- -
-
-
-
-
- Solid
+
+
+
+ Shape
+
+
+
-
+
+
+ Shape appearance
-
- -
-
- Dashed
+
+
-
+
+
+ Shape color
+
+
+
+ -
+
+
+
+ -
+
+
+ Ambient shape color
+
+
+
+ -
+
+
+
+ -
+
+
+ Emissive shape color
+
+
+
+ -
+
+
+
+ -
+
+
+ Specular shape color
+
+
+
+ -
+
+
+
+ -
+
+
+ Shape transparency
+
+
+
+ -
+
+
+ %
+
+
+ 100
+
+
+
+ -
+
+
+ Shape shininess
+
+
+
+ -
+
+
+ %
+
+
+ 100
+
+
+
+
+
+
+ -
+
+
+ Other
-
- -
-
- Dotted
+
+
-
+
+
+ Line color
+
+
+
+ -
+
+
+
+ -
+
+
+ Line width
+
+
+
+ -
+
+
+ px
+
+
+
+ -
+
+
+ Point color
+
+
+
+ -
+
+
+
+ -
+
+
+ Point size
+
+
+
+ -
+
+
+ px
+
+
+
+ -
+
+
+ Draw style
+
+
+
+ -
+
+
-
+
+ Solid
+
+
+ -
+
+ Dashed
+
+
+ -
+
+ Dotted
+
+
+ -
+
+ DashDot
+
+
+
+
+ -
+
+
+ Display mode
+
+
+
+ -
+
+
-
+
+ Flat Lines
+
+
+ -
+
+ Shaded
+
+
+ -
+
+ Wireframe
+
+
+ -
+
+ Points
+
+
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
-
- -
-
- DashDot
+
+
+
+
+
+
+ Annotation
+
+
+ -
+
+
+ Texts
-
-
-
- -
-
-
- Display mode
-
-
-
- -
-
-
-
-
- Flat Lines
-
-
- -
-
- Shaded
-
-
- -
-
- Wireframe
-
-
- -
-
- Points
-
-
-
-
-
-
-
- -
-
-
- Annotations
-
-
-
-
-
-
- Text color
-
-
-
- -
-
-
- The color for texts, dimension texts and label texts
-
-
-
- -
-
-
- Font name
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- The font for texts, dimensions and labels
-
-
-
- -
-
-
- Font size
-
-
-
- -
-
-
- The height for texts, dimension texts and label texts
-
-
-
-
-
-
- -
-
-
- Line spacing
-
-
-
- -
-
-
- The line spacing for multi-line texts and labels (relative to the font size)
-
-
-
- -
-
-
- Scale multiplier
-
-
-
- -
-
-
- The annotation scale multiplier is the inverse of the scale set in the
+
+
-
+
+
+ Font name
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ The font for texts, dimensions and labels
+
+
+
+ -
+
+
+ Font size
+
+
+
+ -
+
+
+ The height for texts, dimension texts and label texts
+
+
+
+
+
+
+ -
+
+
+ Line spacing factor
+
+
+
+ -
+
+
+ The line spacing for multi-line texts and labels (relative to the font size)
+
+
+
+ -
+
+
+ Scale multiplier
+
+
+
+ -
+
+
+ The annotation scale multiplier is the inverse of the scale set in the
Annotation scale widget. If the scale is 1:100 the multiplier is 100.
-
-
-
-
-
-
- -
-
-
- Dimensions
-
-
-
-
-
-
- Line and arrow color
-
-
-
- -
-
-
-
- -
-
-
- Line width
-
-
-
- -
-
-
- px
-
-
-
- -
-
-
- Arrow type
-
-
-
- -
-
-
-
-
- Dot
+
+
+
+ -
+
+
+ Text color
+
+
+
+ -
+
+
+ The color for texts, dimension texts and label texts
+
+
+
+
+
+
+ -
+
+
+ Lines and arrows
-
- -
-
- Circle
+
+
-
+
+
+ Line width
+
+
+
+ -
+
+
+ px
+
+
+
+ -
+
+
+ Arrow type
+
+
+
+ -
+
+
-
+
+ Dot
+
+
+ -
+
+ Circle
+
+
+ -
+
+ Arrow
+
+
+ -
+
+ Tick
+
+
+ -
+
+ Tick-2
+
+
+
+
+ -
+
+
+ Arrow size
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+ Line and arrow color
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+ Dimensions
-
- -
-
- Arrow
-
-
- -
-
- Tick
-
-
- -
-
- Tick-2
-
-
-
-
- -
-
-
- Arrow size
-
-
-
- -
-
-
-
-
-
-
- -
-
-
- Show unit
-
-
-
- -
-
-
- If checked, a unit symbol is added to dimension texts
-
-
-
-
-
-
- -
-
-
- Unit override
-
-
-
- -
-
-
- The unit override for dimensions. Leave blank to use the current FreeCAD unit.
-
-
-
- -
-
-
- Dim overshoot
-
-
-
- -
-
-
- The distance the dimension line is extended past the extension lines
-
-
-
-
-
-
- -
-
-
- Ext lines
-
-
-
- -
-
-
- The length of extension lines. Use 0 for full extension lines. A negative value
+
+
-
+
+
+ Show unit
+
+
+
+ -
+
+
+ If checked, a unit symbol is added to dimension texts
+
+
+
+
+
+
+ -
+
+
+ Unit override
+
+
+
+ -
+
+
+ The unit override for dimensions. Leave blank to use the current FreeCAD unit.
+
+
+
+ -
+
+
+ Dim line overshoot
+
+
+
+ -
+
+
+ The distance the dimension line is extended past the extension lines
+
+
+
+
+
+
+ -
+
+
+ Ext line length
+
+
+
+ -
+
+
+ The length of extension lines. Use 0 for full extension lines. A negative value
defines the gap between the ends of the extension lines and the measured points.
A positive value defines the maximum length of the extension lines. Only used
for linear dimensions.
-
-
-
-
-
-
- -
-
-
- Ext overshoot
-
-
-
- -
-
-
- The length of extension lines above the dimension line
-
-
-
-
-
-
- -
-
-
- Text spacing
-
-
-
- -
-
-
- The space between the dimension line and the dimension text
-
-
-
-
-
-
-
+
+
+
+
+
+
+ -
+
+
+ Ext line overshoot
+
+
+
+ -
+
+
+ The length of extension lines above the dimension line
+
+
+
+
+
+
+ -
+
+
+ Text spacing
+
+
+
+ -
+
+
+ The space between the dimension line and the dimension text
+
+
+
+
+
+
+
+
+
+
+
-
-
+
-
diff --git a/src/Mod/Draft/draftguitools/gui_setstyle.py b/src/Mod/Draft/draftguitools/gui_setstyle.py
index d818001e35..af30e78108 100644
--- a/src/Mod/Draft/draftguitools/gui_setstyle.py
+++ b/src/Mod/Draft/draftguitools/gui_setstyle.py
@@ -83,18 +83,25 @@ class Draft_SetStyle_TaskPanel:
self.form.annotButton.setIcon(QtGui.QIcon(":/icons/Draft_Text.svg"))
self.form.ShapeColor.setProperty("color", self.getColor(params.get_param_view("DefaultShapeColor")))
+ self.form.AmbientColor.setProperty("color", self.getColor(params.get_param_view("DefaultAmbientColor")))
+ self.form.EmissiveColor.setProperty("color", self.getColor(params.get_param_view("DefaultEmissiveColor")))
+ self.form.SpecularColor.setProperty("color", self.getColor(params.get_param_view("DefaultSpecularColor")))
self.form.Transparency.setValue(params.get_param_view("DefaultShapeTransparency"))
+ self.form.Shininess.setValue(params.get_param_view("DefaultShapeShininess"))
+
self.form.LineColor.setProperty("color", self.getColor(params.get_param_view("DefaultShapeLineColor")))
self.form.LineWidth.setValue(params.get_param_view("DefaultShapeLineWidth"))
self.form.PointColor.setProperty("color", self.getColor(params.get_param_view("DefaultShapeVertexColor")))
self.form.PointSize.setValue(params.get_param_view("DefaultShapePointSize"))
self.form.DrawStyle.setCurrentIndex(params.get_param("DefaultDrawStyle"))
self.form.DisplayMode.setCurrentIndex(params.get_param("DefaultDisplayMode"))
+
self.form.TextColor.setProperty("color", self.getColor(params.get_param("DefaultTextColor")))
self.form.TextFont.setCurrentFont(QtGui.QFont(params.get_param("textfont")))
self.form.TextSize.setText(U.Quantity(params.get_param("textheight"), U.Length).UserString)
self.form.LineSpacing.setValue(params.get_param("LineSpacing"))
self.form.ScaleMultiplier.setValue(params.get_param("DefaultAnnoScaleMultiplier"))
+
self.form.AnnoLineColor.setProperty("color", self.getColor(params.get_param("DefaultAnnoLineColor")))
self.form.AnnoLineWidth.setValue(params.get_param("DefaultAnnoLineWidth"))
self.form.ArrowStyle.setCurrentIndex(params.get_param("dimsymbol"))
@@ -133,33 +140,40 @@ class Draft_SetStyle_TaskPanel:
def getValues(self):
- preset = {}
- preset["ShapeColor"] = utils.argb_to_rgba(self.form.ShapeColor.property("color").rgba())
- preset["Transparency"] = self.form.Transparency.value()
- preset["LineColor"] = utils.argb_to_rgba(self.form.LineColor.property("color").rgba())
- preset["LineWidth"] = self.form.LineWidth.value()
- preset["PointColor"] = utils.argb_to_rgba(self.form.PointColor.property("color").rgba())
- preset["PointSize"] = self.form.PointSize.value()
- preset["DrawStyle"] = self.form.DrawStyle.currentIndex()
- preset["DisplayMode"] = self.form.DisplayMode.currentIndex()
- preset["TextColor"] = utils.argb_to_rgba(self.form.TextColor.property("color").rgba())
- preset["TextFont"] = self.form.TextFont.currentFont().family()
- preset["TextSize"] = U.Quantity(self.form.TextSize.text()).Value
- preset["LineSpacing"] = self.form.LineSpacing.value()
- preset["ScaleMultiplier"] = self.form.ScaleMultiplier.value()
- preset["AnnoLineColor"] = utils.argb_to_rgba(self.form.AnnoLineColor.property("color").rgba())
- preset["AnnoLineWidth"] = self.form.AnnoLineWidth.value()
- preset["ArrowStyle"] = self.form.ArrowStyle.currentIndex()
- preset["ArrowSize"] = U.Quantity(self.form.ArrowSize.text()).Value
- preset["ShowUnit"] = self.form.ShowUnit.isChecked()
- preset["UnitOverride"] = self.form.UnitOverride.text()
- preset["DimOvershoot"] = U.Quantity(self.form.DimOvershoot.text()).Value
- preset["ExtLines"] = U.Quantity(self.form.ExtLines.text()).Value
- preset["ExtOvershoot"] = U.Quantity(self.form.ExtOvershoot.text()).Value
- preset["TextSpacing"] = U.Quantity(self.form.TextSpacing.text()).Value
- return preset
+ return {
+ "ShapeColor": utils.argb_to_rgba(self.form.ShapeColor.property("color").rgba()),
+ "AmbientColor": utils.argb_to_rgba(self.form.AmbientColor.property("color").rgba()),
+ "EmissiveColor": utils.argb_to_rgba(self.form.EmissiveColor.property("color").rgba()),
+ "SpecularColor": utils.argb_to_rgba(self.form.SpecularColor.property("color").rgba()),
+ "Transparency": self.form.Transparency.value(),
+ "Shininess": self.form.Shininess.value(),
- def setValues(self,preset):
+ "LineColor": utils.argb_to_rgba(self.form.LineColor.property("color").rgba()),
+ "LineWidth": self.form.LineWidth.value(),
+ "PointColor": utils.argb_to_rgba(self.form.PointColor.property("color").rgba()),
+ "PointSize": self.form.PointSize.value(),
+ "DrawStyle": self.form.DrawStyle.currentIndex(),
+ "DisplayMode": self.form.DisplayMode.currentIndex(),
+
+ "TextColor": utils.argb_to_rgba(self.form.TextColor.property("color").rgba()),
+ "TextFont": self.form.TextFont.currentFont().family(),
+ "TextSize": U.Quantity(self.form.TextSize.text()).Value,
+ "LineSpacing": self.form.LineSpacing.value(),
+ "ScaleMultiplier": self.form.ScaleMultiplier.value(),
+
+ "AnnoLineColor": utils.argb_to_rgba(self.form.AnnoLineColor.property("color").rgba()),
+ "AnnoLineWidth": self.form.AnnoLineWidth.value(),
+ "ArrowStyle": self.form.ArrowStyle.currentIndex(),
+ "ArrowSize": U.Quantity(self.form.ArrowSize.text()).Value,
+ "ShowUnit": self.form.ShowUnit.isChecked(),
+ "UnitOverride": self.form.UnitOverride.text(),
+ "DimOvershoot": U.Quantity(self.form.DimOvershoot.text()).Value,
+ "ExtLines": U.Quantity(self.form.ExtLines.text()).Value,
+ "ExtOvershoot": U.Quantity(self.form.ExtOvershoot.text()).Value,
+ "TextSpacing": U.Quantity(self.form.TextSpacing.text()).Value
+ }
+
+ def setValues(self, preset):
# For compatibility with <= V0.21 some properties, if missing, reference others:
# 'new' prop -> old prop
@@ -168,29 +182,113 @@ class Draft_SetStyle_TaskPanel:
# PointSize -> LineWidth
# AnnoLineColor -> LineColor
# AnnoLineWidth -> LineWidth
- self.form.ShapeColor.setProperty("color", self.getColor(preset.get("ShapeColor", 3435973887)))
- self.form.Transparency.setValue(preset.get("Transparency", 0))
- self.form.LineColor.setProperty("color", self.getColor(preset.get("LineColor", 255)))
- self.form.LineWidth.setValue(preset.get("LineWidth", 2))
- self.form.PointColor.setProperty("color", self.getColor(preset.get("PointColor", preset.get("LineColor", 255))))
- self.form.PointSize.setValue(preset.get("PointSize", preset.get("LineWidth", 2)))
- self.form.DrawStyle.setCurrentIndex(preset.get("DrawStyle", 0))
- self.form.DisplayMode.setCurrentIndex(preset.get("DisplayMode", 0))
- self.form.TextColor.setProperty("color", self.getColor(preset.get("TextColor", 255)))
- self.form.TextFont.setCurrentFont(QtGui.QFont(preset.get("TextFont", "Sans")))
- self.form.TextSize.setText(U.Quantity(preset.get("TextSize", 3.5),U.Length).UserString)
- self.form.LineSpacing.setValue(preset.get("LineSpacing", 1))
- self.form.ScaleMultiplier.setValue(preset.get("ScaleMultiplier", 1))
- self.form.AnnoLineColor.setProperty("color", self.getColor(preset.get("AnnoLineColor", preset.get("LineColor", 255))))
- self.form.AnnoLineWidth.setValue(preset.get("AnnoLineWidth", preset.get("LineWidth", 2)))
- self.form.ArrowStyle.setCurrentIndex(preset.get("ArrowStyle", 0))
- self.form.ArrowSize.setText(U.Quantity(preset.get("ArrowSize", 1), U.Length).UserString)
- self.form.ShowUnit.setChecked(preset.get("ShowUnit", True))
- self.form.UnitOverride.setText(preset.get("UnitOverride", ""))
- self.form.DimOvershoot.setText(U.Quantity(preset.get("DimOvershoot", 0), U.Length).UserString)
- self.form.ExtLines.setText(U.Quantity(preset.get("ExtLines", -0.5), U.Length).UserString)
- self.form.ExtOvershoot.setText(U.Quantity(preset.get("ExtOvershoot", 2), U.Length).UserString)
- self.form.TextSpacing.setText(U.Quantity(preset.get("TextSpacing", 1), U.Length).UserString)
+
+ def getDefDraft(entry):
+ return params.get_param(entry, ret_default=True)
+
+ def getDefView(entry):
+ return params.get_param_view(entry, ret_default=True)
+
+ # ---------------------------------------------------------------------
+
+ self.form.ShapeColor.setProperty(
+ "color",
+ self.getColor(preset.get("ShapeColor", getDefView("DefaultShapeColor")))
+ )
+ self.form.AmbientColor.setProperty(
+ "color",
+ self.getColor(preset.get("AmbientColor", getDefView("DefaultAmbientColor")))
+ )
+ self.form.EmissiveColor.setProperty(
+ "color",
+ self.getColor(preset.get("EmissiveColor", getDefView("DefaultEmissiveColor")))
+ )
+ self.form.SpecularColor.setProperty(
+ "color",
+ self.getColor(preset.get("SpecularColor", getDefView("DefaultSpecularColor")))
+ )
+ self.form.Transparency.setValue(
+ preset.get("Transparency", getDefView("DefaultShapeTransparency"))
+ )
+ self.form.Shininess.setValue(
+ preset.get("Shininess", getDefView("DefaultShapeShininess"))
+ )
+
+ # ---------------------------------------------------------------------
+
+ self.form.LineColor.setProperty(
+ "color",
+ self.getColor(preset.get("LineColor", getDefView("DefaultShapeLineColor")))
+ )
+ self.form.LineWidth.setValue(
+ preset.get("LineWidth", getDefView("DefaultShapeLineWidth"))
+ )
+ self.form.PointColor.setProperty(
+ "color",
+ self.getColor(preset.get("PointColor", preset.get("LineColor", getDefView("DefaultShapeVertexColor"))))
+ )
+ self.form.PointSize.setValue(
+ preset.get("PointSize", preset.get("LineWidth", getDefView("DefaultShapePointSize")))
+ )
+ self.form.DrawStyle.setCurrentIndex(
+ preset.get("DrawStyle", getDefDraft("DefaultDrawStyle"))
+ )
+ self.form.DisplayMode.setCurrentIndex(
+ preset.get("DisplayMode", getDefDraft("DefaultDisplayMode"))
+ )
+
+ # ---------------------------------------------------------------------
+
+ self.form.TextColor.setProperty(
+ "color",
+ self.getColor(preset.get("TextColor", getDefDraft("DefaultTextColor")))
+ )
+ self.form.TextFont.setCurrentFont(
+ QtGui.QFont(preset.get("TextFont", getDefDraft("textfont")))
+ )
+ self.form.TextSize.setText(
+ U.Quantity(preset.get("TextSize", getDefDraft("textheight")),U.Length).UserString
+ )
+ self.form.LineSpacing.setValue(
+ preset.get("LineSpacing", getDefDraft("LineSpacing"))
+ )
+ self.form.ScaleMultiplier.setValue(
+ preset.get("ScaleMultiplier", getDefDraft("DefaultAnnoScaleMultiplier"))
+ )
+
+ # ---------------------------------------------------------------------
+
+ self.form.AnnoLineColor.setProperty(
+ "color",
+ self.getColor(preset.get("AnnoLineColor", preset.get("LineColor", getDefDraft("DefaultAnnoLineColor"))))
+ )
+ self.form.AnnoLineWidth.setValue(
+ preset.get("AnnoLineWidth", preset.get("LineWidth", getDefDraft("DefaultAnnoLineWidth")))
+ )
+ self.form.ArrowStyle.setCurrentIndex(
+ preset.get("ArrowStyle", getDefDraft("dimsymbol"))
+ )
+ self.form.ArrowSize.setText(
+ U.Quantity(preset.get("ArrowSize", getDefDraft("arrowsize")), U.Length).UserString
+ )
+ self.form.ShowUnit.setChecked(
+ preset.get("ShowUnit", getDefDraft("showUnit"))
+ )
+ self.form.UnitOverride.setText(
+ preset.get("UnitOverride", getDefDraft("overrideUnit"))
+ )
+ self.form.DimOvershoot.setText(
+ U.Quantity(preset.get("DimOvershoot", getDefDraft("dimovershoot")), U.Length).UserString
+ )
+ self.form.ExtLines.setText(
+ U.Quantity(preset.get("ExtLines", getDefDraft("extlines")), U.Length).UserString
+ )
+ self.form.ExtOvershoot.setText(
+ U.Quantity(preset.get("ExtOvershoot", getDefDraft("extovershoot")), U.Length).UserString
+ )
+ self.form.TextSpacing.setText(
+ U.Quantity(preset.get("TextSpacing", getDefDraft("dimspacing")), U.Length).UserString
+ )
def reject(self):
@@ -199,18 +297,25 @@ class Draft_SetStyle_TaskPanel:
def accept(self):
params.set_param_view("DefaultShapeColor", utils.argb_to_rgba(self.form.ShapeColor.property("color").rgba()))
+ params.set_param_view("DefaultAmbientColor", utils.argb_to_rgba(self.form.AmbientColor.property("color").rgba()))
+ params.set_param_view("DefaultEmissiveColor", utils.argb_to_rgba(self.form.EmissiveColor.property("color").rgba()))
+ params.set_param_view("DefaultSpecularColor", utils.argb_to_rgba(self.form.SpecularColor.property("color").rgba()))
params.set_param_view("DefaultShapeTransparency", self.form.Transparency.value())
+ params.set_param_view("DefaultShapeShininess", self.form.Shininess.value())
+
params.set_param_view("DefaultShapeLineColor", utils.argb_to_rgba(self.form.LineColor.property("color").rgba()))
params.set_param_view("DefaultShapeLineWidth", self.form.LineWidth.value())
params.set_param_view("DefaultShapeVertexColor", utils.argb_to_rgba(self.form.PointColor.property("color").rgba()))
params.set_param_view("DefaultShapePointSize", self.form.PointSize.value())
params.set_param("DefaultDrawStyle", self.form.DrawStyle.currentIndex())
params.set_param("DefaultDisplayMode", self.form.DisplayMode.currentIndex())
+
params.set_param("DefaultTextColor", utils.argb_to_rgba(self.form.TextColor.property("color").rgba()))
params.set_param("textfont", self.form.TextFont.currentFont().family())
params.set_param("textheight", U.Quantity(self.form.TextSize.text()).Value)
params.set_param("LineSpacing", self.form.LineSpacing.value())
params.set_param("DefaultAnnoScaleMultiplier", self.form.ScaleMultiplier.value())
+
params.set_param("DefaultAnnoLineColor", utils.argb_to_rgba(self.form.AnnoLineColor.property("color").rgba()))
params.set_param("DefaultAnnoLineWidth", self.form.AnnoLineWidth.value())
params.set_param("dimsymbol", self.form.ArrowStyle.currentIndex())
@@ -221,6 +326,7 @@ class Draft_SetStyle_TaskPanel:
params.set_param("extlines", U.Quantity(self.form.ExtLines.text()).Value)
params.set_param("extovershoot", U.Quantity(self.form.ExtOvershoot.text()).Value)
params.set_param("dimspacing", U.Quantity(self.form.TextSpacing.text()).Value)
+
self.reject()
def onApplyStyle(self):
@@ -246,10 +352,15 @@ class Draft_SetStyle_TaskPanel:
properties = vobj.PropertiesList
if "FontName" not in properties: # Shapes
- if "ShapeColor" in properties:
- vobj.ShapeColor = self.form.ShapeColor.property("color").getRgbF()[:3] # Remove Alpha (which is 1 instead of 0).
- if "Transparency" in properties:
- vobj.Transparency = self.form.Transparency.value()
+ if "ShapeAppearance" in properties:
+ material = App.Material()
+ material.DiffuseColor = self.form.ShapeColor.property("color").getRgbF()[:3] # Remove Alpha (which is 1 instead of 0).
+ material.AmbientColor = self.form.AmbientColor.property("color").getRgbF()[:3]
+ material.EmissiveColor = self.form.EmissiveColor.property("color").getRgbF()[:3]
+ material.SpecularColor = self.form.SpecularColor.property("color").getRgbF()[:3]
+ material.Transparency = self.form.Transparency.value() / 100
+ material.Shininess = self.form.Shininess.value() / 100
+ vobj.ShapeAppearance = (material, )
if "LineColor" in properties:
vobj.LineColor = self.form.LineColor.property("color").getRgbF()[:3]
if "LineWidth" in properties:
diff --git a/src/Mod/Draft/draftutils/params.py b/src/Mod/Draft/draftutils/params.py
index c46dbac31f..cd98573d8f 100644
--- a/src/Mod/Draft/draftutils/params.py
+++ b/src/Mod/Draft/draftutils/params.py
@@ -486,12 +486,16 @@ def _get_param_dictionary():
"BackgroundColor": ("unsigned", 336897023),
"BackgroundColor2": ("unsigned", 859006463),
"BackgroundColor3": ("unsigned", 2543299327),
+ "DefaultAmbientColor": ("unsigned", 1431655935),
+ "DefaultEmissiveColor": ("unsigned", 255),
"DefaultShapeColor": ("unsigned", 3435980543),
"DefaultShapeLineColor": ("unsigned", 421075455),
"DefaultShapeLineWidth": ("int", 2),
"DefaultShapePointSize": ("int", 2),
+ "DefaultShapeShininess": ("int", 90),
"DefaultShapeTransparency": ("int", 0),
"DefaultShapeVertexColor": ("unsigned", 421075455),
+ "DefaultSpecularColor": ("unsigned", 2290649343),
"EnableSelection": ("bool", True),
"Gradient": ("bool", True),
"MarkerSize": ("int", 9),
@@ -580,7 +584,7 @@ def _get_param_dictionary():
PARAM_DICT = _get_param_dictionary()
-def get_param(entry, path="Mod/Draft"):
+def get_param(entry, path="Mod/Draft", ret_default=False):
"""Return a stored parameter value or its default.
Parameters
@@ -591,6 +595,9 @@ def get_param(entry, path="Mod/Draft"):
Defaults to "Mod/Draft".
The path where the parameter can be found.
This string is appended to "User parameter:BaseApp/Preferences/".
+ ret_default: bool, optional
+ Defaults to `False`.
+ If `True`, always return the default value even if a stored value is available.
Returns
-------
@@ -601,6 +608,8 @@ def get_param(entry, path="Mod/Draft"):
return None
param_grp = App.ParamGet("User parameter:BaseApp/Preferences/" + path)
typ, default = PARAM_DICT[path][entry]
+ if ret_default:
+ return default
if typ == "bool":
return param_grp.GetBool(entry, default)
if typ == "float":
@@ -614,12 +623,12 @@ def get_param(entry, path="Mod/Draft"):
return None
-def get_param_arch(entry):
- return get_param(entry, path="Mod/Arch")
+def get_param_arch(entry, ret_default=False):
+ return get_param(entry, path="Mod/Arch", ret_default=ret_default)
-def get_param_view(entry):
- return get_param(entry, path="View")
+def get_param_view(entry, ret_default=False):
+ return get_param(entry, path="View", ret_default=ret_default)
def set_param(entry, value, path="Mod/Draft"):
diff --git a/src/Mod/Draft/draftutils/utils.py b/src/Mod/Draft/draftutils/utils.py
index 4733d95cd6..4fa8f783f2 100644
--- a/src/Mod/Draft/draftutils/utils.py
+++ b/src/Mod/Draft/draftutils/utils.py
@@ -88,17 +88,35 @@ def get_default_shape_style():
display_mode_index = params.get_param("DefaultDisplayMode")
draw_style_index = params.get_param("DefaultDrawStyle")
return {
- "DisplayMode": ("index", display_mode_index, DISPLAY_MODES[display_mode_index]),
- "DrawStyle": ("index", draw_style_index, DRAW_STYLES[draw_style_index]),
- "LineColor": ("color", params.get_param_view("DefaultShapeLineColor")),
- "LineWidth": ("int", params.get_param_view("DefaultShapeLineWidth")),
- "PointColor": ("color", params.get_param_view("DefaultShapeVertexColor")),
- "PointSize": ("int", params.get_param_view("DefaultShapePointSize")),
- "ShapeColor": ("color", params.get_param_view("DefaultShapeColor")),
- "Transparency": ("int", params.get_param_view("DefaultShapeTransparency"))
+ "DisplayMode": ("index", display_mode_index, DISPLAY_MODES[display_mode_index]),
+ "DrawStyle": ("index", draw_style_index, DRAW_STYLES[draw_style_index]),
+ "LineColor": ("color", params.get_param_view("DefaultShapeLineColor")),
+ "LineWidth": ("int", params.get_param_view("DefaultShapeLineWidth")),
+ "PointColor": ("color", params.get_param_view("DefaultShapeVertexColor")),
+ "PointSize": ("int", params.get_param_view("DefaultShapePointSize")),
+ "ShapeAppearance": ("material", (get_appearance_material(), ))
}
+def get_appearance_material(ret_default=False):
+ """Return a ShapeAppearance material with properties based on the preferences.
+
+ Parameters
+ ----------
+ ret_default: bool, optional
+ Defaults to `False`.
+ If `True`, always use default preference values even if stored values are available.
+ """
+ material = App.Material()
+ material.AmbientColor = params.get_param_view("DefaultAmbientColor", ret_default=ret_default)
+ material.DiffuseColor = params.get_param_view("DefaultShapeColor", ret_default=ret_default)
+ material.EmissiveColor = params.get_param_view("DefaultEmissiveColor", ret_default=ret_default)
+ material.Shininess = params.get_param_view("DefaultShapeShininess", ret_default=ret_default) / 100
+ material.SpecularColor = params.get_param_view("DefaultSpecularColor", ret_default=ret_default)
+ material.Transparency = params.get_param_view("DefaultShapeTransparency", ret_default=ret_default) / 100
+ return material
+
+
def string_encode_coin(ustr):
"""Encode a unicode object to be used as a string in coin.