diff --git a/docs/ToDo.txt b/docs/ToDo.txt index 86babd11e..5534ff42e 100644 --- a/docs/ToDo.txt +++ b/docs/ToDo.txt @@ -1,3 +1,13 @@ + +15/6/06 +o continua a chiedere di salvare anche dopo aver salvato +o crash on open obj se compilato con mingw +o crash su topologia facce degeneri +x restore color crash +o icona delete +x crash on cancel in opening // DONE 15/6 +o progress bar occupa tempo macchina + 12/6/06 o selection che genera parametri o progress bar integrata nella glarea. diff --git a/src/meshlab/filterScriptDialog.cpp b/src/meshlab/filterScriptDialog.cpp index 1d99b89c6..16e52b162 100644 --- a/src/meshlab/filterScriptDialog.cpp +++ b/src/meshlab/filterScriptDialog.cpp @@ -23,29 +23,12 @@ /**************************************************************************** History $Log$ +Revision 1.2 2006/06/16 01:26:07 cignoni +Added Initial Filter Script Dialog + Revision 1.1 2006/06/15 13:05:57 cignoni added Filter History Dialogs -Revision 1.7 2006/01/16 05:34:16 cignoni -Added backward qt4.0 compatibility for setAutoFillBackground - -Revision 1.6 2006/01/15 15:27:59 glvertex -Added few lines to set background even in qt 4.1 - -Revision 1.5 2006/01/02 18:54:52 glvertex -added multilevel logging support - -Revision 1.4 2006/01/02 17:39:18 glvertex -Added info types in a combobox - -Revision 1.3 2005/12/04 16:50:15 glvertex -Removed [using namespace] directive form .h -Renaming in QT style -Adapted method behavior to the new ui interface - -Revision 1.2 2005/12/03 22:49:46 cignoni -Added copyright info - ****************************************************************************/ #include "filterScriptDialog.h" @@ -58,6 +41,9 @@ FilterScriptDialog::FilterScriptDialog(QWidget * parent) { FilterScriptDialog::ui.setupUi(this); scriptPtr=0; + connect(ui.clearScriptButton,SIGNAL(clicked()), this, SLOT(clearScript())); + connect(ui.saveScriptButton, SIGNAL(clicked()), this, SLOT(saveScript())); + connect(ui.openScriptButton, SIGNAL(clicked()), this, SLOT(openScript())); } void FilterScriptDialog::setScript(FilterScript *scr) @@ -74,4 +60,17 @@ void FilterScriptDialog::clearScript() { assert(scriptPtr); scriptPtr->actionList.clear(); + ui.scriptListWidget->clear(); + +} + + +void FilterScriptDialog::saveScript() +{ + scriptPtr->save("Prova.xml"); +} + +void FilterScriptDialog::openScript() +{ + scriptPtr->open("Prova.xml"); } diff --git a/src/meshlab/filterScriptDialog.h b/src/meshlab/filterScriptDialog.h index 3ea2bfe18..08d7eb1aa 100644 --- a/src/meshlab/filterScriptDialog.h +++ b/src/meshlab/filterScriptDialog.h @@ -23,6 +23,9 @@ /**************************************************************************** History $Log$ +Revision 1.2 2006/06/16 01:26:07 cignoni +Added Initial Filter Script Dialog + Revision 1.1 2006/06/15 13:05:57 cignoni added Filter History Dialogs @@ -41,6 +44,8 @@ public: private slots: void clearScript(); + void saveScript(); + void openScript(); private: Ui::scriptDialog ui; FilterScript *scriptPtr; diff --git a/src/meshlab/filterscript.cpp b/src/meshlab/filterscript.cpp index 09e721973..053eb7447 100644 --- a/src/meshlab/filterscript.cpp +++ b/src/meshlab/filterscript.cpp @@ -24,6 +24,9 @@ History $Log$ +Revision 1.2 2006/06/16 01:26:07 cignoni +Added Initial Filter Script Dialog + Revision 1.1 2006/06/15 13:05:57 cignoni added Filter History Dialogs @@ -39,8 +42,94 @@ added Filter History Dialogs #include "meshmodel.h" #include "interfaces.h" #include "glarea.h" +#include +#include +#include using namespace vcg; +bool FilterScript::save(QString filename) +{ + QDomDocument doc("FilterScript"); + QDomElement root = doc.createElement("FilterScript"); + doc.appendChild(root); + FilterScript::iterator ii; + for(ii=actionList.begin();ii!= actionList.end();++ii) + { + QDomElement tag = doc.createElement("filter"); + tag.setAttribute(QString("name"),(*ii).first); + FilterParameter &par=(*ii).second; + QMap::iterator jj; + for(jj=par.paramMap.begin();jj!=par.paramMap.end();++jj) + { + QDomElement parElem = doc.createElement("Param"); + parElem.setAttribute("name",jj.key()); + if(jj.value().type()==QVariant::Bool) { + parElem.setAttribute("type","Bool"); + if(jj.value().toBool())parElem.setAttribute("value","true"); + else parElem.setAttribute("value","true"); + } + + if(jj.value().type()==QVariant::Int) { + parElem.setAttribute("type","Int"); + parElem.setAttribute("value",jj.value().toInt()); + } + if(jj.value().type()==QVariant::Double) { + parElem.setAttribute("type","Float"); + parElem.setAttribute("value",jj.value().toString()); + } + + if(jj.value().type()==QVariant::List) { + parElem.setAttribute("type","Matrix44"); + QList matrixVals = jj.value().toList(); + for(int i=0;i<16;++i) + parElem.setAttribute(QString("val")+QString::number(i),matrixVals[i].toString()); + } + tag.appendChild(parElem); + } + root.appendChild(tag); + } + QFile file("Prova.xml"); + file.open(QIODevice::WriteOnly); + doc.save(QTextStream(&file),1); + file.close(); + return true; +} + +bool FilterScript::open(QString filename) +{ + QDomDocument doc; + actionList.clear(); + //if(filename.endsWith(".mlx")) + { + QFile file(filename); + if (file.open(QIODevice::ReadOnly) && doc.setContent(&file)) + { + file.close(); + QDomElement root = doc.documentElement(); + if (root.nodeName() == "FilterScript") + { + qDebug("FilterScript"); + for(QDomElement n = root.firstChildElement("filter"); !n.isNull(); n = n.nextSiblingElement("filter")) + { + QString name=n.attribute("name"); + qDebug("Reading filter with name %s",qPrintable(name)); + // actionList.append(qMakePair(filterName(n),filterPar(n))); + } + + } + } + } + return true; +} +// +//QString FilterScript::FilterName(QDomNode &n) +//{ +// +//} +//FilterParameter FilterScript::FilterPar(QDomNode &n) +//{ +// +//} \ No newline at end of file diff --git a/src/meshlab/filterscript.h b/src/meshlab/filterscript.h index 886596503..ed966752a 100644 --- a/src/meshlab/filterscript.h +++ b/src/meshlab/filterscript.h @@ -11,8 +11,8 @@ class FilterScript { public: - bool Open(QString filename); - bool Save(QString filename); + bool open(QString filename); + bool save(QString filename); QList< QPair< QString , FilterParameter> > actionList; typedef QList< QPair >::iterator iterator; diff --git a/src/meshlab/mainwindow.h b/src/meshlab/mainwindow.h index 951b09cb6..29106eb61 100644 --- a/src/meshlab/mainwindow.h +++ b/src/meshlab/mainwindow.h @@ -23,6 +23,9 @@ /**************************************************************************** History $Log$ +Revision 1.66 2006/06/16 01:26:07 cignoni +Added Initial Filter Script Dialog + Revision 1.65 2006/06/15 13:05:57 cignoni added Filter History Dialogs @@ -170,8 +173,9 @@ private: QStringList pluginFileNames; std::vector meshIOPlugins; QByteArray toolbarState; //stato delle toolbar e dockwidgets +public: QMap filterMap; // a map to retrieve an action from a name. Used for playing filter scripts. - +private: //////// ToolBars /////////////// QToolBar *mainToolBar; QToolBar *renderToolBar; diff --git a/src/meshlab/mainwindow_RunTime.cpp b/src/meshlab/mainwindow_RunTime.cpp index 51413b652..b09c6c23a 100644 --- a/src/meshlab/mainwindow_RunTime.cpp +++ b/src/meshlab/mainwindow_RunTime.cpp @@ -24,6 +24,9 @@ History $Log$ +Revision 1.100 2006/06/16 01:26:07 cignoni +Added Initial Filter Script Dialog + Revision 1.99 2006/06/15 13:05:57 cignoni added Filter History Dialogs @@ -594,9 +597,10 @@ void MainWindow::open(QString fileName) } vcg::tri::UpdateNormals::PerVertexNormalizedPerFace(mm->cm); updateMenus(); + GLA()->mm->busy=false; } - GLA()->mm->busy=false; + qb->reset(); } diff --git a/src/meshlab/meshlab.pro b/src/meshlab/meshlab.pro index 619c8c766..039af0105 100644 --- a/src/meshlab/meshlab.pro +++ b/src/meshlab/meshlab.pro @@ -1,9 +1,10 @@ HEADERS = interfaces.h \ - GLLogStream.h \ + GLLogStream.h \ mainwindow.h \ meshmodel.h \ glarea.h \ filterscript.h \ + filterparameter.h \ plugindialog.h \ customDialog.h \ filterScriptDialog.h \ @@ -45,7 +46,8 @@ RESOURCES = meshlab.qrc # to add windows icon RC_FILE = meshlab.rc -QT += opengl +QT += opengl +QT += xml # the following line is needed to avoid mismatch between # the awful min/max macros of windows and the limits max diff --git a/src/meshlab/meshmodel.h b/src/meshlab/meshmodel.h index 2f10939e7..eaf075ad7 100644 --- a/src/meshlab/meshmodel.h +++ b/src/meshlab/meshmodel.h @@ -23,6 +23,9 @@ /**************************************************************************** History $Log$ +Revision 1.24 2006/06/16 01:26:07 cignoni +Added Initial Filter Script Dialog + Revision 1.23 2006/06/07 08:49:25 cignoni Disable rendering during processing and loading @@ -154,6 +157,7 @@ public: } inline void restoreVertexColor() { + if(originalVertexColor.empty()) return; vector::iterator ci; CMeshO::VertexIterator vi; for(vi=cm.vert.begin(),ci=originalVertexColor.begin();vi!=cm.vert.end();++vi,++ci) diff --git a/src/meshlab/ui/filterScriptDialog.ui b/src/meshlab/ui/filterScriptDialog.ui index b09f74428..714c56212 100644 --- a/src/meshlab/ui/filterScriptDialog.ui +++ b/src/meshlab/ui/filterScriptDialog.ui @@ -8,75 +8,92 @@ 0 0 - 396 + 461 298 Dialog - - - - 20 - 250 - 351 - 33 - + + + 9 - - - 0 - - - 6 - - - - - Clear Script - - - - - - - Qt::Horizontal - - - - 131 - 31 - - - - - - - - Apply Script - - - - - - - Close - - - - - - - - - 20 - 10 - 351 - 231 - + + 6 - + + + + 0 + + + 6 + + + + + + + + 0 + + + 6 + + + + + Save Script + + + + + + + Open Script + + + + + + + Clear Script + + + + + + + Qt::Horizontal + + + + 131 + 31 + + + + + + + + Apply Script + + + + + + + Close + + + + + + + + diff --git a/src/sample/sub.mtl b/src/sample/sub.mtl index fe72c280b..13c20b0a0 100644 --- a/src/sample/sub.mtl +++ b/src/sample/sub.mtl @@ -2,8 +2,8 @@ newmtl Texture Ns 100 d 1 illum 2 - Ka .8 .8 .8 - Kd 0.2 0.2 0.2 + Kd .8 .8 .8 + Ka 0.2 0.2 0.2 Ks 0 0 0 map_Kd sub_texture.jpg map_Ka sub_texture.jpg