Canorus  0.7
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
/home/iurt/rpm/BUILD/canorus-0.7.R1002/src/interface/pluginmanager.h
Go to the documentation of this file.
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_*/