added automatic building of list of parameters for each filter

This commit is contained in:
Paolo Cignoni cignoni 2010-09-17 13:13:42 +00:00
parent e99d744dac
commit 925c7b94b3
2 changed files with 26 additions and 9 deletions

View File

@ -80,13 +80,9 @@ void PluginManager::loadPlugins(RichParameterSet& defaultGlobal,QScriptEngine* e
if (eng != 0)
{
MeshDocument md;
MeshModel mm(&md);
vcg::tri::Tetrahedron<CMeshO>(mm.cm);
mm.updateDataMask(MeshModel::MM_ALL);
QString code = "";
code += "Plugins = { };\n";
QMap<QString,RichParameterSet> FPM = generateFilterParameterMap();
foreach(MeshFilterInterface* mi,this->meshFilterPlug)
{
QString pname = mi->pluginName();
@ -100,10 +96,7 @@ void PluginManager::loadPlugins(RichParameterSet& defaultGlobal,QScriptEngine* e
if (filterFunction != "")
{
ScriptAdapterGenerator gen;
QAction act(filterName,NULL);
RichParameterSet rp;
mi->initParameterSet(&act,mm,rp);
QString gencode = gen.funCodeGenerator(filterName,rp);
QString gencode = gen.funCodeGenerator(filterName,FPM[filterName]);
code += "Plugins." + pname + "." + filterFunction + " = " + gencode + "\n";
}
}
@ -120,6 +113,28 @@ void PluginManager::loadPlugins(RichParameterSet& defaultGlobal,QScriptEngine* e
qDebug("Code:\n %s",qPrintable(code));
}
}
/*
This function create a map from filtername to dummy RichParameterSet.
containing for each filtername the set of parameter that it uses.
*/
QMap<QString, RichParameterSet> PluginManager::generateFilterParameterMap()
{
QMap<QString,RichParameterSet> FPM;
MeshDocument md;
MeshModel mm(&md);
vcg::tri::Tetrahedron<CMeshO>(mm.cm);
mm.updateDataMask(MeshModel::MM_ALL);
QMap<QString, QAction*>::iterator ai;
for(ai=this->actionFilterMap.begin(); ai !=this->actionFilterMap.end();++ai)
{
QString filterName = ai.key();// ->filterName();
QAction act(filterName,NULL);
RichParameterSet rp;
this->stringFilterMap[filterName]->initParameterSet(ai.value(),md,rp);
FPM[filterName]=rp;
}
return FPM;
}
QString PluginManager::getBaseDirPath()
{

View File

@ -45,6 +45,8 @@ public:
static QString getPluginDirPath();
static QString getBaseDirPath();
QMap<QString,RichParameterSet> generateFilterParameterMap();
QDir pluginsDir;
QMap<QString, QAction*> actionFilterMap;
QMap<QString, MeshFilterInterface*> stringFilterMap;