00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef PLUGIN_H
00027 #define PLUGIN_H
00028
00029 #include <avogadro/global.h>
00030
00031 #include <QObject>
00032 #include <QSettings>
00033
00034 namespace Avogadro {
00035
00045
00046
00047
00048
00049
00050
00051
00052
00053 class A_EXPORT Plugin : public QObject
00054 {
00055 Q_OBJECT
00056
00057 public:
00058 enum Type
00059 {
00060 EngineType = 0,
00061 ToolType,
00062 ExtensionType,
00063 ColorType,
00064 OtherType,
00065 TypeCount
00066 };
00067
00068 public:
00072 Plugin(QObject *parent = NULL);
00073
00077 virtual ~Plugin();
00078
00082 virtual Plugin::Type type() const = 0;
00083
00087 virtual QString identifier() const = 0;
00088
00092 virtual QString name() const = 0;
00093
00097 virtual QString description() const;
00098
00104 virtual QString license() const;
00105
00110 virtual QWidget *settingsWidget();
00111
00115 virtual void writeSettings(QSettings &settings) const;
00116
00120 virtual void readSettings(QSettings &settings);
00121
00122 protected:
00123
00124 };
00125
00132 class A_EXPORT PluginFactory
00133 {
00134 public:
00138 virtual ~PluginFactory() {}
00139
00143 virtual Plugin *createInstance(QObject *parent=0) = 0;
00144
00148 virtual Plugin::Type type() const = 0;
00149
00153 virtual QString identifier() const = 0;
00154
00158 virtual QString name() const = 0;
00159
00163 virtual QString description() const = 0;
00164 };
00165
00166 }
00167
00168 Q_DECLARE_METATYPE(Avogadro::Plugin*)
00169 Q_DECLARE_INTERFACE(Avogadro::PluginFactory,
00170 "net.sourceforge.avogadro.pluginfactory/1.4")
00171
00172 #endif