00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef KIPI_PLUGINLOADER_H
00025 #define KIPI_PLUGINLOADER_H
00026
00027
00028
00029 #include <qwidget.h>
00030 #include <qscrollview.h>
00031
00032
00033
00034 #include "libkipi/interface.h"
00035 #include "libkipi/libkipi_export.h"
00036
00037 namespace KIPI
00038 {
00039 class Plugin;
00040 class Interface;
00041 class ConfigWidget;
00042
00043 class LIBKIPI_EXPORT PluginLoader :public QObject
00044 {
00045 Q_OBJECT
00046
00047 public:
00048
00049 class LIBKIPI_EXPORT Info
00050 {
00051
00052 public:
00053
00054 Info( const QString& name, const QString& comment, const QString& library, bool shouldLoad );
00055 ~Info();
00056
00057 QString name() const;
00058
00059 QString comment() const;
00060
00061 QString library() const;
00062
00063 Plugin* plugin() const;
00064 void setPlugin(Plugin*);
00065
00066 bool shouldLoad() const;
00067 void setShouldLoad(bool);
00068
00069 private:
00070
00071 struct Private;
00072 Private* d;
00073 };
00074
00075 PluginLoader( const QStringList& ignores, Interface* interface );
00076 virtual ~PluginLoader();
00077 void loadPlugins();
00078 static PluginLoader* instance();
00079 ConfigWidget* configWidget( QWidget* parent );
00080
00081 typedef QValueList<Info*> PluginList;
00082
00083 const PluginList& pluginList();
00084
00085 void loadPlugin( Info* );
00086
00087 signals:
00088
00089 void plug( KIPI::PluginLoader::Info* );
00090 void unplug( KIPI::PluginLoader::Info* );
00091 void replug();
00092
00093 private:
00094
00095 friend class ConfigWidget;
00096 friend class PluginCheckBox;
00097
00098 struct Private;
00099 Private* d;
00100 };
00101
00102 class LIBKIPI_EXPORT ConfigWidget :public QScrollView
00103 {
00104 Q_OBJECT
00105
00106 public:
00107
00108 ConfigWidget( QWidget* parent );
00109 ~ConfigWidget();
00110
00111 public slots:
00112
00113 void apply();
00114
00115 private:
00116
00117 struct Private;
00118 Private* d;
00119 };
00120 }
00121
00122 #endif