[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:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;}
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -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;}
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user