From a32c469ffbf5edeb8f2dd5507d4216d0184e6b32 Mon Sep 17 00:00:00 2001 From: Guido Ranzuglia granzuglia Date: Wed, 7 Sep 2011 13:54:33 +0000 Subject: [PATCH] added support for added support for meshes inside script system --- .../meshlabfilterXMLspecificationformat.xsd | 9 ++++++++- src/common/scriptinterface.cpp | 14 ++++++++++++++ src/common/scriptinterface.h | 2 ++ src/common/xmlfilterinfo.cpp | 9 ++------- src/common/xmlfilterinfo.h | 5 +++-- 5 files changed, 29 insertions(+), 10 deletions(-) diff --git a/src/common/script_system/meshlabfilterXMLspecificationformat.xsd b/src/common/script_system/meshlabfilterXMLspecificationformat.xsd index ffac23980..d395ba6d0 100644 --- a/src/common/script_system/meshlabfilterXMLspecificationformat.xsd +++ b/src/common/script_system/meshlabfilterXMLspecificationformat.xsd @@ -52,6 +52,7 @@ + @@ -61,8 +62,8 @@ - + @@ -124,6 +125,12 @@ + + + + + + diff --git a/src/common/scriptinterface.cpp b/src/common/scriptinterface.cpp index 938500b32..3b53a7fe2 100644 --- a/src/common/scriptinterface.cpp +++ b/src/common/scriptinterface.cpp @@ -410,6 +410,15 @@ Q_INVOKABLE MeshModelScriptInterface* MeshDocumentScriptInterface::current() return NULL; } +Q_INVOKABLE int MeshDocumentScriptInterface::currentId() +{ + MeshModel* model = md->mm(); + if (model != NULL) + return model->id(); + else + return -1; +} + Q_INVOKABLE int MeshDocumentScriptInterface::setCurrent(const int meshId) { int id = md->mm()->id(); @@ -503,6 +512,11 @@ int EnvWrap::evalEnum( const QString& nm ) return evalInt(nm); } +int EnvWrap::evalMesh(const QString& nm) +{ + return evalInt(nm); +} + QColor EnvWrap::evalColor( const QString& nm ) { QScriptValue result = evalExp(nm); diff --git a/src/common/scriptinterface.h b/src/common/scriptinterface.h index 77da57385..c9903677f 100644 --- a/src/common/scriptinterface.h +++ b/src/common/scriptinterface.h @@ -73,6 +73,7 @@ public: Q_INVOKABLE MeshModelScriptInterface* getMesh(const int meshId); Q_INVOKABLE MeshModelScriptInterface* current(); + Q_INVOKABLE int currentId(); Q_INVOKABLE int setCurrent(const int meshId); MeshDocument* md; }; @@ -148,6 +149,7 @@ public: /*QString getExpType(const QString& nm);*/ QString evalString(const QString& nm); int evalEnum( const QString& nm ); + int evalMesh(const QString& nm); }; QScriptValue EnvWrap_ctor(QScriptContext* c,QScriptEngine* e); diff --git a/src/common/xmlfilterinfo.cpp b/src/common/xmlfilterinfo.cpp index c1d16c977..5c4cc1299 100644 --- a/src/common/xmlfilterinfo.cpp +++ b/src/common/xmlfilterinfo.cpp @@ -52,12 +52,6 @@ QString XMLFilterInfo::floatGuiInfo(const QString& guiType,const QString& xmlvar return defaultGuiInfo(guiType,xmlvariable) + externalSep() + MLXMLElNames::guiMinExpr + "={data(" + xmlvariable + "/@" + MLXMLElNames::guiMinExpr + ")}" + externalSep() + MLXMLElNames::guiMaxExpr + "={data(" + xmlvariable + "/@" + MLXMLElNames::guiMaxExpr + ")}"; } -QString XMLFilterInfo::enumGuiInfo( const QString& guiType,const QString& xmlvariable ) -{ - return defaultGuiInfo(guiType,xmlvariable) + externalSep() + MLXMLElNames::guiValuesList + "={data(" + xmlvariable + "/@" + MLXMLElNames::guiValuesList + ")}"; - -} - QString XMLFilterInfo::guiTypeSwitchQueryText(const QString& var) { QString base("typeswitch(" + var + ")"); @@ -68,8 +62,9 @@ QString XMLFilterInfo::guiTypeSwitchQueryText(const QString& var) QString caseCOLOR("case element (" + MLXMLElNames::colorWidgetTag + ") return

" + defaultGuiInfo(MLXMLElNames::colorWidgetTag,var) + "

/string()"); QString caseSLIDER("case element (" + MLXMLElNames::sliderWidgetTag + ") return

" + floatGuiInfo(MLXMLElNames::sliderWidgetTag,var) + "

/string()"); QString caseENUM("case element (" + MLXMLElNames::enumWidgetTag + ") return

" + defaultGuiInfo(MLXMLElNames::enumWidgetTag,var) + "

/string()"); + QString caseMESH("case element (" + MLXMLElNames::meshWidgetTag + ") return

" + defaultGuiInfo(MLXMLElNames::meshWidgetTag,var) + "

/string()"); QString errorMsg = "default return \"" + XMLFilterInfo::guiErrorMsg() + "\""; - return base + " " + caseABS + " " + caseBOOL + " " + caseEDIT + " " + caseVEC + " " + caseCOLOR + " " + caseSLIDER + " " + caseENUM + " " + errorMsg; + return base + " " + caseABS + " " + caseBOOL + " " + caseEDIT + " " + caseVEC + " " + caseCOLOR + " " + caseSLIDER + " " + caseENUM + " " + caseMESH + " " + errorMsg; } QStringList XMLFilterInfo::filterNames() const diff --git a/src/common/xmlfilterinfo.h b/src/common/xmlfilterinfo.h index 26efbbf3c..59521404f 100644 --- a/src/common/xmlfilterinfo.h +++ b/src/common/xmlfilterinfo.h @@ -62,7 +62,8 @@ namespace MLXMLElNames const QString colorWidgetTag("COLOR_GUI"); const QString sliderWidgetTag("SLIDER_GUI"); const QString enumWidgetTag("ENUM_GUI"); - + const QString meshWidgetTag("MESH_GUI"); + const QString mfiVersion("mfiVersion"); const QString pluginScriptName("pluginName"); @@ -98,6 +99,7 @@ namespace MLXMLElNames const QString vec3Type("Vec3"); const QString colorType("Color"); const QString enumType("Enum"); + const QString meshType("Mesh"); //ariety values const QString singleMeshAriety("SingleMesh"); @@ -117,7 +119,6 @@ private: static QString defaultGuiInfo(const QString& guiType,const QString& xmlvariable); static QString floatGuiInfo(const QString& guiType,const QString& xmlvariable); - static QString enumGuiInfo(const QString& guiType,const QString& xmlvariable); static QString guiErrorMsg() {return QString("Error: Unknown GUI widget requested");} static QString guiTypeSwitchQueryText(const QString& var); inline static const QString externalSep() {return QString("^");}