fixed bug in applying custom settings

This commit is contained in:
Guido Ranzuglia granzuglia 2009-10-26 10:02:30 +00:00
parent df20916041
commit 6a37e9fd9b
5 changed files with 98 additions and 20 deletions

View File

@ -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;

View File

@ -72,6 +72,7 @@ signals:
private:
StdParFrame frame;
RichParameter* richpar;
RichParameter* tmppar;
QPushButton* savebut;
QPushButton* applybut;
QPushButton* resetbut;

View File

@ -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<AbsPercDecoration*>(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<EnumDecoration*>(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<DynamicFloatDecoration*>(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<MeshDecoration*>(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);

View File

@ -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();

View File

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