diff --git a/src/Base/UnitsApi.cpp b/src/Base/UnitsApi.cpp index b574adad6d..3db89f6949 100644 --- a/src/Base/UnitsApi.cpp +++ b/src/Base/UnitsApi.cpp @@ -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) diff --git a/src/Base/UnitsApi.h b/src/Base/UnitsApi.h index 8a76117007..45099a4f64 100644 --- a/src/Base/UnitsApi.h +++ b/src/Base/UnitsApi.h @@ -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 diff --git a/src/Base/UnitsSchema.h b/src/Base/UnitsSchema.h index 112e82bb87..2aa3b28982 100644 --- a/src/Base/UnitsSchema.h +++ b/src/Base/UnitsSchema.h @@ -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;} }; diff --git a/src/Base/UnitsSchemaImperial1.h b/src/Base/UnitsSchemaImperial1.h index 35758f9360..9d9326c821 100644 --- a/src/Base/UnitsSchemaImperial1.h +++ b/src/Base/UnitsSchemaImperial1.h @@ -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;} };