Skip to content

Commit

Permalink
[Units]Allow querying schema for unit of measure
Browse files Browse the repository at this point in the history
  • Loading branch information
WandererFan authored and wwmayer committed Nov 19, 2022
1 parent c9829a3 commit 7745a5a
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 0 deletions.
5 changes: 5 additions & 0 deletions src/Base/UnitsApi.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
3 changes: 3 additions & 0 deletions src/Base/UnitsApi.h
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,9 @@ class BaseExport UnitsApi
//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[];

Expand Down
3 changes: 3 additions & 0 deletions src/Base/UnitsSchema.h
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,9 @@ class UnitsSchema

//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"); }
};


Expand Down
2 changes: 2 additions & 0 deletions src/Base/UnitsSchemaCentimeters.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 4 additions & 0 deletions src/Base/UnitsSchemaImperial1.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ class UnitsSchemaImperial1: public UnitsSchema
//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
Expand All @@ -53,6 +54,7 @@ class UnitsSchemaImperialDecimal: public UnitsSchema
//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
Expand All @@ -65,6 +67,7 @@ class UnitsSchemaImperialBuilding: public UnitsSchema
//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;}
Expand All @@ -81,6 +84,7 @@ class UnitsSchemaImperialCivil: public UnitsSchema
//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;}
Expand Down

0 comments on commit 7745a5a

Please sign in to comment.