Dynamic creation of XMLGuiClients (plugins)
Andreas Zehender
zehender at kde.org
Sun Jan 5 10:43:28 GMT 2003
On Saturday 04 January 2003 22:41, David Faure wrote:
> On Saturday 04 January 2003 21:25, Matthias Kretz wrote:
> > This is what KView does for loading and merging:
> >
> > KConfigGroup cfgGroup( config, "KParts Plugins" );
> >
> > for( QValueList<KPluginSelectorPrivate::PluginInfo>::Iterator it =
> > d->pluginInfos.begin(); it != d->pluginInfos.end(); ++
> > it )
> > cfgGroup.writeEntry( ( *it ).pluginname + "Enabled", ( *it
> > ).item->isOn() );
>
> Sounds like we should have an updatePlugins() method that compares the
> loaded plugins with the enabled/disabled ones, and adds/removes those that
> need to be added/removed...
No, we don't need a new method. That's exactly what the last
KParts::Plugin::loadPlugins method does.
I have a configuration dialog where the user can activate and deactivate
plugins at runtime. I set the pluginname + "Enabled" config values and call
Plugin::loadPlugins which loads new activated plugins and removes loaded but
deactivated ones.
But the gui is not updated after new plugins are created.
The problem with
createGUI( 0 );
createShellGUI( false );
createGUI( m_pViewer );
is that I have to access the shell from the part. I can this inside
KPovModeler, but not if the part is embedded in another application. Plugins
may be loaded later when a document contains objects which require a plugin.
There has to be another way to trigger an update, maybe directly with
XMLGuiClient methods, maybe automatically in XMLGuiClient::insertChildClient
(that's how plugins are added to the part in kparts/plugin.cpp)
Btw: Why is Plugin::pluginInfos protected? There is now way at the moment to
get a list of installed plugins. I want that new plugins are not loaded by
default, but without a list of available plugins I can't let the user
activate them. As workaround I created a new class that inherits from
KParts::Plugin with a public method which calls the protected method.
--
--------------------------------------------------
Andreas Zehender, Dipl. Ing. (BA)
Student, 10th semester computer science
http://www.azweb.de
az at azweb.de | zehender at kde.org
--------------------------------------------------
More information about the kde-core-devel
mailing list