Merge pull request #5206 from Roy-043/Draft-fix-layer-and-style-handling-of-point-color-and-point-size

Draft: Draft_SetStyle and Draft_Layer did not handle PointColor and PointSize.
This commit is contained in:
Yorik van Havre
2021-12-01 14:57:09 +01:00
committed by GitHub
2 changed files with 27 additions and 24 deletions

View File

@@ -123,7 +123,7 @@ class Draft_SetStyle_TaskPanel:
return QtGui.QColor.fromRgbF(r,g,b)
def getValues(self):
preset = {}
preset["LineColor"] = self.form.LineColor.property("color").rgb()<<8
preset["LineWidth"] = self.form.LineWidth.value()
@@ -143,7 +143,7 @@ class Draft_SetStyle_TaskPanel:
return preset
def setValues(self,preset):
from PySide import QtCore,QtGui
self.form.LineColor.setProperty("color",self.getColor(preset.get("LineColor",255)))
self.form.LineWidth.setValue(preset.get("LineWidth",1))
@@ -169,6 +169,8 @@ class Draft_SetStyle_TaskPanel:
FreeCAD.ParamGet(self.p+"View").SetUnsigned("DefaultShapeLineColor",self.form.LineColor.property("color").rgb()<<8)
FreeCAD.ParamGet(self.p+"View").SetInt("DefaultShapeLineWidth",self.form.LineWidth.value())
FreeCAD.ParamGet(self.p+"View").SetUnsigned("DefaultShapeVertexColor",self.form.LineColor.property("color").rgb()<<8)
FreeCAD.ParamGet(self.p+"View").SetInt("DefaultShapePointSize",self.form.LineWidth.value())
FreeCAD.ParamGet(self.p+"Mod/Draft").SetInt("DefaultDrawStyle",self.form.DrawStyle.currentIndex())
FreeCAD.ParamGet(self.p+"Mod/Draft").SetInt("DefaultDisplayMode",self.form.DisplayMode.currentIndex())
FreeCAD.ParamGet(self.p+"View").SetUnsigned("DefaultShapeColor",self.form.ShapeColor.property("color").rgb()<<8)
@@ -195,18 +197,17 @@ class Draft_SetStyle_TaskPanel:
vobj.LineColor = self.form.LineColor.property("color").getRgbF()
if "LineWidth" in vobj.PropertiesList:
vobj.LineWidth = self.form.LineWidth.value()
if "PointColor" in vobj.PropertiesList:
vobj.PointColor = self.form.LineColor.property("color").getRgbF()
if "PointSize" in vobj.PropertiesList:
vobj.PointSize = self.form.LineWidth.value()
if "DrawStyle" in vobj.PropertiesList:
vobj.DrawStyle = ["Solid","Dashed","Dotted","Dashdot"][self.form.DrawStyle.currentIndex()]
if "DisplayMode" in vobj.PropertiesList:
dmodes = ["Flat Lines","Wireframe","Shaded","Points"]
dm = dmodes[self.form.DisplayMode.currentIndex()]
if hasattr(vobj,"Proxy") and hasattr(vobj.Proxy,"getDisplayModes"):
dmodes = vobj.Proxy.getDisplayModes(vobj)
if dm in dmodes:
try:
vobj.DisplayMode = dm
except Exception:
pass
if dm in vobj.getEnumerationsOfProperty("DisplayMode"):
vobj.DisplayMode = dm
if "ShapeColor" in vobj.PropertiesList:
vobj.ShapeColor = self.form.ShapeColor.property("color").getRgbF()
if "Transparency" in vobj.PropertiesList:
@@ -233,7 +234,7 @@ class Draft_SetStyle_TaskPanel:
vobj.LineSpacing = self.form.LineSpacing.value()
def onApplyDim(self,index):
import Draft
objs = FreeCAD.ActiveDocument.Objects
dims = Draft.getObjectsOfType(objs,"LinearDimension")

View File

@@ -38,7 +38,7 @@ import FreeCAD as App
import FreeCADGui as Gui
from draftutils.messages import _msg
from draftutils.translate import _tr
from draftutils.translate import translate
from draftobjects.layer import Layer
@@ -239,15 +239,17 @@ class ViewProviderLayer:
# and then sets the target property accordingly
if hasattr(target_vobj, prop):
setattr(target_vobj, prop, getattr(vobj, prop))
else:
continue
# Use the line color for the text color if it exists
# Use the line color for the point color and text color
if prop == "LineColor":
if hasattr(target_vobj, "PointColor"):
target_vobj.PointColor = vobj.LineColor
if hasattr(target_vobj, "TextColor"):
target_vobj.TextColor = vobj.LineColor
if hasattr(target_vobj, "FontColor"):
target_vobj.FontColor = vobj.LineColor
# Use the line width for the point size
elif prop == "LineWidth":
if hasattr(target_vobj, "PointSize"):
target_vobj.PointSize = vobj.LineWidth
def onChanged(self, vobj, prop):
"""Execute when a view property is changed."""
@@ -356,13 +358,13 @@ class ViewProviderLayer:
def setupContextMenu(self, vobj, menu):
"""Set up actions to perform in the context menu."""
action1 = QtGui.QAction(QtGui.QIcon(":/icons/button_right.svg"),
_tr("Activate this layer"),
translate("draft", "Activate this layer"),
menu)
action1.triggered.connect(self.activate)
menu.addAction(action1)
action2 = QtGui.QAction(QtGui.QIcon(":/icons/Draft_SelectGroup.svg"),
_tr("Select layer contents"),
translate("draft", "Select layer contents"),
menu)
action2.triggered.connect(self.select_contents)
menu.addAction(action2)
@@ -400,12 +402,12 @@ class ViewProviderLayerContainer:
def setupContextMenu(self, vobj, menu):
"""Set up actions to perform in the context menu."""
action1 = QtGui.QAction(QtGui.QIcon(":/icons/Draft_Layer.svg"),
_tr("Merge layer duplicates"),
translate("draft", "Merge layer duplicates"),
menu)
action1.triggered.connect(self.merge_by_name)
menu.addAction(action1)
action2 = QtGui.QAction(QtGui.QIcon(":/icons/Draft_NewLayer.svg"),
_tr("Add new layer"),
translate("draft", "Add new layer"),
menu)
action2.triggered.connect(self.add_layer)
menu.addAction(action2)
@@ -416,7 +418,7 @@ class ViewProviderLayerContainer:
return
doc = App.ActiveDocument
doc.openTransaction(_tr("Merge layer duplicates"))
doc.openTransaction(translate("draft", "Merge layer duplicates"))
layer_container = self.Object
layers = []
@@ -448,12 +450,12 @@ class ViewProviderLayerContainer:
base.Group = base_group
to_delete.append(layer)
elif layer.Label != base_label:
_msg(_tr("Relabeling layer:")
_msg(translate("draft", "Relabeling layer:")
+ " '{}' -> '{}'".format(layer.Label, base_label))
layer.Label = base_label
for layer in to_delete:
_msg(_tr("Merging layer:") + " '{}'".format(layer.Label))
_msg(translate("draft", "Merging layer:") + " '{}'".format(layer.Label))
doc.removeObject(layer.Name)
doc.recompute()
@@ -464,7 +466,7 @@ class ViewProviderLayerContainer:
import Draft
doc = App.ActiveDocument
doc.openTransaction(_tr("Add new layer"))
doc.openTransaction(translate("draft", "Add new layer"))
Draft.make_layer()