pluginmanager.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007 #ifndef _PLUGIN_MANAGER_
00008 #define _PLUGIN_MANAGER_
00009
00010 #include <QObject>
00011 #include <QString>
00012 #include <QMap>
00013
00014 class QEvent;
00015
00016 #include "scribusapi.h"
00017
00018 class ScribusDoc;
00019 class ScribusMainWindow;
00020 class ScPlugin;
00021 class ScActionPlugin;
00022 class ScPersistentPlugin;
00023 class PrefsContext;
00024
00034 class SCRIBUS_API PluginManager : public QObject
00035 {
00036
00037 Q_OBJECT
00038
00039 public:
00040
00041 PluginManager();
00042 ~PluginManager();
00043
00047 static void* loadDLL( QString plugin );
00048 static void* resolveSym( void* plugin, const char* sym );
00049 static void unloadDLL( void* plugin );
00050
00059 void initPlugs();
00060
00064 bool setupPluginActions(ScribusMainWindow*);
00065
00066
00073 bool DLLexists(QString pluginName, bool includeDisabled = false) const;
00074
00081 ScPlugin* getPlugin(const QString & pluginName, bool includeDisabled) const;
00082
00084 void cleanupPlugins();
00085
00087 void savePreferences();
00088
00090 static QString platformDllExtension();
00091
00093 static int platformDllSearchFlags();
00094
00098 static PluginManager & instance();
00099
00102 const QString getPluginPath(const QString & pluginName) const;
00103
00106 bool & enableOnStartup(const QString & pluginName);
00107
00109 bool enabled(const QString & pluginName);
00110
00125 QStringList pluginNames(bool includeDisabled = false,
00126 const char* inherits = 0) const;
00127
00128 virtual void changeEvent(QEvent *e);
00129
00130 public slots:
00131
00132 void languageChange();
00133
00134 protected:
00135
00154 struct PluginData
00155 {
00156 QString pluginFile;
00157 QString pluginName;
00158 void* pluginDLL;
00159 ScPlugin* plugin;
00160 bool enableOnStartup;
00161 bool enabled;
00162 };
00163
00173 int initPlugin(const QString fileName);
00174
00176 bool loadPlugin(PluginData & pluginData);
00177
00179 static QString getPluginName(QString fileName);
00180
00184 void enablePlugin(PluginData &);
00185
00189 void disablePlugin(PluginData & pda);
00190
00192 QString callDLLForNewLanguage(const PluginData & pluginData);
00193
00199 void finalizePlug(PluginData & pda);
00200
00202 PrefsContext* prefs;
00203
00205 typedef QMap<QString,PluginData> PluginMap;
00206
00210 PluginMap pluginMap;
00211 };
00212
00213 #endif