diff --git a/src/meshlab/customDialog.cpp b/src/meshlab/customDialog.cpp index 7b3cabd2b..1e25f22c6 100644 --- a/src/meshlab/customDialog.cpp +++ b/src/meshlab/customDialog.cpp @@ -94,7 +94,7 @@ CustomDialog::~CustomDialog() } //Maybe a MeshDocument parameter is needed. See loadFrameContent definition SettingDialog::SettingDialog( RichParameter* rpar,QWidget* parent /*= 0*/ ) -:QDialog(parent),frame(this),richpar(rpar) +:QDialog(parent),frame(this),tmppar(NULL),richpar(rpar) { setModal(true); savebut = new QPushButton("Save",this); @@ -106,7 +106,10 @@ SettingDialog::SettingDialog( RichParameter* rpar,QWidget* parent /*= 0*/ ) dialoglayout->addWidget(resetbut,1,1); dialoglayout->addWidget(applybut,1,2); - frame.loadFrameContent(rpar); + RichParameterCopyConstructor cp; + richpar->accept(cp); + tmppar = cp.lastCreated; + frame.loadFrameContent(tmppar); dialoglayout->addWidget(&frame,0,0,1,3); dialoglayout->setSizeConstraint(QLayout::SetFixedSize); setLayout(dialoglayout); @@ -119,17 +122,18 @@ void SettingDialog::save() { QDomDocument doc("MeshLabSettings"); RichParameterXMLVisitor v(doc); - richpar->accept(v); + tmppar->accept(v); doc.appendChild(v.parElem); QString docstring = doc.toString(); QSettings setting; - setting.value(richpar->name,QVariant(docstring)); + setting.value(tmppar->name,QVariant(docstring)); } void SettingDialog::apply() { assert(frame.stdfieldwidgets.size() == 1); frame.stdfieldwidgets.at(0)->collectWidgetValue(); + richpar->val->set(*tmppar->val); emit applySettingSignal(); } @@ -141,6 +145,7 @@ void SettingDialog::reset() SettingDialog::~SettingDialog() { + delete tmppar; delete savebut; delete resetbut; delete applybut; diff --git a/src/meshlab/customDialog.h b/src/meshlab/customDialog.h index 3dda3d2bb..23f6b5738 100644 --- a/src/meshlab/customDialog.h +++ b/src/meshlab/customDialog.h @@ -72,6 +72,7 @@ signals: private: StdParFrame frame; RichParameter* richpar; + RichParameter* tmppar; QPushButton* savebut; QPushButton* applybut; QPushButton* resetbut; diff --git a/src/meshlab/filterparameter.cpp b/src/meshlab/filterparameter.cpp index 4793a29c6..31a359128 100644 --- a/src/meshlab/filterparameter.cpp +++ b/src/meshlab/filterparameter.cpp @@ -293,50 +293,50 @@ void RichParameterSet::clear() void RichParameterCopyConstructor::visit( RichBool& pd ) { - lastCreated = new RichBool(pd.name,pd.pd->defVal->getBool(),pd.pd->fieldDesc,pd.pd->tooltip); + lastCreated = new RichBool(pd.name,pd.val->getBool(),pd.pd->defVal->getBool(),pd.pd->fieldDesc,pd.pd->tooltip); } void RichParameterCopyConstructor::visit( RichInt& pd ) { - lastCreated = new RichInt(pd.name,pd.pd->defVal->getInt(),pd.pd->fieldDesc,pd.pd->tooltip); + lastCreated = new RichInt(pd.name,pd.val->getInt(),pd.pd->defVal->getInt(),pd.pd->fieldDesc,pd.pd->tooltip); } void RichParameterCopyConstructor::visit( RichFloat& pd ) { - lastCreated = new RichFloat(pd.name,pd.pd->defVal->getFloat(),pd.pd->fieldDesc,pd.pd->tooltip); + lastCreated = new RichFloat(pd.name,pd.val->getFloat(),pd.pd->defVal->getFloat(),pd.pd->fieldDesc,pd.pd->tooltip); } void RichParameterCopyConstructor::visit( RichString& pd ) { - lastCreated = new RichString(pd.name,pd.pd->defVal->getString(),pd.pd->fieldDesc,pd.pd->tooltip); + lastCreated = new RichString(pd.name,pd.val->getString(),pd.pd->defVal->getString(),pd.pd->fieldDesc,pd.pd->tooltip); } void RichParameterCopyConstructor::visit( RichMatrix44f& pd ) { - lastCreated = new RichMatrix44f(pd.name,pd.pd->defVal->getMatrix44f(),pd.pd->fieldDesc,pd.pd->tooltip); + lastCreated = new RichMatrix44f(pd.name,pd.val->getMatrix44f(),pd.pd->defVal->getMatrix44f(),pd.pd->fieldDesc,pd.pd->tooltip); } void RichParameterCopyConstructor::visit( RichPoint3f& pd ) { - lastCreated = new RichPoint3f(pd.name,pd.pd->defVal->getPoint3f(),pd.pd->fieldDesc,pd.pd->tooltip); + lastCreated = new RichPoint3f(pd.name,pd.val->getPoint3f(),pd.pd->defVal->getPoint3f(),pd.pd->fieldDesc,pd.pd->tooltip); } void RichParameterCopyConstructor::visit( RichColor& pd ) { - lastCreated = new RichColor(pd.name,pd.pd->defVal->getColor(),pd.pd->fieldDesc,pd.pd->tooltip); + lastCreated = new RichColor(pd.name,pd.val->getColor(),pd.pd->defVal->getColor(),pd.pd->fieldDesc,pd.pd->tooltip); } void RichParameterCopyConstructor::visit( RichAbsPerc& pd ) { AbsPercDecoration* dec = reinterpret_cast(pd.pd); - lastCreated = new RichAbsPerc(pd.name,pd.pd->defVal->getAbsPerc(),dec->min,dec->max,pd.pd->fieldDesc,pd.pd->tooltip); + lastCreated = new RichAbsPerc(pd.name,pd.val->getAbsPerc(),pd.pd->defVal->getAbsPerc(),dec->min,dec->max,pd.pd->fieldDesc,pd.pd->tooltip); } void RichParameterCopyConstructor::visit( RichEnum& pd ) { EnumDecoration* dec = reinterpret_cast(pd.pd); - lastCreated = new RichEnum(pd.name,pd.pd->defVal->getEnum(),dec->enumvalues,pd.pd->fieldDesc,pd.pd->tooltip); + lastCreated = new RichEnum(pd.name,pd.val->getEnum(),pd.pd->defVal->getEnum(),dec->enumvalues,pd.pd->fieldDesc,pd.pd->tooltip); } void RichParameterCopyConstructor::visit( RichFloatList& pd ) @@ -347,7 +347,7 @@ void RichParameterCopyConstructor::visit( RichFloatList& pd ) void RichParameterCopyConstructor::visit( RichDynamicFloat& pd ) { DynamicFloatDecoration* dec = reinterpret_cast(pd.pd); - lastCreated = new RichDynamicFloat(pd.name,pd.pd->defVal->getDynamicFloat(),dec->min,dec->max,pd.pd->fieldDesc,pd.pd->tooltip); + lastCreated = new RichDynamicFloat(pd.name,pd.val->getDynamicFloat(),pd.pd->defVal->getDynamicFloat(),dec->min,dec->max,pd.pd->fieldDesc,pd.pd->tooltip); } void RichParameterCopyConstructor::visit( RichOpenFile& pd ) @@ -364,7 +364,7 @@ void RichParameterCopyConstructor::visit( RichMesh& pd ) { MeshDecoration* dec = reinterpret_cast(pd.pd); if (dec->defVal != NULL) - lastCreated = new RichMesh(pd.name,dec->defVal->getMesh(),dec->meshdoc,dec->fieldDesc,dec->tooltip); + lastCreated = new RichMesh(pd.name,pd.val->getMesh(),dec->defVal->getMesh(),dec->meshdoc,dec->fieldDesc,dec->tooltip); else lastCreated = new RichMesh(pd.name,dec->meshindex); } @@ -508,7 +508,7 @@ void RichParameterFactory::create( const QDomElement& np,RichParameter** par ) if(type=="RichString") { - *par = new RichString(name,np.attribute("value")); + *par = new RichString(name,np.attribute("value"),"",""); return; } @@ -525,7 +525,7 @@ void RichParameterFactory::create( const QDomElement& np,RichParameter** par ) unsigned int b = np.attribute("b").toUInt(); unsigned int a = np.attribute("a").toUInt(); QColor col(r,g,b,a); - *par= new RichColor(name,col); + *par= new RichColor(name,col,"",""); return; } @@ -694,6 +694,10 @@ RichBool::RichBool( const QString nm,const bool defval,const QString desc/*=QStr } +RichBool::RichBool( const QString nm,const bool val,const bool defval,const QString desc/*=QString()*/,const QString tltip/*=QString()*/ ) : RichParameter(nm,new BoolValue(val),new BoolDecoration(new BoolValue(defval),desc,tltip)) +{ + +} void RichBool::accept( Visitor& v ) { v.visit(*this); @@ -714,6 +718,10 @@ RichInt::RichInt( const QString nm,const int defval,const QString desc/*=QString } +RichInt::RichInt( const QString nm,const int val,const int defval,const QString desc/*=QString()*/,const QString tltip/*=QString()*/ ):RichParameter(nm,new IntValue(val),new IntDecoration(new IntValue(defval),desc,tltip)) +{ + +} void RichInt::accept( Visitor& v ) { v.visit(*this); @@ -734,6 +742,10 @@ RichFloat::RichFloat( const QString nm,const float defval,const QString desc/*=Q } +RichFloat::RichFloat( const QString nm,const float val,const float defval,const QString desc/*=QString()*/,const QString tltip/*=QString()*/ ) :RichParameter(nm,new FloatValue(val),new FloatDecoration(new FloatValue(defval),desc,tltip)) +{ + +} void RichFloat::accept( Visitor& v ) { v.visit(*this); @@ -754,6 +766,10 @@ RichString::RichString( const QString nm,const QString defval,const QString desc } +RichString::RichString( const QString nm,const QString val,const QString defval,const QString desc/*=QString()*/,const QString tltip/*=QString()*/ ):RichParameter(nm,new StringValue(val),new StringDecoration(new StringValue(defval),desc,tltip)) +{ + +} void RichString::accept( Visitor& v ) { v.visit(*this); @@ -774,6 +790,10 @@ RichMatrix44f::RichMatrix44f( const QString nm,const vcg::Matrix44f& defval,cons } +RichMatrix44f::RichMatrix44f( const QString nm,const vcg::Matrix44f& val,const vcg::Matrix44f& defval,const QString desc/*=QString()*/,const QString tltip/*=QString()*/ ):RichParameter(nm,new Matrix44fValue(val),new Matrix44fDecoration(new Matrix44fValue(defval),desc,tltip)) +{ + +} void RichMatrix44f::accept( Visitor& v ) { v.visit(*this); @@ -794,6 +814,10 @@ RichPoint3f::RichPoint3f( const QString nm,const vcg::Point3f defval,const QStri } +RichPoint3f::RichPoint3f( const QString nm,const vcg::Point3f val,const vcg::Point3f defval,const QString desc/*=QString()*/,const QString tltip/*=QString()*/ ):RichParameter(nm,new Point3fValue(val),new Point3fDecoration(new Point3fValue(defval),desc,tltip)) +{ + +} void RichPoint3f::accept( Visitor& v ) { v.visit(*this); @@ -814,6 +838,10 @@ RichColor::RichColor( const QString nm,const QColor defval,const QString desc/*= } +RichColor::RichColor( const QString nm,const QColor val,const QColor defval,const QString desc/*=QString()*/,const QString tltip/*=QString()*/ ) :RichParameter(nm,new ColorValue(val),new ColorDecoration(new ColorValue(defval),desc,tltip)) +{ + +} void RichColor::accept( Visitor& v ) { v.visit(*this); @@ -834,6 +862,10 @@ RichAbsPerc::RichAbsPerc( const QString nm,const float defval,const float minval } +RichAbsPerc::RichAbsPerc( const QString nm,const float val,const float defval,const float minval,const float maxval,const QString desc/*=QString()*/,const QString tltip/*=QString()*/ ):RichParameter(nm, new AbsPercValue(val), new AbsPercDecoration(new AbsPercValue(defval),minval,maxval,desc,tltip)) +{ + +} void RichAbsPerc::accept( Visitor& v ) { v.visit(*this); @@ -854,6 +886,10 @@ RichEnum::RichEnum( const QString nm,const int defval,const QStringList values,c } +RichEnum::RichEnum( const QString nm,const int val,const int defval,const QStringList values,const QString desc/*=QString()*/,const QString tltip/*=QString()*/ ):RichParameter(nm,new EnumValue(val),new EnumDecoration(new EnumValue(defval),values,desc,tltip)) +{ + +} void RichEnum::accept( Visitor& v ) { v.visit(*this); @@ -885,6 +921,10 @@ RichMesh::RichMesh( const QString nm,int meshindex ) :RichParameter(nm,new MeshV } +RichMesh::RichMesh( const QString nm,MeshModel* val,MeshModel* defval,MeshDocument* doc,const QString desc/*=QString()*/,const QString tltip/*=QString()*/ ) :RichParameter(nm, new MeshValue(defval),new MeshDecoration( new MeshValue(defval),doc,desc,tltip)) +{ + +} void RichMesh::accept( Visitor& v ) { v.visit(*this); @@ -905,6 +945,11 @@ RichFloatList::RichFloatList( const QString nm,FloatListValue* v,FloatListDecora } +RichFloatList::RichFloatList( const QString nm,FloatListValue* val,FloatListValue* v,FloatListDecoration* prdec ) :RichParameter(nm,v,prdec) +{ + +} + void RichFloatList::accept( Visitor& v ) { v.visit(*this); @@ -925,6 +970,11 @@ RichDynamicFloat::RichDynamicFloat( const QString nm,const float defval,const fl } +RichDynamicFloat::RichDynamicFloat( const QString nm,const float val,const float defval,const float minval,const float maxval,const QString desc/*=QString()*/,const QString tltip/*=QString()*/ ) :RichParameter(nm,new DynamicFloatValue(val),new DynamicFloatDecoration(new DynamicFloatValue(defval),minval,maxval,desc,tltip)) +{ + +} + void RichDynamicFloat::accept( Visitor& v ) { v.visit(*this); @@ -945,6 +995,10 @@ RichOpenFile::RichOpenFile( const QString nm,const QString defval,const QString } +RichOpenFile::RichOpenFile( const QString nm,const QString val,const QString defval,const QString ext /*= QString("*.*")*/,const QString desc/*=QString()*/,const QString tltip/*=QString()*/ ):RichParameter(nm,new FileValue(val),new FileDecoration(new FileValue(defval),tltip,desc)) +{ + +} void RichOpenFile::accept( Visitor& v ) { v.visit(*this); @@ -965,6 +1019,10 @@ RichSaveFile::RichSaveFile( const QString nm,FileValue* v,FileDecoration* prdec } +RichSaveFile::RichSaveFile( const QString nm,FileValue* val,FileValue* v,FileDecoration* prdec ):RichParameter(nm,v,prdec) +{ + +} void RichSaveFile::accept( Visitor& v ) { v.visit(*this); diff --git a/src/meshlab/filterparameter.h b/src/meshlab/filterparameter.h index e7d90d4a6..77d87d410 100644 --- a/src/meshlab/filterparameter.h +++ b/src/meshlab/filterparameter.h @@ -425,6 +425,7 @@ class RichBool : public RichParameter { public: RichBool(const QString nm,const bool defval,const QString desc=QString(),const QString tltip=QString()); + RichBool(const QString nm,const bool val,const bool defval,const QString desc=QString(),const QString tltip=QString()); void accept(Visitor& v); bool operator==(const RichParameter& rb); @@ -435,6 +436,7 @@ class RichInt : public RichParameter { public: RichInt(const QString nm,const int defval,const QString desc=QString(),const QString tltip=QString()); + RichInt(const QString nm,const int val,const int defval,const QString desc=QString(),const QString tltip=QString()); void accept(Visitor& v); bool operator==(const RichParameter& rb); ~RichInt(); @@ -444,6 +446,7 @@ class RichFloat : public RichParameter { public: RichFloat(const QString nm,const float defval,const QString desc=QString(),const QString tltip=QString()); + RichFloat(const QString nm,const float val,const float defval,const QString desc=QString(),const QString tltip=QString()); void accept(Visitor& v); bool operator==(const RichParameter& rb); ~RichFloat(); @@ -452,7 +455,8 @@ public: class RichString : public RichParameter { public: - RichString(const QString nm,const QString defval,const QString desc=QString(),const QString tltip=QString()); + RichString(const QString nm,const QString defval,const QString desc,const QString tltip); + RichString(const QString nm,const QString val,const QString defval,const QString desc,const QString tltip); void accept(Visitor& v); bool operator==(const RichParameter& rb); ~RichString(); @@ -462,6 +466,7 @@ class RichMatrix44f : public RichParameter { public: RichMatrix44f(const QString nm,const vcg::Matrix44f& defval,const QString desc=QString(),const QString tltip=QString()); + RichMatrix44f(const QString nm,const vcg::Matrix44f& val,const vcg::Matrix44f& defval,const QString desc=QString(),const QString tltip=QString()); void accept(Visitor& v); bool operator==(const RichParameter& rb); ~RichMatrix44f(); @@ -471,6 +476,7 @@ class RichPoint3f : public RichParameter { public: RichPoint3f(const QString nm,const vcg::Point3f defval,const QString desc=QString(),const QString tltip=QString()); + RichPoint3f(const QString nm,const vcg::Point3f val,const vcg::Point3f defval,const QString desc=QString(),const QString tltip=QString()); void accept(Visitor& v); bool operator==(const RichParameter& rb); ~RichPoint3f(); @@ -479,7 +485,8 @@ public: class RichColor : public RichParameter { public: - RichColor(const QString nm,const QColor defval,const QString desc=QString(),const QString tltip=QString()); + RichColor(const QString nm,const QColor defval,const QString desc,const QString tltip); + RichColor(const QString nm,const QColor val,const QColor defval,const QString desc,const QString tltip); void accept(Visitor& v); bool operator==(const RichParameter& rb); ~RichColor(); @@ -490,6 +497,7 @@ class RichAbsPerc : public RichParameter { public: RichAbsPerc(const QString nm,const float defval,const float minval,const float maxval,const QString desc=QString(),const QString tltip=QString()); + RichAbsPerc(const QString nm,const float val,const float defval,const float minval,const float maxval,const QString desc=QString(),const QString tltip=QString()); void accept(Visitor& v); bool operator==(const RichParameter& rb); ~RichAbsPerc(); @@ -499,6 +507,7 @@ class RichEnum : public RichParameter { public: RichEnum(const QString nm,const int defval,const QStringList values,const QString desc=QString(),const QString tltip=QString()); + RichEnum(const QString nm,const int val,const int defval,const QStringList values,const QString desc=QString(),const QString tltip=QString()); void accept(Visitor& v); bool operator==(const RichParameter& rb); ~RichEnum(); @@ -508,6 +517,7 @@ class RichMesh : public RichParameter { public: RichMesh(const QString nm,MeshModel* defval,MeshDocument* doc,const QString desc=QString(),const QString tltip=QString()); + RichMesh(const QString nm,MeshModel* val,MeshModel* defval,MeshDocument* doc,const QString desc=QString(),const QString tltip=QString()); RichMesh(const QString nm,int meshindex,MeshDocument* doc,const QString desc=QString(),const QString tltip=QString()); @@ -523,6 +533,7 @@ class RichFloatList : public RichParameter { public: RichFloatList(const QString nm,FloatListValue* v,FloatListDecoration* prdec); + RichFloatList(const QString nm,FloatListValue* val,FloatListValue* v,FloatListDecoration* prdec); void accept(Visitor& v); bool operator==(const RichParameter& rb); ~RichFloatList(); @@ -532,6 +543,7 @@ class RichDynamicFloat : public RichParameter { public: RichDynamicFloat(const QString nm,const float defval,const float minval,const float maxval,const QString desc=QString(),const QString tltip=QString()); + RichDynamicFloat(const QString nm,const float val,const float defval,const float minval,const float maxval,const QString desc=QString(),const QString tltip=QString()); void accept(Visitor& v); bool operator==(const RichParameter& rb); ~RichDynamicFloat(); @@ -542,6 +554,7 @@ class RichOpenFile : public RichParameter { public: RichOpenFile(const QString nm,const QString defval,const QString ext = QString("*.*"),const QString desc=QString(),const QString tltip=QString()); + RichOpenFile(const QString nm,const QString val,const QString defval,const QString ext = QString("*.*"),const QString desc=QString(),const QString tltip=QString()); void accept(Visitor& v); bool operator==(const RichParameter& rb); ~RichOpenFile(); @@ -551,6 +564,7 @@ class RichSaveFile : public RichParameter { public: RichSaveFile(const QString nm,FileValue* v,FileDecoration* prdec); + RichSaveFile(const QString nm,FileValue* val,FileValue* v,FileDecoration* prdec); void accept(Visitor& v); bool operator==(const RichParameter& rb); ~RichSaveFile(); diff --git a/src/sampleplugins/sampledecoration/sampledecorate.cpp b/src/sampleplugins/sampledecoration/sampledecorate.cpp index 7388a2aae..bdfad4347 100644 --- a/src/sampleplugins/sampledecoration/sampledecorate.cpp +++ b/src/sampleplugins/sampledecoration/sampledecorate.cpp @@ -63,7 +63,7 @@ void SampleMeshDecoratePlugin::initGlobalParameterSet(QAction *, RichParameterSe QString cubemapDirPath = MainWindowInterface::getBaseDirPath() + QString("/textures/cubemaps/uffizi.jpg"); //parset->addString("CubeMapPath", "/Users/cignoni/devel/meshlab/src/meshlab/textures/cubemaps/uffizi.jpg"); - parset->addParam(new RichString("CubeMapPath", cubemapDirPath)); + parset->addParam(new RichString("CubeMapPath", cubemapDirPath,"","")); }