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 #include <qwidget.h>
00026
00027
00028
00029 #include <kaction.h>
00030 #include <kinstance.h>
00031 #include <kdebug.h>
00032
00033
00034
00035 #include "plugin.h"
00036
00037
00038 struct KIPI::Plugin::Private {
00039 QMap<QWidget*, KActionCollection*> m_actionCollection;
00040 KInstance* m_instance;
00041 QMap<QWidget*, KActionPtrList> m_actions;
00042 QWidget* m_defaultWidget;
00043 };
00044
00045
00046 KIPI::Plugin::Plugin( KInstance* instance, QObject *parent, const char* name)
00047 : QObject( parent, name)
00048 {
00049 d=new Private;
00050 d->m_instance=instance;
00051 }
00052
00053 KIPI::Plugin::~Plugin()
00054 {
00055 delete d;
00056 }
00057
00058 KActionCollection* KIPI::Plugin::actionCollection( QWidget* widget )
00059 {
00060 if ( widget == 0 )
00061 widget = d->m_defaultWidget;
00062
00063 if (!d->m_actionCollection.contains( widget ))
00064 kdWarning( 51000 ) << "Error in the plugin. The plugin needs to call Plugin::setup( QWidget* ) "
00065 << "as the very first line when overriding the setup method." << endl;
00066 return d->m_actionCollection[widget];
00067 }
00068
00069 void KIPI::Plugin::addAction( KAction* action )
00070 {
00071 d->m_actions[d->m_defaultWidget].append( action );
00072 }
00073
00074 KActionPtrList KIPI::Plugin::actions( QWidget* widget )
00075 {
00076 if ( widget == 0 )
00077 widget = d->m_defaultWidget;
00078
00079 return d->m_actions[widget];
00080 }
00081
00082 void KIPI::Plugin::setup( QWidget* widget )
00083 {
00084 d->m_defaultWidget = widget;
00085 d->m_actions.insert( widget, KActionPtrList() );
00086 QString name = QString( "action collection for %1" ).arg( widget->name() );
00087 d->m_actionCollection.insert( widget, new KActionCollection( widget, widget, name.latin1(), d->m_instance ) );
00088 }
00089
00090
00091