[Units]Allow querying schema for unit of measure

This commit is contained in:
wandererfan
2022-11-17 18:08:13 -05:00
committed by wwmayer
parent c9829a312f
commit 7745a5aca0
5 changed files with 17 additions and 0 deletions

View File

@@ -163,6 +163,11 @@ bool UnitsApi::isMultiUnitAngle()
return UserPrefSystem->isMultiUnitAngle();
}
std::string UnitsApi::getBasicLengthUnit()
{
return UserPrefSystem->getBasicLengthUnit();
}
// === static translation methods ==========================================
QString UnitsApi::schemaTranslate(const Base::Quantity& quant, double &factor, QString &unitString)

View File

@@ -98,6 +98,9 @@ public:
//return true if the current user schema uses multiple units for angles (ex. DMS)
static bool isMultiUnitAngle();
//return the basic unit of measure for length in the current user schema.
static std::string getBasicLengthUnit();
// Python interface
static PyMethodDef Methods[];

View File

@@ -71,6 +71,9 @@ public:
//return true if this schema uses multiple units for angles (ex. DMS)
virtual bool isMultiUnitAngle() const {return false;}
//return the basic length unit for this schema
virtual std::string getBasicLengthUnit() const { return std::string("mm"); }
};

View File

@@ -37,6 +37,8 @@ class UnitsSchemaCentimeters: public UnitsSchema
{
public:
QString schemaTranslate(const Base::Quantity& quant, double &factor, QString &unitString) override;
std::string getBasicLengthUnit() const override { return std::string("cm"); }
};
} // namespace Base

View File

@@ -41,6 +41,7 @@ public:
//virtual void setSchemaUnits(void);
//virtual void resetSchemaUnits(void);
QString schemaTranslate(const Base::Quantity& quant, double &factor, QString &unitString) override;
std::string getBasicLengthUnit() const override { return std::string("in"); }
};
/** The schema class for the imperial unit system
@@ -53,6 +54,7 @@ public:
//virtual void setSchemaUnits(void);
//virtual void resetSchemaUnits(void);
QString schemaTranslate(const Base::Quantity& quant, double &factor, QString &unitString) override;
std::string getBasicLengthUnit() const override { return std::string("in"); }
};
/** The schema class for the imperial unit system
@@ -65,6 +67,7 @@ public:
//virtual void setSchemaUnits(void);
//virtual void resetSchemaUnits(void);
QString schemaTranslate(const Base::Quantity& quant, double &factor, QString &unitString) override;
std::string getBasicLengthUnit() const override { return std::string("ft"); }
//return true if this schema uses multiple units for length (ex. Ft/In)
bool isMultiUnitLength() const override {return true;}
@@ -81,6 +84,7 @@ public:
//virtual void setSchemaUnits(void);
//virtual void resetSchemaUnits(void);
QString schemaTranslate(const Base::Quantity& quant, double &factor, QString &unitString) override;
std::string getBasicLengthUnit() const override { return std::string("ft"); }
//return true if this schema uses multiple units for angles (ex. DMS)
bool isMultiUnitAngle() const override {return true;}