Scribus Developer Documentation - API
logo-pen

Scribus Developer Documentation - API

pluginmanager.h

Go to the documentation of this file.
00001 /*
00002 For general Scribus (>=1.3.2) copyright and licensing information please refer
00003 to the COPYING file provided with the program. Following this notice may exist
00004 a copyright and/or license notice that predates the release of Scribus 1.3.2
00005 for which a new license (GPL+exception) is in place.
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; // Datei;
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
Created with personalized Doxygen. This is documentation for GPL software Scribus - Open Source Desktop Publishing.