From 74085b609d539f2bc134f6ec6c78d697dac8ee11 Mon Sep 17 00:00:00 2001 From: Wanderer Fan Date: Fri, 3 Jun 2022 12:19:03 -0400 Subject: [PATCH] [TD]fix preference file handling --- src/Mod/TechDraw/App/DrawGeomHatch.cpp | 15 +----- src/Mod/TechDraw/App/DrawHatch.cpp | 15 +----- src/Mod/TechDraw/App/Preferences.cpp | 46 +++++++++++++++++++ src/Mod/TechDraw/App/Preferences.h | 3 ++ .../Gui/DlgPrefsTechDrawGeneralImp.cpp | 12 ++--- src/Mod/TechDraw/Gui/PreferencesGui.cpp | 3 ++ 6 files changed, 61 insertions(+), 33 deletions(-) diff --git a/src/Mod/TechDraw/App/DrawGeomHatch.cpp b/src/Mod/TechDraw/App/DrawGeomHatch.cpp index fd3ed9a20e..6bea4b036d 100644 --- a/src/Mod/TechDraw/App/DrawGeomHatch.cpp +++ b/src/Mod/TechDraw/App/DrawGeomHatch.cpp @@ -70,6 +70,7 @@ #include "HatchLine.h" #include "DrawUtil.h" +#include "Preferences.h" #include "Geometry.h" #include "DrawPage.h" #include "DrawViewPart.h" @@ -615,19 +616,7 @@ void DrawGeomHatch::unsetupObject(void) std::string DrawGeomHatch::prefGeomHatchFile(void) { - Base::Reference hGrp = App::GetApplication().GetUserParameter() - .GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/TechDraw/PAT"); - - std::string defaultDir = App::Application::getResourceDir() + "Mod/TechDraw/PAT/"; - std::string defaultFileName = defaultDir + "FCPAT.pat"; - std::string prefHatchFile = hGrp->GetASCII("FilePattern", defaultFileName.c_str()); - std::string result = prefHatchFile; - Base::FileInfo fi(result); - if (!fi.isReadable()) { - result = defaultFileName; - Base::Console().Warning("Pat Hatch File: %s is not readable\n", prefHatchFile.c_str()); - } - return result; + return Preferences::patFile(); } std::string DrawGeomHatch::prefGeomHatchName() diff --git a/src/Mod/TechDraw/App/DrawHatch.cpp b/src/Mod/TechDraw/App/DrawHatch.cpp index 5a077359dc..354ed64316 100644 --- a/src/Mod/TechDraw/App/DrawHatch.cpp +++ b/src/Mod/TechDraw/App/DrawHatch.cpp @@ -45,6 +45,7 @@ #include "DrawViewPart.h" #include "DrawUtil.h" +#include "Preferences.h" #include "DrawHatch.h" #include // generated from DrawHatchPy.xml @@ -261,19 +262,7 @@ void DrawHatch::unsetupObject(void) //standard preference getters std::string DrawHatch::prefSvgHatch(void) { - Base::Reference hGrp = App::GetApplication().GetUserParameter() - .GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/TechDraw/Files"); - - std::string defaultDir = App::Application::getResourceDir() + "Mod/TechDraw/Patterns/"; - std::string defaultFileName = defaultDir + "simple.svg"; - std::string prefHatchFile = hGrp->GetASCII("FileHatch",defaultFileName.c_str()); - std::string result = prefHatchFile; - Base::FileInfo fi(result); - if (!fi.isReadable()) { - result = defaultFileName; - Base::Console().Warning("Svg Hatch File: %s is not readable\n", prefHatchFile.c_str()); - } - return result; + return Preferences::svgFile(); } App::Color DrawHatch::prefSvgHatchColor(void) diff --git a/src/Mod/TechDraw/App/Preferences.cpp b/src/Mod/TechDraw/App/Preferences.cpp index 1b479ba958..e917bd06c3 100644 --- a/src/Mod/TechDraw/App/Preferences.cpp +++ b/src/Mod/TechDraw/App/Preferences.cpp @@ -193,6 +193,9 @@ QString Preferences::defaultTemplate() std::string defaultDir = App::Application::getResourceDir() + "Mod/TechDraw/Templates/"; std::string defaultFileName = defaultDir + "A4_LandscapeTD.svg"; std::string prefFileName = hGrp->GetASCII("TemplateFile",defaultFileName.c_str()); + if (prefFileName.empty()) { + prefFileName = defaultFileName; + } QString templateFileName = QString::fromStdString(prefFileName); Base::FileInfo fi(prefFileName); if (!fi.isReadable()) { @@ -209,6 +212,9 @@ QString Preferences::defaultTemplateDir() std::string defaultDir = App::Application::getResourceDir() + "Mod/TechDraw/Templates"; std::string prefTemplateDir = hGrp->GetASCII("TemplateDir", defaultDir.c_str()); + if (prefTemplateDir.empty()) { + prefTemplateDir = defaultDir; + } QString templateDir = QString::fromStdString(prefTemplateDir); Base::FileInfo fi(prefTemplateDir); if (!fi.isReadable()) { @@ -226,6 +232,9 @@ std::string Preferences::lineGroupFile() std::string defaultDir = App::Application::getResourceDir() + "Mod/TechDraw/LineGroup/"; std::string defaultFileName = defaultDir + "LineGroup.csv"; std::string lgFileName = hGrp->GetASCII("LineGroupFile",defaultFileName.c_str()); + if (lgFileName.empty()) { + lgFileName = defaultFileName; + } Base::FileInfo fi(lgFileName); if (!fi.isReadable()) { Base::Console().Warning("Line Group File: %s is not readable\n", lgFileName.c_str()); @@ -256,3 +265,40 @@ int Preferences::mattingStyle() int style = hGrp->GetInt("MattingStyle", 0); return style; } + +std::string Preferences::svgFile() +{ + Base::Reference hGrp = App::GetApplication().GetUserParameter() + .GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/TechDraw/Files"); + + std::string defaultDir = App::Application::getResourceDir() + "Mod/TechDraw/Patterns/"; + std::string defaultFileName = defaultDir + "simple.svg"; + std::string prefHatchFile = hGrp->GetASCII("FileHatch",defaultFileName.c_str()); + if (prefHatchFile.empty()) { + prefHatchFile = defaultFileName; + } + std::string result = prefHatchFile; + Base::FileInfo fi(result); + if (!fi.isReadable()) { + result = defaultFileName; + Base::Console().Warning("Svg Hatch File: %s is not readable\n", prefHatchFile.c_str()); + } + return result; +} + +std::string Preferences::patFile() +{ + Base::Reference hGrp = App::GetApplication().GetUserParameter() + .GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/TechDraw/PAT"); + + std::string defaultDir = App::Application::getResourceDir() + "Mod/TechDraw/PAT/"; + std::string defaultFileName = defaultDir + "FCPAT.pat"; + std::string prefHatchFile = hGrp->GetASCII("FilePattern", defaultFileName.c_str()); + std::string result = prefHatchFile; + Base::FileInfo fi(result); + if (!fi.isReadable()) { + result = defaultFileName; + Base::Console().Warning("Pat Hatch File: %s is not readable\n", prefHatchFile.c_str()); + } + return result; +} diff --git a/src/Mod/TechDraw/App/Preferences.h b/src/Mod/TechDraw/App/Preferences.h index 88d83df08b..eb2489ec5d 100644 --- a/src/Mod/TechDraw/App/Preferences.h +++ b/src/Mod/TechDraw/App/Preferences.h @@ -71,6 +71,9 @@ static int altDecimals(); static int mattingStyle(); +static std::string svgFile(); +static std::string patFile(); + }; } //end namespace TechDraw diff --git a/src/Mod/TechDraw/Gui/DlgPrefsTechDrawGeneralImp.cpp b/src/Mod/TechDraw/Gui/DlgPrefsTechDrawGeneralImp.cpp index 4d3f5ba4ed..8888fd2355 100644 --- a/src/Mod/TechDraw/Gui/DlgPrefsTechDrawGeneralImp.cpp +++ b/src/Mod/TechDraw/Gui/DlgPrefsTechDrawGeneralImp.cpp @@ -25,6 +25,11 @@ #include "PreCompiled.h" +#include +#include +#include +#include + #include #include @@ -97,13 +102,6 @@ void DlgPrefsTechDrawGeneralImp::loadSettings() ui->cbProjAngle->onRestore(); ui->cbHiddenLineStyle->onRestore(); - ui->pfc_DefTemp->setFileName(Preferences::defaultTemplate()); - ui->pfc_DefDir->setFileName(Preferences::defaultTemplateDir()); - ui->pfc_HatchFile->setFileName(QString::fromStdString(DrawHatch::prefSvgHatch())); - ui->pfc_LineGroup->setFileName(QString::fromUtf8(Preferences::lineGroupFile().c_str())); - ui->pfc_Welding->setFileName(PreferencesGui::weldingDirectory()); - ui->pfc_FilePattern->setFileName(QString::fromStdString(DrawGeomHatch::prefGeomHatchFile())); - ui->pfc_DefTemp->onRestore(); ui->pfc_DefDir->onRestore(); ui->pfc_HatchFile->onRestore(); diff --git a/src/Mod/TechDraw/Gui/PreferencesGui.cpp b/src/Mod/TechDraw/Gui/PreferencesGui.cpp index 684e9bae59..dfcbe76d0e 100644 --- a/src/Mod/TechDraw/Gui/PreferencesGui.cpp +++ b/src/Mod/TechDraw/Gui/PreferencesGui.cpp @@ -190,6 +190,9 @@ QString PreferencesGui::weldingDirectory() GetGroup("Preferences")->GetGroup("Mod/TechDraw/Files"); std::string symbolDir = hGrp->GetASCII("WeldingDir", defaultDir.c_str()); + if (symbolDir.empty()) { + symbolDir = defaultDir; + } QString qSymbolDir = QString::fromUtf8(symbolDir.c_str()); Base::FileInfo fi(symbolDir); if (!fi.isReadable()) {