From 4bae94495057e8ec1248070d720754b4ded87bd3 Mon Sep 17 00:00:00 2001 From: donovaly Date: Fri, 27 Nov 2020 03:52:53 +0100 Subject: [PATCH] [TD] make LineGroup selectable At the moment one has to specify the LineGroup as string. But one doesn't know what groups exist. So one has to check the Wiki, learn there where the groups are defined and then open the definition file with a text editor. This PR simplifies this by reading the existing groups out of the definition file and fill the combobox accordingly. It also give the user info what the selected LineGroup defines via the tooltip. A nice side effect is that no typos can occur since you don't have to enter the LineGroup name as text. --- src/Mod/TechDraw/App/Cosmetic.cpp | 4 +- src/Mod/TechDraw/App/DrawUtil.cpp | 5 +- src/Mod/TechDraw/App/LineGroup.cpp | 92 +++++++++++-------- src/Mod/TechDraw/App/LineGroup.h | 9 +- src/Mod/TechDraw/App/Preferences.cpp | 6 +- src/Mod/TechDraw/App/Preferences.h | 2 +- .../Gui/DlgPrefsTechDrawAnnotation.ui | 26 ++---- .../Gui/DlgPrefsTechDrawAnnotationImp.cpp | 50 +++++++++- .../Gui/DlgPrefsTechDrawAnnotationImp.h | 3 + src/Mod/TechDraw/Gui/TaskCenterLine.cpp | 4 +- src/Mod/TechDraw/Gui/TaskLeaderLine.cpp | 4 +- src/Mod/TechDraw/Gui/TaskRichAnno.cpp | 4 +- src/Mod/TechDraw/Gui/ViewProviderBalloon.cpp | 6 +- .../TechDraw/Gui/ViewProviderDimension.cpp | 8 +- .../TechDraw/Gui/ViewProviderGeomHatch.cpp | 4 +- src/Mod/TechDraw/Gui/ViewProviderLeader.cpp | 4 +- src/Mod/TechDraw/Gui/ViewProviderRichAnno.cpp | 4 +- src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp | 4 +- 18 files changed, 148 insertions(+), 91 deletions(-) diff --git a/src/Mod/TechDraw/App/Cosmetic.cpp b/src/Mod/TechDraw/App/Cosmetic.cpp index d2fcaf9778..80070ff38b 100644 --- a/src/Mod/TechDraw/App/Cosmetic.cpp +++ b/src/Mod/TechDraw/App/Cosmetic.cpp @@ -107,8 +107,8 @@ std::string LineFormat::toString(void) const //static preference getters. double LineFormat::getDefEdgeWidth() { - std::string lgName = Preferences::lineGroup(); - auto lg = TechDraw::LineGroup::lineGroupFactory(lgName); + int lgNumber = Preferences::lineGroup(); + auto lg = TechDraw::LineGroup::lineGroupFactory(lgNumber); double width = lg->getWeight("Graphic"); delete lg; diff --git a/src/Mod/TechDraw/App/DrawUtil.cpp b/src/Mod/TechDraw/App/DrawUtil.cpp index 7ad35d5ff2..6fd468a36b 100644 --- a/src/Mod/TechDraw/App/DrawUtil.cpp +++ b/src/Mod/TechDraw/App/DrawUtil.cpp @@ -561,9 +561,8 @@ double DrawUtil::sensibleScale(double working_scale) double DrawUtil::getDefaultLineWeight(std::string lineType) { - std::string lgName = Preferences::lineGroup(); - - auto lg = LineGroup::lineGroupFactory(lgName); + int lgNumber = Preferences::lineGroup(); + auto lg = LineGroup::lineGroupFactory(lgNumber); double weight = lg->getWeight(lineType); delete lg; //Coverity CID 174671 diff --git a/src/Mod/TechDraw/App/LineGroup.cpp b/src/Mod/TechDraw/App/LineGroup.cpp index f9d98785f1..05f3da24d8 100644 --- a/src/Mod/TechDraw/App/LineGroup.cpp +++ b/src/Mod/TechDraw/App/LineGroup.cpp @@ -125,62 +125,49 @@ std::vector LineGroup::split(std::string line) return result; } -//static support function: find group defn in file -std::string LineGroup::getRecordFromFile(std::string parmFile, std::string groupName) +//static support function: find group definition in file +std::string LineGroup::getRecordFromFile(std::string parmFile, int groupNumber) { std::string record; - std::string lineSpec; std::ifstream inFile; inFile.open (parmFile, std::ifstream::in); if(!inFile.is_open()) { Base::Console().Message( "Cannot open LineGroup file: %s\n",parmFile.c_str()); return record; } - - bool groupFound = false; + // parse file to get the groupNumber'th line + int counter = 0; // the combobox enums begin with 0 while ( inFile.good() ){ std::string line; - std::getline(inFile,line); - std::string nameTag = line.substr(0,1); - std::string foundName; - unsigned long int commaPos; - if ((nameTag == ";") || - (nameTag == " ") || - (line.empty()) ) { //is cr/lf empty? - continue; - } else if (nameTag == "*") { - commaPos = line.find(',',1); - if (commaPos != std::string::npos) { - foundName = line.substr(1,commaPos-1); - } else { - foundName = line.substr(1); - } - if (foundName == groupName) { - //this is our group + std::getline(inFile, line); + std::string nameTag = line.substr(0, 1); + if (nameTag == "*") { // we found a definition line + if (counter == groupNumber) { record = line; - groupFound = true; - break; + return record; } + ++counter; } } //endwhile - if (!groupFound) { - Base::Console().Message("LineGroup - group: %s is not found\n", groupName.c_str()); - } - return record; + // nothing was found + Base::Console().Error("LineGroup: the LineGroup file has only %s entries but entry number %s is set\n" + , std::to_string(counter).c_str() + , std::to_string(groupNumber).c_str()); + return std::string(); // return an empty string } //static LineGroup maker -LineGroup* LineGroup::lineGroupFactory(std::string groupName) +LineGroup* LineGroup::lineGroupFactory(int groupNumber) { - LineGroup* lg = new LineGroup(groupName); + LineGroup* lg = new LineGroup(); std::string lgFileName = Preferences::lineGroupFile(); - std::string lgRecord = LineGroup::getRecordFromFile(lgFileName, groupName); + std::string lgRecord = LineGroup::getRecordFromFile(lgFileName, groupNumber); std::vector values = LineGroup::split(lgRecord); if (values.size() < 4) { - Base::Console().Message( "LineGroup::invalid entry in %s\n",groupName.c_str() ); + Base::Console().Error( "LineGroup::invalid entry in %s\n", lgFileName.c_str() ); } else { lg->setWeight("Thin",values[0]); lg->setWeight("Graphic",values[1]); @@ -191,16 +178,47 @@ LineGroup* LineGroup::lineGroupFactory(std::string groupName) } //valid weight names: Thick, Thin, Graphic, Extra -double LineGroup::getDefaultWidth(std::string weightName, std::string groupName) +double LineGroup::getDefaultWidth(std::string weightName, int groupNumber) { //default line weights - std::string lgName = groupName; - if (groupName.empty()) { - lgName = Preferences::lineGroup(); + int lgNumber = groupNumber; + if (lgNumber == -1) { + lgNumber = Preferences::lineGroup(); } - auto lg = TechDraw::LineGroup::lineGroupFactory(lgName); + auto lg = TechDraw::LineGroup::lineGroupFactory(lgNumber); double weight = lg->getWeight(weightName); delete lg; return weight; } + +//static support function: find group definition in file +std::string LineGroup::getGroupNamesFromFile(std::string FileName) +{ + std::string record; + std::ifstream inFile; + inFile.open(FileName, std::ifstream::in); + if (!inFile.is_open()) { + Base::Console().Message("Cannot open LineGroup file: %s\n", FileName.c_str()); + return record; + } + // parse the file + while (inFile.good()) { + std::string line; + std::getline(inFile, line); + std::string nameTag = line.substr(0, 1); + std::string found; + unsigned long int commaPos; + if (nameTag == "*") { + commaPos = line.find(',', 1); + if (commaPos != std::string::npos) { + found = line.substr(1, commaPos - 1); + record = record + found + ','; + } + } + } //endwhile + if (record.empty()) { + Base::Console().Message("LineGroup error: no group found in file %s\n", FileName.c_str()); + } + return record; +} diff --git a/src/Mod/TechDraw/App/LineGroup.h b/src/Mod/TechDraw/App/LineGroup.h index 76826741d7..250a9d12cd 100644 --- a/src/Mod/TechDraw/App/LineGroup.h +++ b/src/Mod/TechDraw/App/LineGroup.h @@ -47,13 +47,14 @@ public: static std::vector split(std::string line); //static support function: find group defn in file - static std::string getRecordFromFile(std::string parmFile, std::string groupName); + static std::string getRecordFromFile(std::string parmFile, int groupNumber); //static LineGroup maker - static LineGroup* lineGroupFactory(std::string groupName); + static LineGroup* lineGroupFactory(int groupNumber); - static double getDefaultWidth(std::string weightName, - std::string groupName = std::string()); + static double getDefaultWidth(std::string weightName, int groupNumber = -1); + + static std::string getGroupNamesFromFile(std::string FileName); protected: diff --git a/src/Mod/TechDraw/App/Preferences.cpp b/src/Mod/TechDraw/App/Preferences.cpp index 433e76ffe8..8080e39ade 100644 --- a/src/Mod/TechDraw/App/Preferences.cpp +++ b/src/Mod/TechDraw/App/Preferences.cpp @@ -167,13 +167,13 @@ int Preferences::projectionAngle() return projType; } -std::string Preferences::lineGroup() +int Preferences::lineGroup() { Base::Reference hGrp = App::GetApplication().GetUserParameter(). GetGroup("BaseApp")->GetGroup("Preferences")-> GetGroup("Mod/TechDraw/Decorations"); - std::string lgName = hGrp->GetASCII("LineGroup","FC 0.70mm"); - return lgName; + int lgInt = hGrp->GetInt("LineGroup", 3); // FC 0.70mm + return lgInt; } int Preferences::balloonArrow() diff --git a/src/Mod/TechDraw/App/Preferences.h b/src/Mod/TechDraw/App/Preferences.h index ee2ec0e0ea..a61ed000a0 100644 --- a/src/Mod/TechDraw/App/Preferences.h +++ b/src/Mod/TechDraw/App/Preferences.h @@ -59,7 +59,7 @@ static bool useGlobalDecimals(); static bool keepPagesUpToDate(); static int projectionAngle(); -static std::string lineGroup(); +static int lineGroup(); static int balloonArrow(); diff --git a/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotation.ui b/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotation.ui index aeb402e876..d629c8566a 100644 --- a/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotation.ui +++ b/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotation.ui @@ -6,7 +6,7 @@ 0 0 - 460 + 415 447 @@ -578,7 +578,7 @@ - + 0 @@ -591,21 +591,15 @@ 0 - - Default name in LineGroup CSV file - - - FC 0.70mm - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - LineGroup /Mod/TechDraw/Decorations + + + @@ -698,8 +692,11 @@ true + + Line group used to set line widths + - Line Group Name + Line Group @@ -883,11 +880,6 @@ QComboBox
Gui/PrefWidgets.h
- - Gui::PrefLineEdit - QLineEdit -
Gui/PrefWidgets.h
-
Gui::PrefUnitSpinBox Gui::QuantitySpinBox diff --git a/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotationImp.cpp b/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotationImp.cpp index a0e14677b7..1138893f52 100644 --- a/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotationImp.cpp +++ b/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotationImp.cpp @@ -34,6 +34,7 @@ #include "PreferencesGui.h" #include "DlgPrefsTechDrawAnnotationImp.h" #include "ui_DlgPrefsTechDrawAnnotation.h" +#include using namespace TechDrawGui; @@ -47,6 +48,10 @@ DlgPrefsTechDrawAnnotationImp::DlgPrefsTechDrawAnnotationImp( QWidget* parent ) ui->setupUi(this); ui->pdsbBalloonKink->setUnit(Base::Unit::Length); ui->pdsbBalloonKink->setMinimum(0); + + // connect the LineGroup the update the tooltip if index changed + connect(ui->pcbLineGroup, SIGNAL(currentIndexChanged(int)), + this, SLOT(onLineGroupChanged(int))); } DlgPrefsTechDrawAnnotationImp::~DlgPrefsTechDrawAnnotationImp() @@ -61,7 +66,7 @@ void DlgPrefsTechDrawAnnotationImp::saveSettings() ui->cbPyramidOrtho->onSave(); ui->cbSectionLineStd->onSave(); ui->cbShowCenterMarks->onSave(); - ui->leLineGroup->onSave(); + ui->pcbLineGroup->onSave(); ui->pcbBalloonArrow->onSave(); ui->pcbBalloonShape->onSave(); ui->pcbCenterStyle->onSave(); @@ -79,13 +84,27 @@ void DlgPrefsTechDrawAnnotationImp::loadSettings() //QAbstractSpinBox double kinkDefault = 5.0; ui->pdsbBalloonKink->setValue(kinkDefault); - + // re-read the available LineGroup files + ui->pcbLineGroup->clear(); + std::string lgFileName = Preferences::lineGroupFile(); + std::string lgRecord = LineGroup::getGroupNamesFromFile(lgFileName); + // split collected groups + std::stringstream ss(lgRecord); + std::vector lgNames; + while (std::getline(ss, lgRecord, ',')) { + lgNames.push_back(lgRecord); + } + // fill the combobox with the found names + for (auto it = lgNames.begin(); it < lgNames.end(); ++it) { + ui->pcbLineGroup->addItem(tr((*it).c_str())); + } + ui->cbAutoHoriz->onRestore(); ui->cbPrintCenterMarks->onRestore(); ui->cbPyramidOrtho->onRestore(); ui->cbSectionLineStd->onRestore(); ui->cbShowCenterMarks->onRestore(); - ui->leLineGroup->onRestore(); + ui->pcbLineGroup->onRestore(); ui->pcbBalloonArrow->onRestore(); ui->pcbBalloonShape->onRestore(); ui->pcbCenterStyle->onRestore(); @@ -119,4 +138,29 @@ int DlgPrefsTechDrawAnnotationImp::prefBalloonArrow(void) const return Preferences::balloonArrow(); } +/** + * Updates the tooltip of the LineGroup combobox + */ +void DlgPrefsTechDrawAnnotationImp::onLineGroupChanged(int index) +{ + if (index == -1) { // there is no valid index yet + ui->pcbLineGroup->setToolTip(QString::fromStdString("Please select a Line Group")); + return; + } + // get the definition the the selected LineGroup (includes the name) + std::string lgRecord = LineGroup::getRecordFromFile(Preferences::lineGroupFile(), index); + std::stringstream ss(lgRecord); + std::vector lgNames; + while (std::getline(ss, lgRecord, ',')) { + lgNames.push_back(lgRecord); + } + // format the tooltip + std::stringstream TooltipText; + TooltipText << lgNames.at(0).substr(1) << " defines these line thicknesses:\n" + << "thin: " << lgNames.at(1) << "\n" + << "graphic: " << lgNames.at(2) << "\n" + << "thick: " << lgNames.at(3); + ui->pcbLineGroup->setToolTip(QString::fromStdString(TooltipText.str())); +} + #include diff --git a/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotationImp.h b/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotationImp.h index b0c2c71eba..4704df7d18 100644 --- a/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotationImp.h +++ b/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotationImp.h @@ -39,6 +39,9 @@ public: DlgPrefsTechDrawAnnotationImp( QWidget* parent = 0 ); ~DlgPrefsTechDrawAnnotationImp(); +public Q_SLOTS: + void onLineGroupChanged(int); + protected: void saveSettings(); void loadSettings(); diff --git a/src/Mod/TechDraw/Gui/TaskCenterLine.cpp b/src/Mod/TechDraw/Gui/TaskCenterLine.cpp index f749e92a34..2906108dc2 100644 --- a/src/Mod/TechDraw/Gui/TaskCenterLine.cpp +++ b/src/Mod/TechDraw/Gui/TaskCenterLine.cpp @@ -431,8 +431,8 @@ void TaskCenterLine::enableTaskButtons(bool b) double TaskCenterLine::getCenterWidth() { - std::string lgName = Preferences::lineGroup(); - auto lg = TechDraw::LineGroup::lineGroupFactory(lgName); + int lgNumber = Preferences::lineGroup(); + auto lg = TechDraw::LineGroup::lineGroupFactory(lgNumber); double width = lg->getWeight("Graphic"); delete lg; diff --git a/src/Mod/TechDraw/Gui/TaskLeaderLine.cpp b/src/Mod/TechDraw/Gui/TaskLeaderLine.cpp index 9cc2ea3812..b44943ab08 100644 --- a/src/Mod/TechDraw/Gui/TaskLeaderLine.cpp +++ b/src/Mod/TechDraw/Gui/TaskLeaderLine.cpp @@ -789,8 +789,8 @@ int TaskLeaderLine::getPrefArrowStyle() double TaskLeaderLine::prefWeight() const { - std::string lgName = Preferences::lineGroup(); - auto lg = TechDraw::LineGroup::lineGroupFactory(lgName); + int lgNumber = Preferences::lineGroup(); + auto lg = TechDraw::LineGroup::lineGroupFactory(lgNumber); double weight = lg->getWeight("Thin"); delete lg; //Coverity CID 174670 return weight; diff --git a/src/Mod/TechDraw/Gui/TaskRichAnno.cpp b/src/Mod/TechDraw/Gui/TaskRichAnno.cpp index c679623fad..313a8e71fb 100644 --- a/src/Mod/TechDraw/Gui/TaskRichAnno.cpp +++ b/src/Mod/TechDraw/Gui/TaskRichAnno.cpp @@ -333,8 +333,8 @@ void TaskRichAnno::onEditorExit(void) double TaskRichAnno::prefWeight() const { - std::string lgName = Preferences::lineGroup(); - auto lg = TechDraw::LineGroup::lineGroupFactory(lgName); + int lgNumber = Preferences::lineGroup(); + auto lg = TechDraw::LineGroup::lineGroupFactory(lgNumber); double weight = lg->getWeight("Graphic"); delete lg; //Coverity CID 174670 return weight; diff --git a/src/Mod/TechDraw/Gui/ViewProviderBalloon.cpp b/src/Mod/TechDraw/Gui/ViewProviderBalloon.cpp index e7ad512ce5..f88dbb6f09 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderBalloon.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderBalloon.cpp @@ -70,13 +70,13 @@ ViewProviderBalloon::ViewProviderBalloon() ADD_PROPERTY_TYPE(Font,(Preferences::labelFont().c_str()),group,App::Prop_None, "The name of the font to use"); ADD_PROPERTY_TYPE(Fontsize,(Preferences::dimFontSizeMM()), group,(App::PropertyType)(App::Prop_None),"Balloon text size in units"); - std::string lgName = Preferences::lineGroup(); - auto lg = TechDraw::LineGroup::lineGroupFactory(lgName); + int lgNumber = Preferences::lineGroup(); + auto lg = TechDraw::LineGroup::lineGroupFactory(lgNumber); double weight = lg->getWeight("Thin"); delete lg; //Coverity CID 174670 ADD_PROPERTY_TYPE(LineWidth,(weight),group,(App::PropertyType)(App::Prop_None),"Leader line width"); - ADD_PROPERTY_TYPE(Color,(PreferencesGui::dimColor()), + ADD_PROPERTY_TYPE(Color,(PreferencesGui::dimColor()), group,App::Prop_None,"Color of the balloon"); } diff --git a/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp b/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp index ed429f6802..adc0940ae2 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp @@ -167,12 +167,12 @@ TechDraw::DrawViewDimension* ViewProviderDimension::getViewObject() const } App::Color ViewProviderDimension::prefColor() const -{ +{ return PreferencesGui::dimColor(); } std::string ViewProviderDimension::prefFont() const -{ +{ return Preferences::labelFont(); } @@ -183,8 +183,8 @@ double ViewProviderDimension::prefFontSize() const double ViewProviderDimension::prefWeight() const { - std::string lgName = Preferences::lineGroup(); - auto lg = TechDraw::LineGroup::lineGroupFactory(lgName); + int lgNumber = Preferences::lineGroup(); + auto lg = TechDraw::LineGroup::lineGroupFactory(lgNumber); double weight = lg->getWeight("Thin"); delete lg; //Coverity CID 174670 return weight; diff --git a/src/Mod/TechDraw/Gui/ViewProviderGeomHatch.cpp b/src/Mod/TechDraw/Gui/ViewProviderGeomHatch.cpp index 72ee6209a9..7f8adc1165 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderGeomHatch.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderGeomHatch.cpp @@ -186,8 +186,8 @@ void ViewProviderGeomHatch::updateGraphic(void) void ViewProviderGeomHatch::getParameters(void) { - std::string lgName = Preferences::lineGroup(); - auto lg = TechDraw::LineGroup::lineGroupFactory(lgName); + int lgNumber = Preferences::lineGroup(); + auto lg = TechDraw::LineGroup::lineGroupFactory(lgNumber); double weight = lg->getWeight("Graphic"); delete lg; //Coverity CID 174667 WeightPattern.setValue(weight); diff --git a/src/Mod/TechDraw/Gui/ViewProviderLeader.cpp b/src/Mod/TechDraw/Gui/ViewProviderLeader.cpp index 3e4755eb84..434e89a189 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderLeader.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderLeader.cpp @@ -200,8 +200,8 @@ TechDraw::DrawLeaderLine* ViewProviderLeader::getFeature() const double ViewProviderLeader::getDefLineWeight(void) { double result = 0.0; - std::string lgName = Preferences::lineGroup(); - auto lg = TechDraw::LineGroup::lineGroupFactory(lgName); + int lgNumber = Preferences::lineGroup(); + auto lg = TechDraw::LineGroup::lineGroupFactory(lgNumber); result = lg->getWeight("Thin"); delete lg; //Coverity CID 174670 return result; diff --git a/src/Mod/TechDraw/Gui/ViewProviderRichAnno.cpp b/src/Mod/TechDraw/Gui/ViewProviderRichAnno.cpp index a81a2711ad..63e4ea828d 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderRichAnno.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderRichAnno.cpp @@ -189,8 +189,8 @@ double ViewProviderRichAnno::getDefFontSize() double ViewProviderRichAnno::getDefLineWeight(void) { double result = 0.0; - std::string lgName = Preferences::lineGroup(); - auto lg = TechDraw::LineGroup::lineGroupFactory(lgName); + int lgNumber = Preferences::lineGroup(); + auto lg = TechDraw::LineGroup::lineGroupFactory(lgNumber); result = lg->getWeight("Graphics"); delete lg; return result; diff --git a/src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp b/src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp index b583a5b7fc..052f891d53 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp @@ -88,8 +88,8 @@ ViewProviderViewPart::ViewProviderViewPart() static const char *hgroup = "Highlight"; //default line weights - std::string lgName = Preferences::lineGroup(); - auto lg = TechDraw::LineGroup::lineGroupFactory(lgName); + int lgNumber = Preferences::lineGroup(); + auto lg = TechDraw::LineGroup::lineGroupFactory(lgNumber); double weight = lg->getWeight("Thick"); ADD_PROPERTY_TYPE(LineWidth,(weight),group,App::Prop_None,"The thickness of visible lines (line groups xx.2");