[Base]identify schemas which use multiple units

- allow querying a schema to determine if it uses multiple
  units for length (ex ft/in) or angles (ex DMS).
This commit is contained in:
wandererfan
2022-08-30 20:21:46 -04:00
committed by WandererFan
parent ea8cf94991
commit 16ff6dfbbb
4 changed files with 31 additions and 1 deletions

View File

@@ -151,6 +151,18 @@ QString UnitsApi::toNumber(double d, const QuantityFormat& f)
return number;
}
//return true if the current user schema uses multiple units for length (ex. Ft/In)
bool UnitsApi::isMultiUnitLength()
{
return UserPrefSystem->isMultiUnitLength();
}
//return true if the current user schema uses multiple units for angles (ex. DMS)
bool UnitsApi::isMultiUnitAngle()
{
return UserPrefSystem->isMultiUnitAngle();
}
// === static translation methods ==========================================
QString UnitsApi::schemaTranslate(const Base::Quantity& quant, double &factor, QString &unitString)

View File

@@ -92,6 +92,12 @@ public:
//double Result;
//return true if the current user schema uses multiple units for length (ex. Ft/In)
static bool isMultiUnitLength();
//return true if the current user schema uses multiple units for angles (ex. DMS)
static bool isMultiUnitAngle();
// Python interface
static PyMethodDef Methods[];
@@ -99,7 +105,6 @@ public:
static UnitsSchemaPtr createSchema(UnitSystem s);
protected:
// not used at the moment
static UnitsSchemaPtr UserPrefSystem;
static UnitSystem currentSystem;
/// number of decimals for floats

View File

@@ -65,6 +65,12 @@ public:
virtual QString schemaTranslate(const Base::Quantity& quant, double &factor, QString &unitString)=0;
QString toLocale(const Base::Quantity& quant, double factor, const QString& unitString) const;
//return true if this schema uses multiple units for length (ex. Ft/In)
virtual bool isMultiUnitLength() {return false;}
//return true if this schema uses multiple units for angles (ex. DMS)
virtual bool isMultiUnitAngle() {return false;}
};

View File

@@ -65,6 +65,10 @@ public:
//virtual void setSchemaUnits(void);
//virtual void resetSchemaUnits(void);
QString schemaTranslate(const Base::Quantity& quant, double &factor, QString &unitString) override;
//return true if this schema uses multiple units for length (ex. Ft/In)
bool isMultiUnitLength() override {return true;}
};
/** The schema class for Civil Engineering in the imperial unit system
@@ -77,6 +81,9 @@ public:
//virtual void setSchemaUnits(void);
//virtual void resetSchemaUnits(void);
QString schemaTranslate(const Base::Quantity& quant, double &factor, QString &unitString) override;
//return true if this schema uses multiple units for angles (ex. DMS)
bool isMultiUnitAngle() override {return true;}
};