Inter plugin communication

Roberto Raggi roberto at kdevelop.org
Sat May 21 13:00:06 UTC 2005


Hi Jens!

Scrive Jens Herden <jens at kdewebdev.org>:

> What happens if the plugin 1 was not loaded? Is it still save to call this?
> setInstance() was never executed what will I get from MyInterface
> *instance() ?

it's not possible! KDevelop loads all the plugins and then it emits the signal
coreInitialized(). instance() == 0x0 means the plugin is not available (i.e.
disabled, not installed, and so on..)

of course it's not safe to call the method ::instance() from a constructor(only
setInstance() should be called from a constructor).

class MyPlugin: public KDevPlugin, ...
{
Q_OBJECT && friends
.

private slots:
   void pluginPolished();
};

MyPlugin::MyPlugin(..)
{
  setInstance(this); // if another plugin needs to call me

  connect(core(), SIGNAL(coreInitialized()), //if I need to call another plugin
     this, SLOT(pluginPolished()));
}

void MyPlugin::pluginPolished()
{
  connect(Plugin2::instance()->objectCast(), ....);
}

ciao robe




----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.




More information about the KDevelop-devel mailing list