new userString methode
This commit is contained in:
parent
3a3afa0783
commit
87c4741fac
|
@ -39,8 +39,10 @@
|
||||||
# pragma warning(disable : 4335) // disable MAC file format warning on VC
|
# pragma warning(disable : 4335) // disable MAC file format warning on VC
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
using namespace Base;
|
using namespace Base;
|
||||||
|
|
||||||
|
double Quantity::defaultFactor = 1.0;
|
||||||
|
|
||||||
|
|
||||||
Quantity::Quantity()
|
Quantity::Quantity()
|
||||||
{
|
{
|
||||||
|
@ -117,18 +119,23 @@ Quantity& Quantity::operator = (const Quantity &New)
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
double Quantity::getUserPrefered(QString &unitString)const
|
QString Quantity::getUserString(double &factor,QString &unitString)
|
||||||
{
|
{
|
||||||
return Base::UnitsApi::schemaPrefUnit(_Unit,unitString).getValue() * _Value;
|
return Base::UnitsApi::schemaTranslate(*this,factor,unitString);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string Quantity::getUserString(void)const
|
//double Quantity::getUserPrefered(QString &unitString)const
|
||||||
{
|
//{
|
||||||
std::stringstream sstream;
|
// return Base::UnitsApi::schemaPrefUnit(_Unit,unitString).getValue() * _Value;
|
||||||
sstream << _Value << _Unit.getString();
|
//}
|
||||||
//TODO: implementing
|
//
|
||||||
return sstream.str();
|
//std::string Quantity::getUserString(void)const
|
||||||
}
|
//{
|
||||||
|
// std::stringstream sstream;
|
||||||
|
// sstream << _Value << _Unit.getString();
|
||||||
|
// //TODO: implementing
|
||||||
|
// return sstream.str();
|
||||||
|
//}
|
||||||
|
|
||||||
/// true if it has a number without a unit
|
/// true if it has a number without a unit
|
||||||
bool Quantity::isDimensionless(void)const
|
bool Quantity::isDimensionless(void)const
|
||||||
|
|
|
@ -62,9 +62,10 @@ public:
|
||||||
//@}
|
//@}
|
||||||
|
|
||||||
/// transfer to user prefered unit/potence
|
/// transfer to user prefered unit/potence
|
||||||
double getUserPrefered() const { QString dummy; return getUserPrefered(dummy); }
|
QString getUserString(double &factor=defaultFactor,QString &unitString=QString());
|
||||||
double getUserPrefered(QString &unitString) const;
|
//double getUserPrefered() const { QString dummy; return getUserPrefered(dummy); }
|
||||||
std::string getUserString(void)const;
|
//double getUserPrefered(QString &unitString) const;
|
||||||
|
//std::string getUserString(void)const;
|
||||||
|
|
||||||
static Quantity parse(const char* buffer);
|
static Quantity parse(const char* buffer);
|
||||||
|
|
||||||
|
@ -167,6 +168,7 @@ public:
|
||||||
|
|
||||||
|
|
||||||
//@}
|
//@}
|
||||||
|
static double defaultFactor;
|
||||||
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
|
@ -57,6 +57,7 @@ using namespace Base;
|
||||||
// return QString::fromLatin1(QuantityNames[t]);
|
// return QString::fromLatin1(QuantityNames[t]);
|
||||||
//}
|
//}
|
||||||
// === static attributes ================================================
|
// === static attributes ================================================
|
||||||
|
double UnitsApi::defaultFactor = 1.0;
|
||||||
|
|
||||||
UnitsSchema *UnitsApi::UserPrefSystem = new UnitsSchemaInternal();
|
UnitsSchema *UnitsApi::UserPrefSystem = new UnitsSchemaInternal();
|
||||||
|
|
||||||
|
@ -103,15 +104,11 @@ void UnitsApi::setSchema(UnitSystem s)
|
||||||
|
|
||||||
// === static translation methodes ==========================================
|
// === static translation methodes ==========================================
|
||||||
|
|
||||||
QString UnitsApi::schemaTranslate(Base::Quantity quant)
|
QString UnitsApi::schemaTranslate(Base::Quantity quant,double &factor,QString &unitString)
|
||||||
{
|
{
|
||||||
return UserPrefSystem->schemaTranslate(quant);
|
return UserPrefSystem->schemaTranslate(quant,factor,unitString);
|
||||||
}
|
}
|
||||||
|
|
||||||
Base::Quantity UnitsApi::schemaPrefUnit(const Base::Unit &unit,QString &outUnitString)
|
|
||||||
{
|
|
||||||
return UserPrefSystem->schemaPrefUnit(unit,outUnitString);
|
|
||||||
}
|
|
||||||
|
|
||||||
//QString UnitsApi::toStrWithUserPrefs(QuantityType t,double Value)
|
//QString UnitsApi::toStrWithUserPrefs(QuantityType t,double Value)
|
||||||
//{
|
//{
|
||||||
|
|
|
@ -62,13 +62,7 @@ public:
|
||||||
*/
|
*/
|
||||||
static void setSchema(UnitSystem s);
|
static void setSchema(UnitSystem s);
|
||||||
|
|
||||||
|
static QString schemaTranslate(Base::Quantity quant,double &factor=defaultFactor,QString &unitString=QString());
|
||||||
/// raw parser interface to calculat units (only from and to internal)
|
|
||||||
//tatic Quantity translateUnit(const char*);
|
|
||||||
//static Quantity translateUnit(const QString &);
|
|
||||||
|
|
||||||
static QString schemaTranslate(Base::Quantity quant);
|
|
||||||
static Base::Quantity schemaPrefUnit(const Base::Unit &unit,QString &outUnitString);
|
|
||||||
/// generate a value for a quantity with default user prefered system
|
/// generate a value for a quantity with default user prefered system
|
||||||
static double toDbl(PyObject *ArgObj,const Base::Unit &u=Base::Unit());
|
static double toDbl(PyObject *ArgObj,const Base::Unit &u=Base::Unit());
|
||||||
/// generate a value for a quantity with default user prefered system
|
/// generate a value for a quantity with default user prefered system
|
||||||
|
@ -87,6 +81,8 @@ public:
|
||||||
// Python interface
|
// Python interface
|
||||||
static PyMethodDef Methods[];
|
static PyMethodDef Methods[];
|
||||||
|
|
||||||
|
static double defaultFactor;
|
||||||
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// not used at the moment
|
// not used at the moment
|
||||||
|
|
|
@ -50,9 +50,7 @@ class UnitsSchema
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/// this methode translate the quantity in a string as the user may expect it
|
/// this methode translate the quantity in a string as the user may expect it
|
||||||
virtual QString schemaTranslate(Base::Quantity quant)=0;
|
virtual QString schemaTranslate(Base::Quantity quant,double &factor,QString &unitString)=0;
|
||||||
// returns the prefered unit as string and the quantity to translate
|
|
||||||
virtual Base::Quantity schemaPrefUnit(const Base::Unit &unit,QString &outUnitString)=0;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -34,25 +34,25 @@
|
||||||
using namespace Base;
|
using namespace Base;
|
||||||
|
|
||||||
|
|
||||||
QString UnitsSchemaImperial1::schemaTranslate(Base::Quantity quant)
|
QString UnitsSchemaImperial1::schemaTranslate(Base::Quantity quant,double &factor,QString &unitString)
|
||||||
{
|
{
|
||||||
double UnitValue = quant.getValue();
|
double UnitValue = quant.getValue();
|
||||||
Unit unit = quant.getUnit();
|
Unit unit = quant.getUnit();
|
||||||
|
|
||||||
return QString::fromAscii("%1 %2").arg(UnitValue).arg(QString::fromAscii(unit.getString().c_str()));
|
return QString::fromAscii("%1 %2").arg(UnitValue).arg(QString::fromAscii(unit.getString().c_str()));
|
||||||
}
|
}
|
||||||
|
//
|
||||||
Base::Quantity UnitsSchemaImperial1::schemaPrefUnit(const Base::Unit &unit,QString &outUnitString)
|
//Base::Quantity UnitsSchemaImperial1::schemaPrefUnit(const Base::Unit &unit,QString &outUnitString)
|
||||||
{
|
//{
|
||||||
if(unit == Unit::Length){
|
// if(unit == Unit::Length){
|
||||||
outUnitString = QString::fromAscii("\"");
|
// outUnitString = QString::fromAscii("\"");
|
||||||
return Base::Quantity(1/25.40,Unit::Length);
|
// return Base::Quantity(1/25.40,Unit::Length);
|
||||||
}else if(unit == Unit::Mass){
|
// }else if(unit == Unit::Mass){
|
||||||
outUnitString = QString::fromAscii("lb");
|
// outUnitString = QString::fromAscii("lb");
|
||||||
return Base::Quantity(1/0.45359237,Unit::Length);
|
// return Base::Quantity(1/0.45359237,Unit::Length);
|
||||||
}else{
|
// }else{
|
||||||
outUnitString = QString::fromAscii(unit.getString().c_str());
|
// outUnitString = QString::fromAscii(unit.getString().c_str());
|
||||||
return Base::Quantity(1,unit);
|
// return Base::Quantity(1,unit);
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
}
|
//}
|
|
@ -39,8 +39,8 @@ namespace Base {
|
||||||
class UnitsSchemaImperial1: public UnitsSchema
|
class UnitsSchemaImperial1: public UnitsSchema
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual QString schemaTranslate(Base::Quantity quant);
|
virtual QString schemaTranslate(Base::Quantity quant,double &factor,QString &unitString);
|
||||||
Base::Quantity schemaPrefUnit(const Base::Unit &unit,QString &outUnitString);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -34,22 +34,22 @@
|
||||||
using namespace Base;
|
using namespace Base;
|
||||||
|
|
||||||
|
|
||||||
QString UnitsSchemaInternal::schemaTranslate(Base::Quantity quant)
|
QString UnitsSchemaInternal::schemaTranslate(Base::Quantity quant,double &factor,QString &unitString)
|
||||||
{
|
{
|
||||||
double UnitValue = quant.getValue();
|
double UnitValue = quant.getValue();
|
||||||
Unit unit = quant.getUnit();
|
Unit unit = quant.getUnit();
|
||||||
|
|
||||||
return QString::fromAscii("%1 %2").arg(UnitValue).arg(QString::fromAscii(unit.getString().c_str()));
|
return QString::fromAscii("%1 %2").arg(UnitValue).arg(QString::fromAscii(unit.getString().c_str()));
|
||||||
}
|
}
|
||||||
|
//
|
||||||
Base::Quantity UnitsSchemaInternal::schemaPrefUnit(const Base::Unit &unit,QString &outUnitString)
|
//Base::Quantity UnitsSchemaInternal::schemaPrefUnit(const Base::Unit &unit,QString &outUnitString)
|
||||||
{
|
//{
|
||||||
if(unit == Unit::Length){
|
// if(unit == Unit::Length){
|
||||||
outUnitString = QString::fromAscii("mm");
|
// outUnitString = QString::fromAscii("mm");
|
||||||
return Base::Quantity(1.0,Unit::Length);
|
// return Base::Quantity(1.0,Unit::Length);
|
||||||
}else{
|
// }else{
|
||||||
outUnitString = QString::fromAscii(unit.getString().c_str());
|
// outUnitString = QString::fromAscii(unit.getString().c_str());
|
||||||
return Base::Quantity(1,unit);
|
// return Base::Quantity(1,unit);
|
||||||
}
|
// }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,8 +40,7 @@ namespace Base {
|
||||||
class UnitsSchemaInternal: public UnitsSchema
|
class UnitsSchemaInternal: public UnitsSchema
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual QString schemaTranslate(Base::Quantity quant);
|
virtual QString schemaTranslate(Base::Quantity quant,double &factor,QString &unitString);
|
||||||
Base::Quantity schemaPrefUnit(const Base::Unit &unit,QString &outUnitString);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -34,22 +34,22 @@
|
||||||
using namespace Base;
|
using namespace Base;
|
||||||
|
|
||||||
|
|
||||||
QString UnitsSchemaMKS::schemaTranslate(Base::Quantity quant)
|
QString UnitsSchemaMKS::schemaTranslate(Base::Quantity quant,double &factor,QString &unitString)
|
||||||
{
|
{
|
||||||
double UnitValue = quant.getValue();
|
double UnitValue = quant.getValue();
|
||||||
Unit unit = quant.getUnit();
|
Unit unit = quant.getUnit();
|
||||||
|
|
||||||
return QString::fromAscii("%1 %2").arg(UnitValue).arg(QString::fromAscii(unit.getString().c_str()));
|
return QString::fromAscii("%1 %2").arg(UnitValue).arg(QString::fromAscii(unit.getString().c_str()));
|
||||||
}
|
}
|
||||||
|
//
|
||||||
Base::Quantity UnitsSchemaMKS::schemaPrefUnit(const Base::Unit &unit,QString &outUnitString)
|
//Base::Quantity UnitsSchemaMKS::schemaPrefUnit(const Base::Unit &unit,QString &outUnitString)
|
||||||
{
|
//{
|
||||||
if(unit == Unit::Length){
|
// if(unit == Unit::Length){
|
||||||
outUnitString = QString::fromAscii("m");
|
// outUnitString = QString::fromAscii("m");
|
||||||
return Base::Quantity(1/1000.0,Unit::Length);
|
// return Base::Quantity(1/1000.0,Unit::Length);
|
||||||
}else{
|
// }else{
|
||||||
outUnitString = QString::fromAscii(unit.getString().c_str());
|
// outUnitString = QString::fromAscii(unit.getString().c_str());
|
||||||
return Base::Quantity(1,unit);
|
// return Base::Quantity(1,unit);
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
}
|
//}
|
|
@ -38,8 +38,8 @@ namespace Base {
|
||||||
class UnitsSchemaMKS: public UnitsSchema
|
class UnitsSchemaMKS: public UnitsSchema
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual QString schemaTranslate(Base::Quantity quant);
|
virtual QString schemaTranslate(Base::Quantity quant,double &factor,QString &unitString);
|
||||||
Base::Quantity schemaPrefUnit(const Base::Unit &unit,QString &outUnitString);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -655,13 +655,10 @@ QVariant PropertyUnitItem::toString(const QVariant& Value) const
|
||||||
const std::vector<App::Property*>& prop = getPropertyData();
|
const std::vector<App::Property*>& prop = getPropertyData();
|
||||||
if (!prop.empty() && prop.front()->getTypeId().isDerivedFrom(App::PropertyQuantity::getClassTypeId())) {
|
if (!prop.empty() && prop.front()->getTypeId().isDerivedFrom(App::PropertyQuantity::getClassTypeId())) {
|
||||||
Base::Quantity value = static_cast<const App::PropertyQuantity*>(prop.front())->getQuantityValue();
|
Base::Quantity value = static_cast<const App::PropertyQuantity*>(prop.front())->getQuantityValue();
|
||||||
value.getUserPrefered(unit);
|
unit = value.getUserString();
|
||||||
unit.prepend(QLatin1String(" "));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QString data = QString::fromAscii("%1 %2").arg(val,0,'f',decimals()).arg(unit);
|
return QVariant(unit);
|
||||||
|
|
||||||
return QVariant(data);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariant PropertyUnitItem::value(const App::Property* prop) const
|
QVariant PropertyUnitItem::value(const App::Property* prop) const
|
||||||
|
@ -669,7 +666,7 @@ QVariant PropertyUnitItem::value(const App::Property* prop) const
|
||||||
assert(prop && prop->getTypeId().isDerivedFrom(App::PropertyQuantity::getClassTypeId()));
|
assert(prop && prop->getTypeId().isDerivedFrom(App::PropertyQuantity::getClassTypeId()));
|
||||||
Base::Quantity value = static_cast<const App::PropertyQuantity*>(prop)->getQuantityValue();
|
Base::Quantity value = static_cast<const App::PropertyQuantity*>(prop)->getQuantityValue();
|
||||||
QString unitString;
|
QString unitString;
|
||||||
return QVariant(value.getUserPrefered(unitString));
|
return QVariant(value.getValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
void PropertyUnitItem::setValue(const QVariant& value)
|
void PropertyUnitItem::setValue(const QVariant& value)
|
||||||
|
@ -684,12 +681,10 @@ void PropertyUnitItem::setValue(const QVariant& value)
|
||||||
return;
|
return;
|
||||||
else if (prop.front()->getTypeId().isDerivedFrom(App::PropertyQuantity::getClassTypeId())) {
|
else if (prop.front()->getTypeId().isDerivedFrom(App::PropertyQuantity::getClassTypeId())) {
|
||||||
Base::Quantity value = static_cast<const App::PropertyQuantity*>(prop.front())->getQuantityValue();
|
Base::Quantity value = static_cast<const App::PropertyQuantity*>(prop.front())->getQuantityValue();
|
||||||
value.getUserPrefered(unit);
|
unit = value.getUserString();
|
||||||
unit.prepend(QLatin1String(" "));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QString data = QString::fromAscii("'%1%2'").arg(val,0,'f',decimals()).arg(unit);
|
setPropertyValue(unit);
|
||||||
setPropertyValue(data);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QWidget* PropertyUnitItem::createEditor(QWidget* parent, const QObject* receiver, const char* method) const
|
QWidget* PropertyUnitItem::createEditor(QWidget* parent, const QObject* receiver, const char* method) const
|
||||||
|
@ -712,9 +707,10 @@ void PropertyUnitItem::setEditorData(QWidget *editor, const QVariant& data) cons
|
||||||
else if (prop.front()->getTypeId().isDerivedFrom(App::PropertyQuantity::getClassTypeId())) {
|
else if (prop.front()->getTypeId().isDerivedFrom(App::PropertyQuantity::getClassTypeId())) {
|
||||||
Base::Quantity value = static_cast<const App::PropertyQuantity*>(prop.front())->getQuantityValue();
|
Base::Quantity value = static_cast<const App::PropertyQuantity*>(prop.front())->getQuantityValue();
|
||||||
QString unitString;
|
QString unitString;
|
||||||
value.getUserPrefered(unitString);
|
//double factor;
|
||||||
unitString.prepend(QLatin1String(" "));
|
//value.getUserString(unitString);
|
||||||
sb->setSuffix(unitString);
|
//unitString.prepend(QLatin1String(" "));
|
||||||
|
//sb->setSuffix(unitString);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user