1
#ifndef XML_FILTER_INFO_H
2
#define XML_FILTER_INFO_H
5
#include<QtXmlPatterns/QAbstractMessageHandler>
8
class XMLMessageHandler : public QAbstractMessageHandler
12
: QAbstractMessageHandler(0)
16
inline QString statusMessage() const
21
inline int line() const
23
return m_sourceLocation.line();
26
inline int column() const
28
return m_sourceLocation.column();
32
inline void handleMessage(QtMsgType type, const QString &description,
33
const QUrl &identifier, const QSourceLocation &sourceLocation)
39
m_description = description;
40
m_sourceLocation = sourceLocation;
44
QtMsgType m_messageType;
45
QString m_description;
46
QSourceLocation m_sourceLocation;
49
namespace MLXMLElNames
51
const QString mfiTag("MESHLAB_FILTER_INTERFACE");
52
const QString pluginTag("PLUGIN");
53
const QString filterTag("FILTER");
54
const QString filterHelpTag("FILTER_HELP");
55
const QString paramTag("PARAM");
56
const QString paramHelpTag("PARAM_HELP");
58
const QString editTag("EDIT_GUI");
59
const QString checkBoxTag("CHECKBOX_GUI");
60
const QString absPercTag("ABSPERC_GUI");
64
const QString mfiVersion("mfiVersion");
66
const QString pluginScriptName("pluginName");
68
const QString filterName("filterName");
69
const QString filterScriptFunctName("filterFunction");
70
const QString filterClass("filterClass");
71
const QString filterPreCond("filterPre");
72
const QString filterPostCond("filterPost");
73
//filterHelp == name to access to the value of FILTER_HELP inside the Map produced by the XMLFilterInfo
74
//const QString filterHelp("f_help");
76
const QString paramType("parType");
77
const QString paramName("parName");
78
const QString paramDefExpr("parDefault");
79
const QString paramIsImportant("parIsImportant");
80
//paramHelp == name to access to the value of PARAM_HELP inside the Map produced by the XMLFilterInfo
81
//const QString paramHelp("p_help");
83
//guiType == name to access to the type of gui (ABSPERC_GUI, CHECKBOX_GUI etc.) inside the Map produced by the XMLFilterInfo
84
const QString guiType("guiType");
85
const QString guiLabel("guiLabel");
86
const QString guiMinExpr("guiMin");
87
const QString guiMaxExpr("guiMax");
89
//types' names inside the XML MeshLab file format
90
const QString boolType("Boolean");
91
const QString realType("Real");
92
const QString intType("Integer");
95
//Query Exception should be managed by the XMLFilterInfo class (XMLFilterInfo is the class devoted to compose queries)
96
//Parsing Exception instead should be managed by the code calling the XMLFilterInfo's functions.
97
//A Parsing Exception is raised every time an unexpected and/or missing tag or attribute in an XML has been encountered.
102
XMLFilterInfo(const QString& file)
105
static QString defaultGuiInfo(const QString& guiType,const QString& xmlvariable);
106
static QString floatGuiInfo(const QString& guiType,const QString& xmlvariable);
107
static QString guiErrorMsg() {return QString("Error: Unknown GUI widget requested");}
108
static QString guiTypeSwitchQueryText(const QString& var);
109
inline static QString doc(const QString& file) {return QString("doc(\"" + file + "\")");}
110
inline static QString docMFI(const QString& file) {return doc(file) + "/" + MLXMLElNames::mfiTag;}
111
inline static QString docMFIPlugin(const QString& file) {return docMFI(file) + "/" + MLXMLElNames::pluginTag;}
112
inline static QString docMFIPluginFilter(const QString& file) {return docMFIPlugin(file) + "/" + MLXMLElNames::filterTag;}
113
inline static QString docMFIPluginFilterName(const QString& file,const QString& fname) {return docMFIPluginFilter(file) + "[@" + MLXMLElNames::filterName + " = \"" + fname + "\"]";}
114
inline static QString docMFIPluginFilterParam(const QString& file) {return docMFIPluginFilter(file) + "/" + MLXMLElNames::paramTag;}
115
inline static QString docMFIPluginFilterParamName(const QString& file,const QString& pname) {return docMFIPluginFilterParam(file) + "[@" + MLXMLElNames::paramName + " = \"" + pname + "\"]";}
116
inline static QString docMFIPluginFilterNameParam(const QString& file,const QString& fname) {return docMFIPluginFilterName(file,fname) + "/" + MLXMLElNames::paramTag;}
117
inline static QString docMFIPluginFilterNameParamName(const QString& file,const QString& fname,const QString& pname) {return docMFIPluginFilterNameParam(file,fname) + "[@" + MLXMLElNames::paramName + " = \"" + pname + "\"]";}
118
inline static QString attrVal(const QString& attr,const QString& var = QString("")) {return QString("{data(" + var + "@" + attr + ")}");}
119
inline static QString attrNameAttrVal(const QString& attr,const QString& var = QString("")) {return QString(attr + "=" + attrVal(attr,var));}
123
typedef QMap<QString,QString> XMLMap;
124
typedef QList< XMLMap > XMLMapList;
125
static XMLMap mapFromString(const QString& st);
126
static XMLMapList mapListFromStringList(const QStringList& list);
127
static XMLFilterInfo* createXMLFileInfo(const QString& XMLFileName,const QString& XMLSchemaFileName,XMLMessageHandler& errXML);
128
inline static void deleteXMLFileInfo(XMLFilterInfo* xmlInfo) {delete xmlInfo;}
129
QStringList filterNames() const;
130
QString filterHelp(const QString& filterName) const;
132
//The function returns a QList<QMap<QString,QString>>. Each map contains "type", "name" and "defaultExpression" of a single parameter.
133
XMLMapList filterParameters(const QString& filterName) const;
134
XMLMapList filterParametersExtendedInfo( const QString& filterName) const;
135
QString filterAttribute(const QString& filterName,const QString& attribute) const;
137
QString filterParameterHelp(const QString& filterName,const QString& paramName) const;
138
XMLMap filterParameterGui(const QString& filter,const QString& parameter) const;
139
XMLMap filterParameterExtendedInfo(const QString& filter,const QString& parameter) const;
140
QString filterParameterAttribute(const QString& filterName,const QString& paramName,const QString& attribute) const;
142
QStringList query(const QString& qry) const;
145
class MeshLabFilterInterface;
147
struct MeshLabXMLFilterContainer
150
XMLFilterInfo* xmlInfo;
151
MeshLabFilterInterface* filterInterface;
b'\\ No newline at end of file'