|
Canorus
0.7
|
00001 00009 #ifndef PLUGINMANAGER_H_ 00010 #define PLUGINMANAGER_H_ 00011 00012 #include <QString> 00013 #include <QMultiHash> 00014 #include <QXmlDefaultHandler> 00015 #include <QStack> 00016 00017 class CAMainWin; 00018 class CADocument; 00019 class CAPlugin; 00020 class CAPluginAction; 00021 00022 class QEvent; 00023 class QPoint; 00024 00025 class CAPluginManager : public QXmlDefaultHandler { 00026 public: 00027 CAPluginManager(CAMainWin *mainWin, CAPlugin *plugin); 00028 ~CAPluginManager(); 00029 00030 static void readPlugins(); 00031 static bool enablePlugin(CAPlugin* plugin, CAMainWin *mainWin); 00032 static bool enablePlugins(CAMainWin *mainWin); 00033 static bool disablePlugin(CAPlugin* plugin); 00034 static bool disablePlugins(); 00035 00036 static void action(QString onAction, CADocument *document, QEvent *evt, QPoint *coords, CAMainWin *mainWin); 00037 static bool exportFilterExists(const QString filter) { return _exportFilterMap.contains(filter); } 00038 static void exportAction(QString filter, CADocument *document, QString filename); 00039 static bool importFilterExists(const QString filter) { return _importFilterMap.contains(filter); } 00040 static void importAction(QString filter, CADocument *document, QString filename); 00041 00042 static bool installPlugin(QString path); 00043 static bool removePlugin(CAPlugin* plugin); 00044 00045 static const QList<CAPlugin*> pluginList() { return _pluginList; }; 00046 00047 // XML parser functions: 00048 bool startElement(const QString& namespaceURI, const QString& localName, const QString& qName, 00049 const QXmlAttributes& attributes); 00050 bool endElement(const QString& namespaceURI, const QString& localName, 00051 const QString& qName); 00052 bool fatalError(const QXmlParseException& exception); 00053 bool characters(const QString& ch); 00054 00055 private: 00056 static QList<CAPlugin*> _pluginList; 00057 static QMultiHash<QString, CAPlugin* > _actionMap; 00058 static QHash<QString, CAPluginAction* > _exportFilterMap; 00059 static QHash<QString, CAPluginAction* > _importFilterMap; 00060 00061 // non-static members needed while parsing plugin's descriptor file: 00062 CAMainWin *_mainWin; 00063 QString _curChars; 00064 QStack<QString> _tree; 00065 00066 CAPlugin *_curPlugin; 00067 QString _curPluginCanorusVersion; 00068 QString _curPluginLocale; 00069 00070 // <action> tag: 00071 QHash<QString, QString> _curActionText; // List of actions LOCALE texts 00072 QString _curActionName; 00073 QString _curActionLocale; // Temporary lang 00074 QString _curActionOnAction; 00075 QHash<QString,QString> _curActionExportFilter, _curActionImportFilter; 00076 QString _curActionParentMenu, _curActionParentToolbar; 00077 bool _curActionRefresh; 00078 QString _curActionLang, _curActionFunction, _curActionFilename; 00079 QList<QString> _curActionArgs; 00080 00081 // <menu> tag: 00082 QString _curMenuName; 00083 QHash<QString, QString> _curMenuTitle; // List of menus LOCALE titles 00084 QString _curMenuLocale; // Temporary lang 00085 QString _curMenuParentMenu; // Parent menu of the menu 00086 }; 00087 #endif /*PLUGINMANAGER_H_*/
1.8.0