~ubuntu-branches/ubuntu/vivid/meshlab/vivid

« back to all changes in this revision

Viewing changes to meshlab/src/common/xmlfilterinfo.h

  • Committer: Bazaar Package Importer
  • Author(s): Teemu Ikonen
  • Date: 2011-03-28 17:54:11 UTC
  • mfrom: (1.1.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20110328175411-ntj9e50d1yl0luzb
Tags: 1.3.0a+dfsg1-1
* New upstream version (closes: #618522)
* Repackage the upstream sources to get rid of some files with questionable
  licensing information and useless libraries, see the copyright file for
  details.
* Builds with GCC-4.5 (closes: #565034)
* Fix watch-file to work with new upstream names and dfsg source
  (closes: #582477)
* Require debhelper version 8 or above.
* control:
  - Update standards-version to 3.9.1, cleanup.
  - Remove build-dep to libgl-dev to fix a lintian warning about a
    build-dep to a virtual package.
  - Remove build-dep to asciidoc, add build-dep to libeigen2-dev.
* rules:
  - Remove manpage-related code.
  - Build the necessary code from meshlab/src/external. Also clean it.
  - Override dh_shlibdeps to include /usr/lib/meshlab in search path.
  - Don't install shader licenses.
* install: Install binaries from meshlab/src/distrib.
* copyright: Update to the latest DEP5 format, document changes due to
  source repackaging and add the copyright info for the files added in
  this upstream release.
* Hardcode shadersDir and pluginDir in upstream source to locations
  in the Debian binary package.
* Use source format '3.0 (quilt)'.
* Split changes affecting upstream code to branches in the git repository
  at git.d.o. Add DEP3 patch metadata headers to debian/metapatches and
  generate patches from git branches with gdp (http://gitorious.org/gdp).
  Current patches:
  - 01_muparser: Use Debian muparser.
  - 02_qhull: Use Debian qhull.
  - 03_lib3ds: Use Debian lib3ds.
  - 04_libbz2: Use Debian libbz2.
  - 05_glew: Use Debian GLEW.
  - 06_eigen: Use Debian Eigen.
  - 07_disable-updates: Disable checking for updates on startup.
  - 08_externals: Only build necessary external sources.
  - 09_rpath: Use /usr/lib/meshlab as RPATH in binaries.
  - 10_shadersdir: Hardcode shadersDir to the correct path in Debian
  - 11_pluginsdir: Hardcode pluginsDir to the correct path in Debian
* Add a README.source file documenting the patch generation.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#ifndef XML_FILTER_INFO_H
 
2
#define XML_FILTER_INFO_H
 
3
 
 
4
#include<QStringList>
 
5
#include<QtXmlPatterns/QAbstractMessageHandler>
 
6
#include<QAction>
 
7
 
 
8
class XMLMessageHandler : public QAbstractMessageHandler
 
9
{
 
10
public:
 
11
        XMLMessageHandler()
 
12
                : QAbstractMessageHandler(0)
 
13
        {
 
14
        }
 
15
 
 
16
        inline QString statusMessage() const
 
17
        {
 
18
                return m_description;
 
19
        }
 
20
 
 
21
        inline int line() const
 
22
        {
 
23
                return m_sourceLocation.line();
 
24
        }
 
25
 
 
26
        inline int column() const
 
27
        {
 
28
                return m_sourceLocation.column();
 
29
        }
 
30
 
 
31
protected:
 
32
        inline void handleMessage(QtMsgType type, const QString &description,
 
33
                const QUrl &identifier, const QSourceLocation &sourceLocation)
 
34
        {
 
35
                Q_UNUSED(type);
 
36
                Q_UNUSED(identifier);
 
37
 
 
38
                m_messageType = type;
 
39
                m_description = description;
 
40
                m_sourceLocation = sourceLocation;
 
41
        }
 
42
 
 
43
private:
 
44
        QtMsgType m_messageType;
 
45
        QString m_description;
 
46
        QSourceLocation m_sourceLocation;
 
47
};
 
48
 
 
49
namespace MLXMLElNames
 
50
{
 
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");
 
57
        
 
58
        const QString editTag("EDIT_GUI");
 
59
        const QString checkBoxTag("CHECKBOX_GUI");
 
60
        const QString absPercTag("ABSPERC_GUI");
 
61
        
 
62
 
 
63
 
 
64
        const QString mfiVersion("mfiVersion");
 
65
 
 
66
        const QString pluginScriptName("pluginName");
 
67
 
 
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");
 
75
        
 
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");
 
82
 
 
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");
 
88
 
 
89
        //types' names inside the XML MeshLab file format
 
90
        const QString boolType("Boolean");
 
91
        const QString realType("Real");
 
92
        const QString intType("Integer");
 
93
}
 
94
 
 
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. 
 
98
 
 
99
class XMLFilterInfo
 
100
{
 
101
private:
 
102
        XMLFilterInfo(const QString& file)
 
103
                :fileName(file){}
 
104
 
 
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));}
 
120
        QString fileName;
 
121
public:
 
122
 
 
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;
 
131
        
 
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;
 
136
 
 
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;
 
141
 
 
142
        QStringList query(const QString& qry) const;
 
143
};
 
144
 
 
145
class MeshLabFilterInterface;
 
146
 
 
147
struct MeshLabXMLFilterContainer
 
148
{
 
149
        QAction* act;
 
150
        XMLFilterInfo* xmlInfo;
 
151
        MeshLabFilterInterface* filterInterface;
 
152
};
 
153
 
 
154
#endif
 
 
b'\\ No newline at end of file'