From b64fddb2e02cb921be801c337689813051784e82 Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Thu, 1 Jul 2021 12:59:49 +0200 Subject: [PATCH] Draft: Added Text Spacing and Line Spacing settings to Draft Set Style dialog --- .../Draft/Resources/ui/TaskPanel_SetStyle.ui | 51 +++++++++++++++---- src/Mod/Draft/draftguitools/gui_setstyle.py | 42 ++++++++++----- 2 files changed, 69 insertions(+), 24 deletions(-) diff --git a/src/Mod/Draft/Resources/ui/TaskPanel_SetStyle.ui b/src/Mod/Draft/Resources/ui/TaskPanel_SetStyle.ui index 92969dd245..14b6edec4f 100644 --- a/src/Mod/Draft/Resources/ui/TaskPanel_SetStyle.ui +++ b/src/Mod/Draft/Resources/ui/TaskPanel_SetStyle.ui @@ -199,7 +199,7 @@ Annotations - + The type of dimension arrows @@ -238,7 +238,7 @@ - + Text color @@ -265,7 +265,7 @@ - + The color of texts and dimension texts @@ -282,14 +282,14 @@ - + Arrow style - + If the unit suffix is shown on dimension texts or not @@ -302,7 +302,7 @@ - + The size of dimension arrows @@ -312,34 +312,65 @@ - + Show unit - + Arrow size - + Unit override - + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + Text spacing + + + + + + + The space between the text and the dimension line + + + + + + + + + + Line spacing + + + + + + + The spacing between different lines of text + + + diff --git a/src/Mod/Draft/draftguitools/gui_setstyle.py b/src/Mod/Draft/draftguitools/gui_setstyle.py index 188e7b33d7..00422d2995 100644 --- a/src/Mod/Draft/draftguitools/gui_setstyle.py +++ b/src/Mod/Draft/draftguitools/gui_setstyle.py @@ -88,6 +88,8 @@ class Draft_SetStyle_TaskPanel: self.form.ShowUnit.setChecked(FreeCAD.ParamGet(self.p+"Mod/Draft").GetBool("showUnit",True)) self.form.UnitOverride.setText(FreeCAD.ParamGet(self.p+"Mod/Draft").GetString("overrideUnit","")) self.form.saveButton.setIcon(QtGui.QIcon.fromTheme("gtk-save", QtGui.QIcon(":/icons/document-save.svg"))) + self.form.TextSpacing.setText(FreeCAD.Units.Quantity(FreeCAD.ParamGet(self.p+"Mod/Draft").GetFloat("dimspacing",1),FreeCAD.Units.Length).UserString) + self.form.LineSpacing.setValue(FreeCAD.ParamGet(self.p+"Mod/Draft").GetInt("LineSpacing",1)) self.form.saveButton.clicked.connect(self.onSaveStyle) self.form.applyButton.clicked.connect(self.onApplyStyle) self.form.dimButton.clicked.connect(self.onApplyDim) @@ -103,7 +105,7 @@ class Draft_SetStyle_TaskPanel: self.form.comboPresets.addItems(presets) current = self.getValues() for name,preset in pdict.items(): - if preset == current: + if all(item in current.items() for item in preset.items()): #if preset == current: self.form.comboPresets.setCurrentIndex(1+(list(pdict.keys()).index(name))) break @@ -136,24 +138,28 @@ class Draft_SetStyle_TaskPanel: preset["ArrowSize"] = FreeCAD.Units.Quantity(self.form.ArrowSize.text()).Value preset["ShowUnit"] = self.form.ShowUnit.isChecked() preset["UnitOverride"] = self.form.UnitOverride.text() + preset["TextSpacing"] = FreeCAD.Units.Quantity(self.form.TextSpacing.text()).Value + preset["LineSpacing"] = self.form.LineSpacing.value() return preset def setValues(self,preset): from PySide import QtCore,QtGui - self.form.LineColor.setProperty("color",self.getColor(preset["LineColor"])) - self.form.LineWidth.setValue(preset["LineWidth"]) - self.form.DrawStyle.setCurrentIndex(preset["DrawStyle"]) - self.form.DisplayMode.setCurrentIndex(preset["DisplayMode"]) - self.form.ShapeColor.setProperty("color",self.getColor(preset["ShapeColor"])) - self.form.Transparency.setValue(preset["Transparency"]) - self.form.TextFont.setCurrentFont(QtGui.QFont(preset["TextFont"])) - self.form.TextColor.setProperty("color",self.getColor(preset["TextColor"])) - self.form.ArrowStyle.setCurrentIndex(preset["ArrowStyle"]) - self.form.ShowUnit.setChecked(preset["ShowUnit"]) - self.form.UnitOverride.setText(preset["UnitOverride"]) - self.form.TextSize.setText(FreeCAD.Units.Quantity(preset["TextSize"],FreeCAD.Units.Length).UserString) - self.form.ArrowSize.setText(FreeCAD.Units.Quantity(preset["ArrowSize"],FreeCAD.Units.Length).UserString) + self.form.LineColor.setProperty("color",self.getColor(preset.get("LineColor",255))) + self.form.LineWidth.setValue(preset.get("LineWidth",1)) + self.form.DrawStyle.setCurrentIndex(preset.get("DrawStyle",0)) + self.form.DisplayMode.setCurrentIndex(preset.get("DisplayMode",0)) + self.form.ShapeColor.setProperty("color",self.getColor(preset.get("ShapeColor",1098063919616))) + self.form.Transparency.setValue(preset.get("Transparency",0)) + self.form.TextFont.setCurrentFont(QtGui.QFont(preset.get("TextFont","sans"))) + self.form.TextColor.setProperty("color",self.getColor(preset.get("TextColor",255))) + self.form.ArrowStyle.setCurrentIndex(preset.get("ArrowStyle",0)) + self.form.ShowUnit.setChecked(preset.get("ShowUnit",False)) + self.form.UnitOverride.setText(preset.get("UnitOverride","")) + self.form.TextSize.setText(FreeCAD.Units.Quantity(preset.get("TextSize",25),FreeCAD.Units.Length).UserString) + self.form.ArrowSize.setText(FreeCAD.Units.Quantity(preset.get("ArrowSize",5),FreeCAD.Units.Length).UserString) + self.form.TextSpacing.setText(FreeCAD.Units.Quantity(preset.get("TextSpacing",25),FreeCAD.Units.Length).UserString) + self.form.LineSpacing.setValue(preset.get("LineSpacing",3)) def reject(self): @@ -174,6 +180,8 @@ class Draft_SetStyle_TaskPanel: FreeCAD.ParamGet(self.p+"/Mod/Draft").SetFloat("arrowsize",FreeCAD.Units.Quantity(self.form.ArrowSize.text()).Value) FreeCAD.ParamGet(self.p+"Mod/Draft").SetBool("showUnit",self.form.ShowUnit.isChecked()) FreeCAD.ParamGet(self.p+"Mod/Draft").SetString("overrideUnit",self.form.UnitOverride.text()) + FreeCAD.ParamGet(self.p+"Mod/Draft").SetFloat("dimspacing",FreeCAD.Units.Quantity(self.form.TextSpacing.text()).Value) + FreeCAD.ParamGet(self.p+"Mod/Draft").SetInt("LineSpacing",self.form.LineSpacing.value()) if hasattr(FreeCADGui,"draftToolBar"): FreeCADGui.draftToolBar.setStyleButton() self.reject() @@ -219,6 +227,10 @@ class Draft_SetStyle_TaskPanel: vobj.ShowUnit = self.form.ShowUnit.isChecked() if "UnitOverride" in vobj.PropertiesList: vobj.UnitOverride = self.form.UnitOverride.text() + if "TextSpacing" in vobj.PropertiesList: + vobj.TextSpacing = FreeCAD.Units.Quantity(self.form.TextSpacing.text()).Value + if "LineSpacing" in vobj.PropertiesList: + vobj.LineSpacing = self.form.LineSpacing.value() def onApplyDim(self,index): @@ -236,6 +248,7 @@ class Draft_SetStyle_TaskPanel: vobj.ArrowSize = FreeCAD.Units.Quantity(self.form.ArrowSize.text()).Value vobj.ShowUnit = self.form.ShowUnit.isChecked() vobj.UnitOverride = self.form.UnitOverride.text() + vobj.TextSpacing = FreeCAD.Units.Quantity(self.form.TextSpacing.text()).Value texts = Draft.getObjectsOfType(objs,"Text") texts += Draft.getObjectsOfType(objs,"DraftText") for obj in texts: @@ -243,6 +256,7 @@ class Draft_SetStyle_TaskPanel: vobj.FontName = self.form.TextFont.currentFont().family() vobj.FontSize = FreeCAD.Units.Quantity(self.form.TextSize.text()).Value vobj.TextColor = self.form.TextColor.property("color").rgb()<<8 + vobj.LineSpacing = self.form.LineSpacing.value() def onLoadStyle(self,index):