NCL Composer  0.1.5
 All Classes Functions Variables Pages
composer::extension::IPlugin Class Reference

The interface for communication between the core and the plugin. More...

#include <IPlugin.h>

Inheritance diagram for composer::extension::IPlugin:
Collaboration diagram for composer::extension::IPlugin:

Public Slots

virtual void init ()
 Initialize the plugin. More...
 
virtual void updateFromModel ()
 Calls the plugin to update its internal model from model. More...
 
virtual void onEntityAdded (QString pluginID, Entity *entity)
 This is called by the core when a new Entity is added. More...
 
virtual void onEntityChanged (QString pluginID, Entity *entity)
 Called by the core when an Entity is changed. More...
 
virtual void onEntityRemoved (QString pluginID, QString entityID)
 Called by the core before the Entity is removed. More...
 
virtual void errorMessage (QString error)
 This is called by the core when some error triggered by this plugin instance occurs. More...
 

Signals

void addEntity (QString type, QString parentEntityId, QMap< QString, QString > &atts, bool force)
 This message can be used to add a new entity in the model. More...
 
void setAttributes (Entity *entity, QMap< QString, QString > atts, bool force)
 This message can be used to edit the attributes of an Entity. More...
 
void removeEntity (Entity *entity, bool force)
 This message can be used to ask the core to remove an Entity. More...
 
void setListenFilter (const QStringList &entityTypes)
 Say the core that the plugin is interested in just the entities of the the type passed as parameter. More...
 
void sendBroadcastMessage (const char *msg, void *obj)
 Can be used to extend the current messages of Core. More...
 
void setPluginData (QByteArray data)
 Each plugin is able to save its specific data by calling this message. More...
 
void setCurrentProjectAsDirty ()
 TODO. More...
 

Public Member Functions

QString getPluginInstanceID ()
 
void setPluginInstanceID (QString pluginInstID)
 
void setLanguageProfile (ILanguageProfile *languageProfile)
 
ILanguageProfilegetLanguageProfile ()
 
void setProject (Project *project)
 This call is used by the core to bind an existing NclDocument with this plugin instance. More...
 
ProjectgetProject ()
 This call is used by the core to recover the Project instance previously binded with this plugin instance. More...
 
virtual QWidget * getWidget ()
 Return the main Widget. More...
 
virtual bool saveSubsession ()
 Says to plugin save its settings. More...
 

Protected Attributes

Projectproject
 The Project binded with this particular plugin instance.
 
QString pluginInstanceID
 Each plugin instance also receives a unique instance ID (given by the core).
 
QMutex mutex
 
ILanguageProfilelanguageProfile
 

Detailed Description

The interface for communication between the core and the plugin.

This extension point is used by the core to emit and receive signals. These signals are transmited by the plugin to the core, and then the core retransmit this signal to the other plugins associated with the NclDocument. All the communication is performed using the signal/slot mechanism provided by QT. The plugin developer needs to implement all the slots in order to capture the changes in the NclDocument and emit the signals when itself makes a change.

In short, the SLOT are messages from the CORE to PLUGIN, while the signals bellow are messages from PLUGIN to CORE.

Definition at line 38 of file IPlugin.h.

Member Function Documentation

void composer::extension::IPlugin::addEntity ( QString  type,
QString  parentEntityId,
QMap< QString, QString > &  atts,
bool  force 
)
signal

This message can be used to add a new entity in the model.

Parameters
type
parentEntityId
atts
force
virtual void composer::extension::IPlugin::errorMessage ( QString  error)
inlinevirtualslot

This is called by the core when some error triggered by this plugin instance occurs.

Parameters
errorA description of the error.

Definition at line 193 of file IPlugin.h.

Here is the caller graph for this function:

Project* composer::extension::IPlugin::getProject ( )
inline

This call is used by the core to recover the Project instance previously binded with this plugin instance.

Returns
project aProject instance

Definition at line 90 of file IPlugin.h.

virtual QWidget* composer::extension::IPlugin::getWidget ( )
inlinevirtual

Return the main Widget.

The core calls this method to retrieve the Plugin Graphical Interface. This Widget is going to be wrapped into a QDockWidget and then displayed for the user in the main interface

Returns
QWidget - wrapping the plugin interface

Reimplemented in NCLTextualViewPlugin, PropertiesViewPlugin, OutlineViewPlugin, DebugConsolePlugin, composer::plugin::layout::QnlyComposerPlugin, QnstComposerPlugin, and QnlyComposerPlugin.

Definition at line 104 of file IPlugin.h.

Here is the caller graph for this function:

virtual void composer::extension::IPlugin::init ( )
inlinevirtualslot

Initialize the plugin.

This call is used after the plugin is connected with core. Just after the init return the plugin is able to receive messages from core. Messages send to core befor this call are IGNORED.

Reimplemented in NCLTextualViewPlugin, PropertiesViewPlugin, OutlineViewPlugin, DebugConsolePlugin, composer::plugin::layout::QnlyComposerPlugin, QnstComposerPlugin, and QnlyComposerPlugin.

Definition at line 129 of file IPlugin.h.

virtual void composer::extension::IPlugin::onEntityAdded ( QString  pluginID,
Entity entity 
)
inlinevirtualslot

This is called by the core when a new Entity is added.

This call is invoked by the core when a new Entity (from that particular types the plugin is listening) is added in the model.

Definition at line 150 of file IPlugin.h.

virtual void composer::extension::IPlugin::onEntityChanged ( QString  pluginID,
Entity entity 
)
inlinevirtualslot

Called by the core when an Entity is changed.

Parameters
pluginIDthe plugin instance id that first called the changes to the entity.
entityThe entity that was modified.

Definition at line 163 of file IPlugin.h.

virtual void composer::extension::IPlugin::onEntityRemoved ( QString  pluginID,
QString  entityID 
)
inlinevirtualslot

Called by the core before the Entity is removed.

Deprecated:

Called by the core after the entity entityID is removed.

Parameters
pluginIDthe plugin instance id that first called the changes to the entity.
entityIDthe entity's identifier that was removed.

Definition at line 181 of file IPlugin.h.

void composer::extension::IPlugin::removeEntity ( Entity entity,
bool  force 
)
signal

This message can be used to ask the core to remove an Entity.

Parameters
entityThe pointer to the Entity must be removed.
forceIt should be true if the user want to remove that entity even the internal model will not be consistent.
virtual bool composer::extension::IPlugin::saveSubsession ( )
inlinevirtual

Says to plugin save its settings.

The core calls this method to notify the plugin that the user is requesting to save this document. Some plugins need to save special settings for a particular document, in case that document is re-open in a different session.

Returns
bool - true if the save was successfull, false otherwise

Reimplemented in NCLTextualViewPlugin, PropertiesViewPlugin, OutlineViewPlugin, DebugConsolePlugin, composer::plugin::layout::QnlyComposerPlugin, QnstComposerPlugin, and QnlyComposerPlugin.

Definition at line 118 of file IPlugin.h.

Here is the caller graph for this function:

void composer::extension::IPlugin::sendBroadcastMessage ( const char *  msg,
void *  obj 
)
signal

Can be used to extend the current messages of Core.

This message is send to all plugins without any validation. The content of the message can be any QObject and are useful to extend the default core message.

Always, the signature of the method msg implemented by an receiver must be an public slot like: void msg(QString pluginID, void *obj)

The core will call this msg method to each publin that implements it when sendBroadcastMethod is called.

Here is the caller graph for this function:

void composer::extension::IPlugin::setAttributes ( Entity entity,
QMap< QString, QString >  atts,
bool  force 
)
signal

This message can be used to edit the attributes of an Entity.

Parameters
entity
atts
force

Here is the caller graph for this function:

void composer::extension::IPlugin::setCurrentProjectAsDirty ( )
signal

TODO.

Todo:
This could be done with setBroadcastMessage?!
void composer::extension::IPlugin::setListenFilter ( const QStringList &  entityTypes)
signal

Say the core that the plugin is interested in just the entities of the the type passed as parameter.

Parameters
entityTypesa list of strings that the plugin want to listen.
void composer::extension::IPlugin::setPluginData ( QByteArray  data)
signal

Each plugin is able to save its specific data by calling this message.

Important: When the plugin send this message, the data overwrite the previously saved by this plugin.

Parameters
dataA byte array contatining the data that plugin wants to save.

Here is the caller graph for this function:

void composer::extension::IPlugin::setProject ( Project project)
inline

This call is used by the core to bind an existing NclDocument with this plugin instance.

Parameters
documentan NclDocument instance

Definition at line 78 of file IPlugin.h.

virtual void composer::extension::IPlugin::updateFromModel ( )
inlinevirtualslot

Calls the plugin to update its internal model from model.

This call is invoked by the core in two situations:

  • When the user resquest an update to all plugins
  • When the plugin is loaded in runtime

In the second case, the plugin is loaded, but did no receive the previous modifications, so it has to be forceed to reload the Document*.

Definition at line 142 of file IPlugin.h.


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