/**************************************************************************** * MeshLab o o * * A versatile mesh processing toolbox o o * * _ O _ * * Copyright(C) 2005 \/)\/ * * Visual Computing Lab /\/| * * ISTI - Italian National Research Council | * * \ * * All rights reserved. * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License (http://www.gnu.org/licenses/gpl.txt) * * for more details. * * * ****************************************************************************/ #ifndef PLUGINMANAGER_H #define PLUGINMANAGER_H #include "interfaces.h" #include "xmlfilterinfo.h" #include "scriptinterface.h" #include "scriptsyntax.h" #include #include class QScriptEngine; /** \brief This class provides the basic tools for managing all the plugins. It is used by both meshlab and meshlab server. */ class PluginManager { private: QString scriptplugcode; public: PluginManager(); ~PluginManager(); enum TypeIO{IMPORT,EXPORT}; void loadPlugins(RichParameterSet& defaultGlobal); QString pluginsCode() const; MLXMLPluginInfo* loadXMLPlugin(const QString& filename); //MLXMLPluginInfo* getXMLPluginInfo( const QString& plugname ); void deleteXMLPlugin(const QString& plugscriptname); inline QVector& meshIOPlugins() {return meshIOPlug;} inline QVector& meshFilterPlugins() {return meshFilterPlug;} inline QVector& meshRenderPlugins() {return meshRenderPlug;} inline QVector& meshDecoratePlugins() {return meshDecoratePlug;} inline QVector& meshEditFactoryPlugins() {return meshEditInterfacePlug;} inline QVector& meshlabXMLfilterPlugins() {return meshlabXMLFilterPlug;} void knownIOFormats(); static QString getDefaultPluginDirPath(); //static QString getLocalPluginDirPath(); static QString getBaseDirPath(); QMap generateFilterParameterMap(); MeshDecorateInterface* getDecoratorInterfaceByName(const QString& name); QDir pluginsDir; QMap actionFilterMap; QMap stringFilterMap; //QMap xmlActionFilterMap; QMap stringXMLFilterMap; QMap allKnowInputFormats; QMap allKnowOutputFormats; QStringList inpFilters; QStringList outFilters; //QMap filterXMLFileMap; QVector meshIOPlug; QVector meshFilterPlug; QVector meshRenderPlug; QVector meshDecoratePlug; QVector meshEditInterfacePlug; //only useful for an easy destruction of the MLXMLPluginInfos QVector xmlpluginfo; QVector meshlabXMLFilterPlug; QVector editActionList; QVector decoratorActionList; QStringList pluginsLoaded; static QString osDependentFileBaseName(const QString& plname); static QString osIndependentPluginName(const QString& plname); //highlight and autocomplete /*QStringList pluginnamespaces; QStringList filterscriptnames;*/ QList libinfolist; }; #endif // PLUGINMANAGER_H