mirror of
https://github.com/lucaspalomodevelop/meshlab.git
synced 2026-03-18 10:34:41 +00:00
added support for JSCode inside XML
This commit is contained in:
parent
feecd607b7
commit
93681f5b2e
@ -17,6 +17,8 @@
|
||||
<xs:element ref='FILTER' maxOccurs='unbounded'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='pluginName' type='xs:string' use='required'/>
|
||||
<xs:attribute name='pluginAuthor' type='xs:string' use='required'/>
|
||||
<xs:attribute name='pluginEmail' type='xs:string' use='required'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
@ -25,6 +27,7 @@
|
||||
<xs:sequence>
|
||||
<xs:element ref='FILTER_HELP'/>
|
||||
<xs:element ref='PARAM' minOccurs='0' maxOccurs='unbounded'/>
|
||||
<xs:element ref='FILTER_JSCODE' minOccurs='0' maxOccurs='1'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='filterName' type='xs:string' use='required'/>
|
||||
<xs:attribute name='filterFunction' type='xs:string' use='required'/>
|
||||
@ -39,7 +42,12 @@
|
||||
<xs:complexType mixed='true'>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
|
||||
<xs:element name='FILTER_JSCODE'>
|
||||
<xs:complexType mixed='true'>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='PARAM'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
@ -78,7 +86,7 @@
|
||||
<xs:complexType mixed='true'>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
|
||||
<xs:element name='CHECKBOX_GUI'>
|
||||
<xs:complexType>
|
||||
<xs:attribute name='guiLabel' type='xs:string' use='required'/>
|
||||
|
||||
@ -103,6 +103,25 @@ QString XMLFilterInfo::filterHelp( const QString& filterName) const
|
||||
return QString();
|
||||
}
|
||||
|
||||
QString XMLFilterInfo::filterElement( const QString& filterName,const QString& filterElement) const
|
||||
{
|
||||
//QString namesQuery = "doc(\"" + this->fileName + "\")/MESHLAB_FILTER_INTERFACE/PLUGIN/FILTER[@name = \"" + filterName + "\"]/FILTER_HELP/string()";
|
||||
QString namesQuery = docMFIPluginFilterName(fileName,filterName) + "/" + filterElement + "/string()";
|
||||
try
|
||||
{
|
||||
QStringList res = query(namesQuery);
|
||||
if (res.size() != 1)
|
||||
throw ParsingException("There is not help tag for filter " + filterName);
|
||||
return res[0];
|
||||
}
|
||||
catch(QueryException q)
|
||||
{
|
||||
qDebug("Caught a QueryException %s",q.what());
|
||||
}
|
||||
assert(0);
|
||||
return QString();
|
||||
}
|
||||
|
||||
|
||||
QString XMLFilterInfo::filterAttribute( const QString& filterName,const QString& attribute) const
|
||||
{
|
||||
@ -255,7 +274,7 @@ QString XMLFilterInfo::filterParameterHelp( const QString& filterName,const QStr
|
||||
XMLFilterInfo::XMLMap XMLFilterInfo::filterParameterExtendedInfo( const QString& filterName,const QString& paramName ) const
|
||||
{
|
||||
//QString namesQuery = "for $x in doc(\"" + this->fileName + "\")/MESHLAB_FILTER_INTERFACE/PLUGIN/FILTER[@name=\"" + filterName + "\"]/PARAM[@name=\"" + paramName + "\"] return <p>type={data($x/@type)}|name={data($x/@name)}|defaultExpression={data($x/@defaultExpression)}|help={$x/PARAM_HELP}</p>/string()";
|
||||
QString namesQuery = "for $x in " + docMFIPluginFilterNameParamName(fileName,filterName,paramName) + " return <p>" + attrNameAttrVal(MLXMLElNames::paramType,"$x/") + externalSep() + attrNameAttrVal(MLXMLElNames::paramName,"$x/") + externalSep() + attrNameAttrVal(MLXMLElNames::paramDefExpr,"$x/") + externalSep() + attrNameAttrVal(MLXMLElNames::paramIsImportant,"$x/") + externalSep() + MLXMLElNames::paramHelpTag + "={$x/" + MLXMLElNames::paramHelpTag + "}</p>/string()";
|
||||
QString namesQuery = "for $x in " + docMFIPluginFilterNameParamName(fileName,filterName,paramName) + " return <p>" + attrNameAttrVal(MLXMLElNames::paramType,"$x/") + externalSep() + attrNameAttrVal(MLXMLElNames::paramName,"$x/") + externalSep() + attrNameAttrVal(MLXMLElNames::paramDefExpr,"$x/") + externalSep() + attrNameAttrVal(MLXMLElNames::paramIsImportant,"$x/") + externalSep() + MLXMLElNames::paramHelpTag + "={$x/" + MLXMLElNames::paramHelpTag + "}";
|
||||
try
|
||||
{
|
||||
XMLFilterInfo::XMLMap res;
|
||||
@ -333,6 +352,26 @@ QString XMLFilterInfo::filterParameterAttribute( const QString& filterName,const
|
||||
return QString();
|
||||
}
|
||||
|
||||
QString XMLFilterInfo::pluginAttribute(const QString& attribute ) const
|
||||
{
|
||||
QString namesQuery = docMFIPlugin(fileName) + "/<p>" +attrVal(attribute)+"</p>/string()";
|
||||
try
|
||||
{
|
||||
QStringList res = query(namesQuery);
|
||||
if (res.size() != 1)
|
||||
throw ParsingException("Attribute " + attribute + " has not been specified for plugin.");
|
||||
return res[0];
|
||||
}
|
||||
catch(QueryException e)
|
||||
{
|
||||
qDebug("Caught a QueryException %s",e.what());
|
||||
}
|
||||
|
||||
assert(0);
|
||||
return QString();
|
||||
}
|
||||
|
||||
|
||||
QString XMLFilterInfo::pluginName() const
|
||||
{
|
||||
QString namesQuery = docMFIPlugin(fileName) + "/<p>" +attrVal(MLXMLElNames::pluginScriptName)+"</p>/string()";
|
||||
|
||||
@ -52,6 +52,8 @@ namespace MLXMLElNames
|
||||
const QString pluginTag("PLUGIN");
|
||||
const QString filterTag("FILTER");
|
||||
const QString filterHelpTag("FILTER_HELP");
|
||||
const QString filterJSCodeTag("FILTER_JSCODE");
|
||||
|
||||
const QString paramTag("PARAM");
|
||||
const QString paramHelpTag("PARAM_HELP");
|
||||
|
||||
@ -67,6 +69,8 @@ namespace MLXMLElNames
|
||||
const QString mfiVersion("mfiVersion");
|
||||
|
||||
const QString pluginScriptName("pluginName");
|
||||
const QString pluginAuthor("pluginAuthor");
|
||||
const QString pluginEmail("pluginEmail");
|
||||
|
||||
const QString filterName("filterName");
|
||||
const QString filterScriptFunctName("filterFunction");
|
||||
@ -146,9 +150,11 @@ public:
|
||||
inline static void deleteXMLFileInfo(XMLFilterInfo* xmlInfo) {delete xmlInfo;}
|
||||
|
||||
QString pluginName() const;
|
||||
QString pluginAttribute(const QString& attribute ) const;
|
||||
|
||||
QStringList filterNames() const;
|
||||
QString filterHelp(const QString& filterName) const;
|
||||
QString filterElement(const QString& filterName,const QString& filterElement) const;
|
||||
|
||||
//The function returns a QList<QMap<QString,QString>>. Each map contains "type", "name" and "defaultExpression" of a single parameter.
|
||||
XMLMapList filterParameters(const QString& filterName) const;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user