diff --git a/src/App/Application.cpp b/src/App/Application.cpp index 35957b7e8a..a5dd147c00 100644 --- a/src/App/Application.cpp +++ b/src/App/Application.cpp @@ -2782,8 +2782,7 @@ void Application::initApplication() ("User parameter:BaseApp/Preferences/Units"); Base::UnitsApi::setSchema(hGrp->GetInt("UserSchema", Base::UnitsApi::getDefSchemaNum())); Base::UnitsApi::setDecimals(hGrp->GetInt("Decimals", Base::UnitsApi::getDecimals())); - Base::QuantityFormat::setDefaultDenominator( - hGrp->GetInt("FracInch", Base::QuantityFormat::getDefaultDenominator())); + Base::UnitsApi::setDenominator(hGrp->GetInt("FracInch", Base::UnitsApi::getDenominator())); #if defined (_DEBUG) Base::Console().log("Application is built with debug information\n"); diff --git a/src/Base/Quantity.cpp b/src/Base/Quantity.cpp index 499e4247df..478a2f7f0a 100644 --- a/src/Base/Quantity.cpp +++ b/src/Base/Quantity.cpp @@ -57,23 +57,18 @@ using Base::Quantity; using Base::QuantityFormat; using Base::UnitsSchema; -// ====== Static attributes ========================= -// NOLINTNEXTLINE -int QuantityFormat::defaultDenominator = 8; // for 1/8" - - QuantityFormat::QuantityFormat() : option(OmitGroupSeparator | RejectGroupSeparator) , format(Fixed) - , precision(static_cast(UnitsApi::getDecimals())) - , denominator(defaultDenominator) + , precision(UnitsApi::getDecimals()) + , denominator(UnitsApi::getDenominator()) {} QuantityFormat::QuantityFormat(QuantityFormat::NumberFormat format, int decimals) : option(OmitGroupSeparator | RejectGroupSeparator) , format(format) , precision(decimals < 0 ? UnitsApi::getDecimals() : decimals) - , denominator(defaultDenominator) + , denominator(UnitsApi::getDenominator()) {} // ---------------------------------------------------------------------------- diff --git a/src/Base/Quantity.h b/src/Base/Quantity.h index ec69975c65..01f16609bc 100644 --- a/src/Base/Quantity.h +++ b/src/Base/Quantity.h @@ -52,21 +52,6 @@ struct BaseExport QuantityFormat int precision; int denominator; - // Default denominator of minimum fractional inch. Only used in certain - // schemas. - // NOLINTNEXTLINE - static int defaultDenominator; // i.e 8 for 1/8" - - static inline int getDefaultDenominator() - { - return defaultDenominator; - } - - static inline void setDefaultDenominator(int denom) - { - defaultDenominator = denom; - } - inline int getDenominator() const { return denominator; diff --git a/src/Base/UnitsApi.cpp b/src/Base/UnitsApi.cpp index 65ea8f9448..a58790e8a2 100644 --- a/src/Base/UnitsApi.cpp +++ b/src/Base/UnitsApi.cpp @@ -67,9 +67,24 @@ std::string UnitsApi::getBasicLengthUnit() return schemas->currentSchema()->getBasicLengthUnit(); } -std::size_t UnitsApi::getFractDenominator() +void UnitsApi::setDecimals(const int prec) { - return schemas->defFractDenominator(); + decimals = prec; +} + +int UnitsApi::getDecimals() +{ + return decimals < 0 ? schemas->getDecimals() : decimals; +} + +void UnitsApi::setDenominator(int frac) +{ + denominator = frac; +} + +int UnitsApi::getDenominator() +{ + return denominator < 0 ? schemas->defFractDenominator() : denominator; } std::unique_ptr UnitsApi::createSchema(const std::size_t num) @@ -121,18 +136,3 @@ std::string UnitsApi::schemaTranslate(const Quantity& quant) std::string dummy2; return schemas->currentSchema()->translate(quant, dummy1, dummy2); } - -void UnitsApi::setDecimals(const std::size_t prec) -{ - decimals = prec; -} - -size_t UnitsApi::getDecimals() -{ - return decimals; -} - -size_t UnitsApi::getDefDecimals() -{ - return schemas->getDecimals(); -} diff --git a/src/Base/UnitsApi.h b/src/Base/UnitsApi.h index bcf515ddc8..309f1d2e71 100644 --- a/src/Base/UnitsApi.h +++ b/src/Base/UnitsApi.h @@ -52,9 +52,11 @@ public: static double toDouble(PyObject* args, const Base::Unit& u = Base::Unit()); - static void setDecimals(std::size_t); - static std::size_t getDecimals(); - static std::size_t getDefDecimals(); + static void setDecimals(int); + static int getDecimals(); + + static void setDenominator(int); + static int getDenominator(); static std::vector getDescriptions(); static std::vector getNames(); @@ -64,7 +66,6 @@ public: static bool isMultiUnitAngle(); static bool isMultiUnitLength(); static std::string getBasicLengthUnit(); - static std::size_t getFractDenominator(); static std::size_t getDefSchemaNum() { @@ -76,8 +77,8 @@ public: protected: static inline auto schemas = std::make_unique(UnitsSchemasData::unitSchemasDataPack); - static inline std::size_t decimals {2}; - static inline std::size_t denominator {2}; + static inline int decimals {-1}; + static inline int denominator {-1}; // the python API wrapper methods static PyObject* sParseQuantity(PyObject* self, PyObject* args); diff --git a/src/Gui/PreferencePages/DlgSettingsGeneral.cpp b/src/Gui/PreferencePages/DlgSettingsGeneral.cpp index c668f5f38b..28571c79af 100644 --- a/src/Gui/PreferencePages/DlgSettingsGeneral.cpp +++ b/src/Gui/PreferencePages/DlgSettingsGeneral.cpp @@ -200,7 +200,7 @@ void DlgSettingsGeneral::saveUnitSystemSettings() hGrpu->SetInt("FracInch", FracInch); // Set the actual format value - QuantityFormat::setDefaultDenominator(FracInch); + UnitsApi::setDenominator(FracInch); // Set and save the Unit System if (ui->checkBox_projectUnitSystemIgnore->isChecked()) { @@ -272,7 +272,7 @@ void DlgSettingsGeneral::loadSettings() ui->checkBox_projectUnitSystemIgnore->setChecked(hGrpu->GetBool("IgnoreProjectSchema", false)); // Get the current user setting for the minimum fractional inch - FracInch = hGrpu->GetInt("FracInch", QuantityFormat::getDefaultDenominator()); + FracInch = hGrpu->GetInt("FracInch", UnitsApi::getDenominator()); // Convert fractional inch to the corresponding combobox index using this // handy little equation.