integrate Quantities into PropertyView and activate preferences again

This commit is contained in:
jriegel 2013-09-25 21:46:08 +02:00
parent e55ccd05c7
commit 44c07da571
27 changed files with 303 additions and 63 deletions

View File

@ -1175,9 +1175,9 @@ void Application::initApplication(void)
Application::_pcSingleton = new Application(0,0,mConfig); Application::_pcSingleton = new Application(0,0,mConfig);
// set up Unit system default // set up Unit system default
//ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath
// ("User parameter:BaseApp/Preferences/Units"); ("User parameter:BaseApp/Preferences/Units");
//UnitsApi::setSchema((UnitSystem)hGrp->GetInt("UserSchema",0)); UnitsApi::setSchema((UnitSystem)hGrp->GetInt("UserSchema",0));
// starting the init script // starting the init script
Interpreter().runString(Base::ScriptFactory().ProduceScript("FreeCADInit")); Interpreter().runString(Base::ScriptFactory().ProduceScript("FreeCADInit"));

View File

@ -28,8 +28,10 @@
#include <Base/Console.h> #include <Base/Console.h>
#include <Base/Exception.h> #include <Base/Exception.h>
#include <Base/Unit.h>
#include "FeatureTest.h" #include "FeatureTest.h"
#include "Material.h" #include "Material.h"
#include "Material.h"
#define new DEBUG_CLIENTBLOCK #define new DEBUG_CLIENTBLOCK
using namespace App; using namespace App;
@ -94,7 +96,12 @@ FeatureTest::FeatureTest()
ADD_PROPERTY_TYPE(TypeAll ,(4711),group,(App::PropertyType) (Prop_Output|Prop_ReadOnly |Prop_Hidden ), ADD_PROPERTY_TYPE(TypeAll ,(4711),group,(App::PropertyType) (Prop_Output|Prop_ReadOnly |Prop_Hidden ),
"An example property which has the types 'Output', 'ReadOnly' and 'Hidden'"); "An example property which has the types 'Output', 'ReadOnly' and 'Hidden'");
ADD_PROPERTY(Quantity,(1.0)); ADD_PROPERTY(QuantityLength,(1.0));
QuantityLength.setUnit(Base::Unit::Length);
ADD_PROPERTY(QuantityMass,(1.0));
QuantityMass.setUnit(Base::Unit::Mass);
ADD_PROPERTY(QuantityAngle,(1.0));
QuantityAngle.setUnit(Base::Unit::Angle);
} }

View File

@ -93,7 +93,9 @@ public:
App::PropertyInteger TypeAll; App::PropertyInteger TypeAll;
App::PropertyInteger TypeTransient; App::PropertyInteger TypeTransient;
App::PropertyQuantity Quantity; App::PropertyQuantity QuantityLength;
App::PropertyQuantity QuantityMass;
App::PropertyQuantity QuantityAngle;
/** @name methods overide Feature */ /** @name methods overide Feature */
//@{ //@{

View File

@ -55,6 +55,11 @@ using namespace std;
TYPESYSTEM_SOURCE(App::PropertyQuantity, App::PropertyFloat); TYPESYSTEM_SOURCE(App::PropertyQuantity, App::PropertyFloat);
Base::Quantity PropertyQuantity::getQuantityValue(void) const
{
return Quantity( _dValue,_Unit);
}
const char* PropertyQuantity::getEditorName(void) const const char* PropertyQuantity::getEditorName(void) const
{ {
@ -69,7 +74,30 @@ PyObject *PropertyQuantity::getPyObject(void)
void PropertyQuantity::setPyObject(PyObject *value) void PropertyQuantity::setPyObject(PyObject *value)
{ {
setValue(UnitsApi::toDblWithUserPrefs(Length,value)); Base::Quantity quant;
if (PyString_Check(value))
quant = Quantity::parse(PyString_AsString(value));
else if (PyFloat_Check(value))
quant = Quantity(PyFloat_AsDouble(value),_Unit);
else if (PyInt_Check(value))
quant = Quantity((double)PyInt_AsLong(value),_Unit);
else if (PyObject_TypeCheck(value, &(QuantityPy::Type))) {
Base::QuantityPy *pcObject = static_cast<Base::QuantityPy*>(value);
quant = *(pcObject->getQuantityPtr());
}else
throw Base::Exception("Wrong type!");
Unit unit = quant.getUnit();
if(unit.isEmpty()){
setValue(quant.getValue());
return;
}
if (unit != _Unit)
throw Base::Exception("Not matching Unit!");
setValue(quant.getValue());
} }
//************************************************************************** //**************************************************************************

View File

@ -33,6 +33,7 @@
#include <boost/filesystem/path.hpp> #include <boost/filesystem/path.hpp>
#include <Base/Unit.h> #include <Base/Unit.h>
#include <Base/Quantity.h>
#include "PropertyStandard.h" #include "PropertyStandard.h"
namespace Base { namespace Base {
@ -52,6 +53,9 @@ class AppExport PropertyQuantity : public PropertyFloat
public: public:
PropertyQuantity(void){} PropertyQuantity(void){}
virtual ~PropertyQuantity(){} virtual ~PropertyQuantity(){}
Base::Quantity getQuantityValue(void) const;
virtual const char* getEditorName(void) const; virtual const char* getEditorName(void) const;
virtual PyObject *getPyObject(void); virtual PyObject *getPyObject(void);

View File

@ -27,6 +27,7 @@
#include <cmath> #include <cmath>
#include "Quantity.h" #include "Quantity.h"
#include "Exception.h" #include "Exception.h"
#include "UnitsApi.h"
// suppress annoying warnings from generated source files // suppress annoying warnings from generated source files
#ifdef _MSC_VER #ifdef _MSC_VER
@ -107,6 +108,11 @@ Quantity& Quantity::operator = (const Quantity &New)
return *this; return *this;
} }
double Quantity::getUserPrefered(QString &unitString)const
{
return Base::UnitsApi::schemaPrefUnit(_Unit,unitString).getValue() * _Value;
}
// === Parser & Scanner stuff =============================================== // === Parser & Scanner stuff ===============================================
// include the Scanner and the Parser for the Quantitys // include the Scanner and the Parser for the Quantitys

View File

@ -25,6 +25,7 @@
#define BASE_Quantity_H #define BASE_Quantity_H
#include "Unit.h" #include "Unit.h"
#include <QString>
namespace Base { namespace Base {
@ -53,10 +54,16 @@ public:
Quantity pow(const Quantity&)const; Quantity pow(const Quantity&)const;
//@} //@}
/// transfer to user prefered unit/potence
double getUserPrefered(QString &unitString = QString())const;
std::string getUserString(void)const;
static Quantity parse(const char* buffer); static Quantity parse(const char* buffer);
const Unit & getUnit(void) const{return _Unit;} const Unit & getUnit(void) const{return _Unit;}
void setUnit(const Unit &un){_Unit = un;}
double getValue(void) const{return _Value;} double getValue(void) const{return _Value;}
void setValue(double val){_Value = val;}
protected: protected:
double _Value; double _Value;

View File

@ -26,24 +26,37 @@ Quantity(string) -- arbitrary mixture of numbers and chars defining a Quantity
</UserDocu> </UserDocu>
<DeveloperDocu>Quantity</DeveloperDocu> <DeveloperDocu>Quantity</DeveloperDocu>
</Documentation> </Documentation>
<Methode Name="pow"> <Methode Name="pow">
<Documentation> <Documentation>
<UserDocu> <UserDocu>
sets the quantity to the power sets the quantity to the power
</UserDocu> </UserDocu>
</Documentation> </Documentation>
</Methode> </Methode>
<Attribute Name="Value" ReadOnly="false"> <Methode Name="getUserPrefered">
<Documentation>
<UserDocu>
returns a quantity with the translation factor and a string with the prevered unit
</UserDocu>
</Documentation>
</Methode>
<Attribute Name="Value" ReadOnly="false">
<Documentation> <Documentation>
<UserDocu>Numeric Value of the Quantity (in internal system mm,kg,s)</UserDocu> <UserDocu>Numeric Value of the Quantity (in internal system mm,kg,s)</UserDocu>
</Documentation> </Documentation>
<Parameter Name="Value" Type="Float" /> <Parameter Name="Value" Type="Float" />
</Attribute> </Attribute>
<Attribute Name="Unit" ReadOnly="false"> <Attribute Name="Unit" ReadOnly="false">
<Documentation> <Documentation>
<UserDocu>Unit of the Quantity</UserDocu> <UserDocu>Unit of the Quantity</UserDocu>
</Documentation> </Documentation>
<Parameter Name="Unit" Type="Object" /> <Parameter Name="Unit" Type="Object" />
</Attribute> </Attribute>
</PythonExport> <Attribute Name="UserString" ReadOnly="true">
<Documentation>
<UserDocu>Unit of the Quantity</UserDocu>
</Documentation>
<Parameter Name="UserString" Type="String" />
</Attribute>
</PythonExport>
</GenerateModel> </GenerateModel>

View File

@ -6,6 +6,7 @@
// inclusion of the generated files (generated out of QuantityPy.xml) // inclusion of the generated files (generated out of QuantityPy.xml)
#include "QuantityPy.h" #include "QuantityPy.h"
#include "UnitPy.h"
#include "QuantityPy.cpp" #include "QuantityPy.cpp"
using namespace Base; using namespace Base;
@ -51,10 +52,8 @@ int QuantityPy::PyInit(PyObject* args, PyObject* kwd)
const char* string; const char* string;
if (PyArg_ParseTuple(args,"s", &string)) { if (PyArg_ParseTuple(args,"s", &string)) {
*self = Quantity::parse(string);
return 0;
return -1;
} }
PyErr_SetString(PyExc_TypeError, "Either three floats, tuple or Vector expected"); PyErr_SetString(PyExc_TypeError, "Either three floats, tuple or Vector expected");
@ -68,6 +67,11 @@ PyObject* QuantityPy::pow(PyObject * args)
return 0; return 0;
} }
PyObject* QuantityPy::getUserPrefered(PyObject *args)
{
PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
return 0;
}
PyObject* QuantityPy::number_add_handler(PyObject *self, PyObject *other) PyObject* QuantityPy::number_add_handler(PyObject *self, PyObject *other)
{ {
@ -126,24 +130,34 @@ PyObject* QuantityPy::number_multiply_handler(PyObject *self, PyObject *other)
Py::Float QuantityPy::getValue(void) const Py::Float QuantityPy::getValue(void) const
{ {
//return Py::Float(); return Py::Float(getQuantityPtr()->getValue());
throw Py::AttributeError("Not yet implemented");
} }
void QuantityPy::setValue(Py::Float /*arg*/) void QuantityPy::setValue(Py::Float arg)
{ {
throw Py::AttributeError("Not yet implemented"); getQuantityPtr()->setValue(arg);
} }
Py::Object QuantityPy::getUnit(void) const Py::Object QuantityPy::getUnit(void) const
{ {
//return Py::Object(); return Py::Object(new UnitPy(new Unit(getQuantityPtr()->getUnit())));
throw Py::AttributeError("Not yet implemented");
} }
void QuantityPy::setUnit(Py::Object /*arg*/) void QuantityPy::setUnit(Py::Object arg)
{ {
throw Py::AttributeError("Not yet implemented"); union PyType_Object pyType = {&(Base::UnitPy::Type)};
Py::Type UnitType(pyType.o);
if(!arg.isType(UnitType))
throw Py::AttributeError("Not yet implemented");
getQuantityPtr()->setUnit(*static_cast<Base::UnitPy*>((*arg))->getUnitPtr());
}
Py::String QuantityPy::getUserString(void) const
{
//return Py::String();
throw Py::AttributeError("Not yet implemented");
} }
PyObject *QuantityPy::getCustomAttributes(const char* /*attr*/) const PyObject *QuantityPy::getCustomAttributes(const char* /*attr*/) const

View File

@ -269,13 +269,21 @@ std::string Unit::getString(void) const
} }
} }
return ret.str();
}
Unit Unit::Length(1);
Unit Unit::Area(2);
Unit Unit::Volume(3);
Unit Unit::Mass(0,1);
return ret.str(); Unit Unit::Angle(0,0,0,0,0,0,0,1);
}
Unit Unit::TimeSpan(0,0,1);
Unit Unit::Velocity(1,0,-1);
Unit Unit::Acceleration(1,0,-2);
Unit Unit::Temperature(0,0,0,0,1);
Unit Unit::ElectricCurrent(0,0,0,1);
Unit Unit::AmountOfSubstance(0,0,0,0,0,1);
Unit Unit::LuminoseIntensity(0,0,0,0,0,0,1);

View File

@ -75,6 +75,26 @@ public:
char getLengthDimension(void){return Sig.Length;} char getLengthDimension(void){return Sig.Length;}
std::string getString(void) const; std::string getString(void) const;
/** Predefined Unit types. */
//@{
/// Length unit
static Unit Length;
/// Mass unit
static Unit Mass;
/// Angle
static Unit Angle;
static Unit Area;
static Unit Volume;
static Unit TimeSpan;
static Unit Velocity;
static Unit Acceleration;
static Unit Temperature;
static Unit ElectricCurrent;
static Unit AmountOfSubstance;
static Unit LuminoseIntensity;
protected: protected:
UnitSignature Sig; UnitSignature Sig;
}; };

View File

@ -130,6 +130,16 @@ double UnitsApi::translateUnit(const QString & str)
// === static translation methodes ========================================== // === static translation methodes ==========================================
QString UnitsApi::schemaTranslate(Base::Quantity quant)
{
return UserPrefSystem->schemaTranslate(quant);
}
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)
{ {
return UserPrefSystem->toStrWithUserPrefs(t,Value); return UserPrefSystem->toStrWithUserPrefs(t,Value);

View File

@ -65,6 +65,8 @@ public:
static double translateUnit(const char*); static double translateUnit(const char*);
static double translateUnit(const QString &); static double translateUnit(const QString &);
static QString schemaTranslate(Base::Quantity quant);
static Base::Quantity schemaPrefUnit(const Base::Unit &unit,QString &outUnitString);
/** @name Translation from internal to user prefs */ /** @name Translation from internal to user prefs */
//@{ //@{

View File

@ -27,6 +27,8 @@
#include <string> #include <string>
#include <QString> #include <QString>
#include "Quantity.h"
//#include "UnitsApi.h" //#include "UnitsApi.h"
@ -69,6 +71,10 @@ public:
* units parser. * units parser.
*/ */
virtual QString toStrWithUserPrefs(QuantityType t,double Value)=0; virtual QString toStrWithUserPrefs(QuantityType t,double Value)=0;
virtual QString schemaTranslate(Base::Quantity quant)=0;
// returns the prefered unit as string and the quantity to translate
virtual Base::Quantity schemaPrefUnit(const Base::Unit &unit,QString &outUnitString)=0;
}; };

View File

@ -62,3 +62,26 @@ QString UnitsSchemaImperial1::toStrWithUserPrefs(QuantityType t,double Value)
double UnitValue = Value/UnitsApi::getPrefFactorOf(t); double UnitValue = Value/UnitsApi::getPrefFactorOf(t);
return QString::fromAscii("%1 %2").arg(UnitValue).arg(UnitsApi::getPrefUnitOf(t)); return QString::fromAscii("%1 %2").arg(UnitValue).arg(UnitsApi::getPrefUnitOf(t));
} }
QString UnitsSchemaImperial1::schemaTranslate(Base::Quantity quant)
{
double UnitValue = quant.getValue();
Unit unit = quant.getUnit();
return QString::fromAscii("%1 %2").arg(UnitValue).arg(QString::fromAscii(unit.getString().c_str()));
}
Base::Quantity UnitsSchemaImperial1::schemaPrefUnit(const Base::Unit &unit,QString &outUnitString)
{
if(unit == Unit::Length){
outUnitString = QString::fromAscii("\"");
return Base::Quantity(1/25.40,Unit::Length);
}else if(unit == Unit::Mass){
outUnitString = QString::fromAscii("lb");
return Base::Quantity(1/0.45359237,Unit::Length);
}else{
outUnitString = QString::fromAscii(unit.getString().c_str());
return Base::Quantity(1,unit);
}
}

View File

@ -42,6 +42,9 @@ public:
void setSchemaUnits(void); void setSchemaUnits(void);
void toStrWithUserPrefs(QuantityType t,double Value,QString &outValue,QString &outUnit); void toStrWithUserPrefs(QuantityType t,double Value,QString &outValue,QString &outUnit);
QString toStrWithUserPrefs(QuantityType t,double Value); QString toStrWithUserPrefs(QuantityType t,double Value);
virtual QString schemaTranslate(Base::Quantity quant);
Base::Quantity schemaPrefUnit(const Base::Unit &unit,QString &outUnitString);
}; };

View File

@ -62,4 +62,22 @@ QString UnitsSchemaInternal::toStrWithUserPrefs(QuantityType t,double Value)
return QString::fromAscii("%1 %2").arg(UnitValue).arg(UnitsApi::getPrefUnitOf(t)); return QString::fromAscii("%1 %2").arg(UnitValue).arg(UnitsApi::getPrefUnitOf(t));
} }
QString UnitsSchemaInternal::schemaTranslate(Base::Quantity quant)
{
double UnitValue = quant.getValue();
Unit unit = quant.getUnit();
return QString::fromAscii("%1 %2").arg(UnitValue).arg(QString::fromAscii(unit.getString().c_str()));
}
Base::Quantity UnitsSchemaInternal::schemaPrefUnit(const Base::Unit &unit,QString &outUnitString)
{
if(unit == Unit::Length){
outUnitString = QString::fromAscii("mm");
return Base::Quantity(1.0,Unit::Length);
}else{
outUnitString = QString::fromAscii(unit.getString().c_str());
return Base::Quantity(1,unit);
}
}

View File

@ -43,6 +43,9 @@ public:
void setSchemaUnits(void); void setSchemaUnits(void);
void toStrWithUserPrefs(QuantityType t,double Value,QString &outValue,QString &outUnit); void toStrWithUserPrefs(QuantityType t,double Value,QString &outValue,QString &outUnit);
QString toStrWithUserPrefs(QuantityType t,double Value); QString toStrWithUserPrefs(QuantityType t,double Value);
virtual QString schemaTranslate(Base::Quantity quant);
Base::Quantity schemaPrefUnit(const Base::Unit &unit,QString &outUnitString);
}; };

View File

@ -62,4 +62,22 @@ QString UnitsSchemaMKS::toStrWithUserPrefs(QuantityType t,double Value)
return QString::fromAscii("%1 %2").arg(UnitValue).arg(UnitsApi::getPrefUnitOf(t)); return QString::fromAscii("%1 %2").arg(UnitValue).arg(UnitsApi::getPrefUnitOf(t));
} }
QString UnitsSchemaMKS::schemaTranslate(Base::Quantity quant)
{
double UnitValue = quant.getValue();
Unit unit = quant.getUnit();
return QString::fromAscii("%1 %2").arg(UnitValue).arg(QString::fromAscii(unit.getString().c_str()));
}
Base::Quantity UnitsSchemaMKS::schemaPrefUnit(const Base::Unit &unit,QString &outUnitString)
{
if(unit == Unit::Length){
outUnitString = QString::fromAscii("m");
return Base::Quantity(1/1000.0,Unit::Length);
}else{
outUnitString = QString::fromAscii(unit.getString().c_str());
return Base::Quantity(1,unit);
}
}

View File

@ -41,6 +41,9 @@ public:
void setSchemaUnits(void); void setSchemaUnits(void);
void toStrWithUserPrefs(QuantityType t,double Value,QString &outValue,QString &outUnit); void toStrWithUserPrefs(QuantityType t,double Value,QString &outValue,QString &outUnit);
QString toStrWithUserPrefs(QuantityType t,double Value); QString toStrWithUserPrefs(QuantityType t,double Value);
virtual QString schemaTranslate(Base::Quantity quant);
Base::Quantity schemaPrefUnit(const Base::Unit &unit,QString &outUnitString);
}; };

View File

@ -55,6 +55,8 @@ DlgSettingsUnitsImp::DlgSettingsUnitsImp(QWidget* parent)
QObject::connect(comboBox_ViewSystem, SIGNAL(currentIndexChanged(int)), this, SLOT(currentIndexChanged(int))); QObject::connect(comboBox_ViewSystem, SIGNAL(currentIndexChanged(int)), this, SLOT(currentIndexChanged(int)));
tableWidget->setVisible(false);
} }
/** /**

View File

@ -647,45 +647,85 @@ PropertyUnitItem::PropertyUnitItem()
{ {
} }
QVariant PropertyUnitItem::toString(const QVariant& Value) const
{
double val = Value.toDouble();
QString unit;
const std::vector<App::Property*>& prop = getPropertyData();
if (!prop.empty() && prop.front()->getTypeId().isDerivedFrom(App::PropertyQuantity::getClassTypeId())) {
Base::Quantity value = static_cast<const App::PropertyQuantity*>(prop.front())->getQuantityValue();
value.getUserPrefered(unit);
unit.prepend(QLatin1String(" "));
}
QString data = QString::fromAscii("%1 %2").arg(val,0,'f',decimals()).arg(unit);
return QVariant(data);
}
QVariant PropertyUnitItem::value(const App::Property* prop) const QVariant PropertyUnitItem::value(const App::Property* prop) const
{ {
assert(prop && prop->getTypeId().isDerivedFrom(App::PropertyLength::getClassTypeId())); assert(prop && prop->getTypeId().isDerivedFrom(App::PropertyQuantity::getClassTypeId()));
//UnitType = Base::Length;
double value = static_cast<const App::PropertyLength*>(prop)->getValue(); Base::Quantity value = static_cast<const App::PropertyQuantity*>(prop)->getQuantityValue();
QString nbr;
nbr = Base::UnitsApi::toStrWithUserPrefs(Base::Length,value); return QVariant(value.getUserPrefered());
return QVariant(nbr);
} }
void PropertyUnitItem::setValue(const QVariant& value) void PropertyUnitItem::setValue(const QVariant& value)
{ {
if (!value.canConvert(QVariant::String)) if (!value.canConvert(QVariant::Double))
return; return;
QString val = value.toString(); double val = value.toDouble();
QString data = QString::fromAscii("\"%1\"").arg(val);
QString unit;
const std::vector<App::Property*>& prop = getPropertyData();
if (prop.empty())
return;
else if (prop.front()->getTypeId().isDerivedFrom(App::PropertyQuantity::getClassTypeId())) {
Base::Quantity value = static_cast<const App::PropertyQuantity*>(prop.front())->getQuantityValue();
value.getUserPrefered(unit);
unit.prepend(QLatin1String(" "));
}
QString data = QString::fromAscii("'%1%2'").arg(val,0,'f',decimals()).arg(unit);
setPropertyValue(data); 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
{ {
QLineEdit *le = new QLineEdit(parent); QDoubleSpinBox *sb = new QDoubleSpinBox(parent);
le->setFrame(false); sb->setFrame(false);
QObject::connect(le, SIGNAL(textChanged(const QString&)), receiver, method); sb->setDecimals(decimals());
return le; QObject::connect(sb, SIGNAL(valueChanged(double)), receiver, method);
return sb;
} }
void PropertyUnitItem::setEditorData(QWidget *editor, const QVariant& data) const void PropertyUnitItem::setEditorData(QWidget *editor, const QVariant& data) const
{ {
QLineEdit *le = qobject_cast<QLineEdit*>(editor); QDoubleSpinBox *sb = qobject_cast<QDoubleSpinBox*>(editor);
le->setText(data.toString()); sb->setRange((double)INT_MIN, (double)INT_MAX);
sb->setValue(data.toDouble());
const std::vector<App::Property*>& prop = getPropertyData();
if (prop.empty())
return;
else if (prop.front()->getTypeId().isDerivedFrom(App::PropertyQuantity::getClassTypeId())) {
Base::Quantity value = static_cast<const App::PropertyQuantity*>(prop.front())->getQuantityValue();
QString unitString;
value.getUserPrefered(unitString);
unitString.prepend(QLatin1String(" "));
sb->setSuffix(unitString);
}
} }
QVariant PropertyUnitItem::editorData(QWidget *editor) const QVariant PropertyUnitItem::editorData(QWidget *editor) const
{ {
QLineEdit *le = qobject_cast<QLineEdit*>(editor); QDoubleSpinBox *sb = qobject_cast<QDoubleSpinBox*>(editor);
return QVariant(le->text()); return QVariant(sb->value());
} }
// -------------------------------------------------------------------- // --------------------------------------------------------------------

View File

@ -232,10 +232,10 @@ class GuiExport PropertyUnitItem: public PropertyItem
virtual QVariant editorData(QWidget *editor) const; virtual QVariant editorData(QWidget *editor) const;
protected: protected:
//virtual QVariant toString(const QVariant&) const; virtual QVariant toString(const QVariant&) const;
virtual QVariant value(const App::Property*) const; virtual QVariant value(const App::Property*) const;
virtual void setValue(const QVariant&); virtual void setValue(const QVariant&);
Base::QuantityType UnitType; Base::Unit _Unit;
PropertyUnitItem(); PropertyUnitItem();
}; };

View File

@ -65,7 +65,7 @@ WidgetFactorySupplier::WidgetFactorySupplier()
new PrefPageProducer<DlgSettingsEditorImp> ( QT_TRANSLATE_NOOP("QObject","General") ); new PrefPageProducer<DlgSettingsEditorImp> ( QT_TRANSLATE_NOOP("QObject","General") );
new PrefPageProducer<DlgReportViewImp> ( QT_TRANSLATE_NOOP("QObject","General") ); new PrefPageProducer<DlgReportViewImp> ( QT_TRANSLATE_NOOP("QObject","General") );
new PrefPageProducer<DlgSettingsMacroImp> ( QT_TRANSLATE_NOOP("QObject","General") ); new PrefPageProducer<DlgSettingsMacroImp> ( QT_TRANSLATE_NOOP("QObject","General") );
//new PrefPageProducer<DlgSettingsUnitsImp> ( QT_TRANSLATE_NOOP("QObject","General") ); new PrefPageProducer<DlgSettingsUnitsImp> ( QT_TRANSLATE_NOOP("QObject","General") );
new PrefPageProducer<DlgSettings3DViewImp> ( QT_TRANSLATE_NOOP("QObject","Display") ); new PrefPageProducer<DlgSettings3DViewImp> ( QT_TRANSLATE_NOOP("QObject","Display") );
new PrefPageProducer<DlgSettingsViewColor> ( QT_TRANSLATE_NOOP("QObject","Display") ); new PrefPageProducer<DlgSettingsViewColor> ( QT_TRANSLATE_NOOP("QObject","Display") );

View File

@ -8,6 +8,7 @@ include_directories(
${Boost_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS}
${ZLIB_INCLUDE_DIR} ${ZLIB_INCLUDE_DIR}
${XERCESC_INCLUDE_DIR} ${XERCESC_INCLUDE_DIR}
${QT_INCLUDE_DIR}
) )
set(Image_LIBS set(Image_LIBS

View File

@ -18,6 +18,7 @@ include_directories(
${XERCESC_INCLUDE_DIR} ${XERCESC_INCLUDE_DIR}
${ZLIB_INCLUDE_DIR} ${ZLIB_INCLUDE_DIR}
${FREETYPE_INCLUDE_DIRS} ${FREETYPE_INCLUDE_DIRS}
${QT_INCLUDE_DIR}
) )
link_directories(${OCC_LIBRARY_DIR}) link_directories(${OCC_LIBRARY_DIR})

View File

@ -11,6 +11,7 @@ include_directories(
${ZLIB_INCLUDE_DIR} ${ZLIB_INCLUDE_DIR}
${PYTHON_INCLUDE_PATH} ${PYTHON_INCLUDE_PATH}
${XERCESC_INCLUDE_DIR} ${XERCESC_INCLUDE_DIR}
${QT_INCLUDE_DIR}
) )
link_directories(${OCC_LIBRARY_DIR}) link_directories(${OCC_LIBRARY_DIR})