class KTextEditor.Plugin


Table of contents
Modules
ktexteditor Classes
All Classes
Module ktexteditor
Namespace ktexteditor
Class KTextEditor.Plugin
Inherits QObject

KTextEditor Plugin interface.

Topics: - plugin_intro - plugin_config - plugin_sessions - plugin_arch

Introduction

The Plugin class provides methods to create loadable plugins for all KTextEditor implementations. A plugin can handle several documents and views. For every document the plugin should handle addDocument() is called and for every view addView().

Configuration Management

If your plugin supports a config dialog overwrite configDialogSupported() and return true (The default implementation returns false and indicates that the plugin does not support a config dialog). The config dialog can be shown by calling configDialog(), it can also be called from a KTextEditor implementation (e.g. the KTextEditor implementation might have a listview that shows all available plugins along with a Configure... button). To save or load plugin settings writeConfig() and readConfig() is called by the Editor part. Usually you do not have to call readConfig() and writeConfig() yourself.

Session Management

As an extension a Plugin can implement the SessionConfigInterface. This interface provides functions to read and write session related settings. If you have session dependant data additionally derive your Plugin from this interface and implement the session related functions, for example:

class MyPlugin : public KTextEditor.Plugin,
public KTextEditor.SessionConfigInterface
{
Q_OBJECT
Q_INTERFACES(KTextEditor.SessionConfigInterface)

// ... virtual void readSessionConfig (KConfig *config); virtual void writeSessionConfig (KConfig *config); };

Plugin Architecture

After the plugin is loaded the editor implementation should first call readConfig() with a given KConfig object. After this it will call addDocument() and addView() for all documents and views the plugin should handle. If your plugin has a GUI it is common to add an extra class, like:

class PluginView : public QObject, public KXMLGUIClient
{
Q_OBJECT
public:
// Constructor and other methods
PluginView( KTextEditor.View* view )
: QObject( view ), KXMLGUIClient( view ), m_view( view )
{ ... }
// ...
private:
KTextEditor.View* m_view;
};
Your KTextEditor.Plugin derived class then will create a new PluginView for every View, i.e. for every call of addView().

The method removeView() will be called whenever a View is removed/closed. If you have a PluginView for every view this is the place to remove it.

See also KTextEditor.Editor, KTextEditor.Document, KTextEditor.View, KTextEditor.SessionConfigInterface Author Christoph Cullmann \



methods