libKipi
KIPI::PluginLoader Class Reference

#include <pluginloader.h>

Inheritance diagram for KIPI::PluginLoader:
Inheritance graph
Collaboration diagram for KIPI::PluginLoader:
Collaboration graph

Classes

class  Info
 
struct  Private
 

Public Types

typedef QValueList< Info * > PluginList
 

Signals

void plug (KIPI::PluginLoader::Info *)
 
void unplug (KIPI::PluginLoader::Info *)
 
void replug ()
 

Public Member Functions

 PluginLoader (const QStringList &ignores, Interface *interface)
 
virtual ~PluginLoader ()
 
void loadPlugins ()
 
ConfigWidgetconfigWidget (QWidget *parent)
 
const PluginListpluginList ()
 
void loadPlugin (Info *)
 

Static Public Member Functions

static PluginLoaderinstance ()
 

Friends

class ConfigWidget
 
class PluginCheckBox
 

Detailed Description

Author
Renchi Raju

This is the class that will help host applications to load plugins.

The host application must create an instance of the plugin loader, and call the method loadPlugins() to get the plugins loaded. To ensure that plugins are correctly removed from menus and toolbars when loaded and unloaded after constructions, the application must connect to either the signals plug() / unplug() or the signal replug(). These signals are emitted when a plugin is to be inserted into the menus.

If your application is using XMLGUI, the easiest way to get the plugins inserted into the menus is by adding an item in the ui.rc file looking list this: <ActionList name="image_actions"/>

Then plugin plugins into menus could be done with code similar to this from KPhotoAlbum:

void slotReplug() {
unplugActionList( QString::fromLatin1("file_actions") );
unplugActionList( QString::fromLatin1("image_actions") );
unplugActionList( QString::fromLatin1("tool_actions") );
QPtrList<KAction> fileActions;
QPtrList<KAction> imageActions;
QPtrList<KAction> toolsActions;
KIPI::PluginLoader::PluginList list = _pluginLoader->pluginList();
for( KIPI::PluginLoader::PluginList::Iterator it = list.begin(); it != list.end(); ++it ) {
KIPI::Plugin* plugin = (*it)->plugin;
if ( !plugin || !(*it)->shouldLoad )
continue;
plugin->setup( this );
QPtrList<KAction>* popup = 0;
if ( plugin->category() == KIPI::IMAGESPLUGIN )
popup = &imageActions;
else if ( plugin->category() == KIPI::EXPORTPLUGIN ||
popup = &fileActions;
else if ( plugin->category() == KIPI::TOOLSPLUGIN )
popup = &toolsActions;
if ( popup ) {
KActionPtrList actions = plugin->actions();
for( KActionPtrList::Iterator it = actions.begin(); it != actions.end(); ++it ) {
popup->append( *it );
}
}
else {
kdDebug() << "No menu found\n";
}
plugin->actionCollection()->readShortcutSettings();
}
// For this to work I need to pass false as second arg for createGUI
plugActionList( QString::fromLatin1("file_actions"), fileActions );
plugActionList( QString::fromLatin1("image_actions"), imageActions );
plugActionList( QString::fromLatin1("tool_actions"), toolsActions );
}
QValueList< Info * > PluginList
Definition pluginloader.h:81
Definition plugin.h:59
KActionCollection * actionCollection(QWidget *parent=0)
Definition plugin.cpp:60
virtual void setup(QWidget *widget)=0
Definition plugin.cpp:84
virtual Category category(KAction *action) const =0
KActionPtrList actions(QWidget *parent=0)
Definition plugin.cpp:76
@ IMAGESPLUGIN
Definition plugin.h:49
@ EXPORTPLUGIN
Definition plugin.h:53
@ IMPORTPLUGIN
Definition plugin.h:52
@ TOOLSPLUGIN
Definition plugin.h:51

To configure which plugins should be loaded, simply call PluginLoader::configWidget(), and insert the widget into your normal configuration dialog.

Member Typedef Documentation

◆ PluginList

Constructor & Destructor Documentation

◆ PluginLoader()

KIPI::PluginLoader::PluginLoader ( const QStringList & ignores,
Interface * interface )

◆ ~PluginLoader()

KIPI::PluginLoader::~PluginLoader ( )
virtual

Member Function Documentation

◆ configWidget()

ConfigWidget * KIPI::PluginLoader::configWidget ( QWidget * parent)

References ConfigWidget.

◆ instance()

PluginLoader * KIPI::PluginLoader::instance ( )
static

◆ loadPlugin()

◆ loadPlugins()

void KIPI::PluginLoader::loadPlugins ( )

References loadPlugin(), KIPI::PluginLoader::Private::m_pluginList, and replug().

Here is the call graph for this function:

◆ plug

void KIPI::PluginLoader::plug ( KIPI::PluginLoader::Info * )
signal

Referenced by loadPlugin().

◆ pluginList()

const PluginLoader::PluginList & KIPI::PluginLoader::pluginList ( )

◆ replug

void KIPI::PluginLoader::replug ( )
signal

◆ unplug

void KIPI::PluginLoader::unplug ( KIPI::PluginLoader::Info * )
signal

Friends And Related Symbol Documentation

◆ ConfigWidget

friend class ConfigWidget
friend

Referenced by configWidget().

◆ PluginCheckBox

friend class PluginCheckBox
friend

The documentation for this class was generated from the following files: