interfaces
iplugin.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef IPLUGIN_H
00023 #define IPLUGIN_H
00024
00025 #include <QtCore/QObject>
00026 #include <kxmlguiclient.h>
00027
00028 #include <QtCore/QList>
00029 #include <QtCore/QPointer>
00030 #include <QtCore/QPair>
00031 #include <QtDesigner/QExtensionManager>
00032 #include "interfacesexport.h"
00033
00034 class KIconLoader;
00035 class QAction;
00036
00042 #define KDEVELOP_PLUGIN_VERSION 6
00043
00049 #define KDEV_USE_EXTENSION_INTERFACE( Extension ) \
00050 addExtension( Q_TYPEID( Extension ) );
00051
00052 namespace KDevelop
00053 {
00054
00055 class ICore;
00056 class Context;
00057 class ContextMenuExtension;
00058
00133 class KDEVPLATFORMINTERFACES_EXPORT IPlugin: public QObject, public KXMLGUIClient
00134 {
00135 Q_OBJECT
00136
00137 public:
00142 IPlugin(const KComponentData &instance, QObject *parent);
00143
00145 virtual ~IPlugin();
00146
00150 Q_SCRIPTABLE virtual void unload();
00151
00156 Q_SCRIPTABLE KIconLoader* iconLoader() const;
00157
00158 Q_SCRIPTABLE ICore *core() const;
00159
00160 Q_SCRIPTABLE void registerExtensions();
00161 Q_SCRIPTABLE void unregisterExtensions();
00162
00163 Q_SCRIPTABLE QStringList extensions() const;
00164
00165 template<class Extension> Extension* extension()
00166 {
00167 return qt_extension<Extension*>( extensionManager(), this );
00168 }
00169
00176 virtual ContextMenuExtension contextMenuExtension( KDevelop::Context* context );
00177
00178 public Q_SLOTS:
00182 void newIconLoader() const;
00183
00184 protected:
00185 void addExtension( const QString& );
00186
00190 virtual void initializeGuiState();
00191
00192 private:
00193 Q_PRIVATE_SLOT(d, void _k_guiClientAdded(KXMLGUIClient *))
00194 Q_PRIVATE_SLOT(d, void _k_updateState())
00195
00196 friend class IPluginPrivate;
00197 class IPluginPrivate* const d;
00198 QExtensionManager* extensionManager();
00199 };
00200
00201 }
00202 #endif
00203