Base: refactor unit formatting defaults
Defaults for both precision (number of digits after decimal point) and denominator (number of fractions) are defined on various places making difficult to find which default is used for various tasks. Store these values at one central place: UnitsApi. Unless overriden by user, default values are defined by unitSchemasDataPack.
This commit is contained in:
@@ -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");
|
||||
|
||||
@@ -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<int>(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())
|
||||
{}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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<UnitsSchema> 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();
|
||||
}
|
||||
|
||||
@@ -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<std::string> getDescriptions();
|
||||
static std::vector<std::string> 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<UnitsSchemas>(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);
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user