Canorus  0.7
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
pluginmanager.h
Go to the documentation of this file.
1 
9 #ifndef PLUGINMANAGER_H_
10 #define PLUGINMANAGER_H_
11 
12 #include <QString>
13 #include <QMultiHash>
14 #include <QXmlDefaultHandler>
15 #include <QStack>
16 
17 class CAMainWin;
18 class CADocument;
19 class CAPlugin;
20 class CAPluginAction;
21 
22 class QEvent;
23 class QPoint;
24 
26 public:
27  CAPluginManager(CAMainWin *mainWin, CAPlugin *plugin);
29 
30  static void readPlugins();
31  static bool enablePlugin(CAPlugin* plugin, CAMainWin *mainWin);
32  static bool enablePlugins(CAMainWin *mainWin);
33  static bool disablePlugin(CAPlugin* plugin);
34  static bool disablePlugins();
35 
36  static void action(QString onAction, CADocument *document, QEvent *evt, QPoint *coords, CAMainWin *mainWin);
37  static bool exportFilterExists(const QString filter) { return _exportFilterMap.contains(filter); }
38  static void exportAction(QString filter, CADocument *document, QString filename);
39  static bool importFilterExists(const QString filter) { return _importFilterMap.contains(filter); }
40  static void importAction(QString filter, CADocument *document, QString filename);
41 
42  static bool installPlugin(QString path);
43  static bool removePlugin(CAPlugin* plugin);
44 
45  static const QList<CAPlugin*> pluginList() { return _pluginList; };
46 
47  // XML parser functions:
48  bool startElement(const QString& namespaceURI, const QString& localName, const QString& qName,
49  const QXmlAttributes& attributes);
50  bool endElement(const QString& namespaceURI, const QString& localName,
51  const QString& qName);
52  bool fatalError(const QXmlParseException& exception);
53  bool characters(const QString& ch);
54 
55 private:
56  static QList<CAPlugin*> _pluginList;
57  static QMultiHash<QString, CAPlugin* > _actionMap;
58  static QHash<QString, CAPluginAction* > _exportFilterMap;
59  static QHash<QString, CAPluginAction* > _importFilterMap;
60 
61  // non-static members needed while parsing plugin's descriptor file:
63  QString _curChars;
64  QStack<QString> _tree;
65 
69 
70  // <action> tag:
71  QHash<QString, QString> _curActionText; // List of actions LOCALE texts
72  QString _curActionName;
73  QString _curActionLocale; // Temporary lang
79  QList<QString> _curActionArgs;
80 
81  // <menu> tag:
82  QString _curMenuName;
83  QHash<QString, QString> _curMenuTitle; // List of menus LOCALE titles
84  QString _curMenuLocale; // Temporary lang
85  QString _curMenuParentMenu; // Parent menu of the menu
86 };
87 #endif /*PLUGINMANAGER_H_*/