namespace qtrapids
{
+<<<<<<< .mine
- /** @class PluginHostInterface
+ // Forward declaration because of co-dependency of classes.
+ class PluginInterface;
+
+ /** @class PluginHostInterface
* @brief Defines interface for plugins to access the host application.
* A Host is an application that is extended by implementing Plugins,
* that implement the additional functionality
+ * @note Implementing plugin host should inherit QObject.
*/
- class PluginHostInterface : public QObject {
+ class PluginHostInterface {
public:
/// @brief Sets the plugin GUI element to host application
/// @note It is up to the host application to decide how to manage
/// and show the actual widget.
- virtual bool setGui(QWidget* widget) = 0;
+ virtual bool setGui(PluginInterface* from, QWidget* widget) = 0;
/// @brief Adds additional plugin wigdets to the host application.
/// This functio can be called by the plugin recursively, i.e. when GUI events occur
/// The host application must handle placing the additional widgets.
/// @todo Could we implement this using in a more manageable way, e.g. signal-slot?
- virtual void addPluginWidget(QWidget* widget) = 0;
- virtual void addToolbar() = 0;
- virtual void addToolItem() = 0;
- virtual void addMenu() = 0;
- virtual void addMenuItem() = 0;
+ virtual void addPluginWidget(PluginInterface* from, QWidget* widget) = 0;
+ virtual void addToolbar(PluginInterface* from, QWidget* widget) = 0;
+ virtual void addToolItem(PluginInterface* from, QWidget* widget) = 0;
+ virtual void addMenu(PluginInterface* from, QWidget* widget) = 0;
+ virtual void addMenuItem(PluginInterface* from, QWidget* widget) = 0;
};
+=======
+>>>>>>> .r31
+<<<<<<< .mine
+
+=======
+/** @class PluginHostInterface
+ * @brief Defines interface for plugins to access the host application.
+ * A Host is an application that is extended by implementing Plugins,
+ * that implement the additional functionality
+*/
+class PluginHostInterface : public QObject
+{
+public:
- /** @class PluginInterface
- * @brief Defines interface for a plugin instance.
- * The host application uses PluginInterface interface for calling the plugins
- * that extend the Host functionality
- */
- class PluginInterface : public QObject {
- public:
- /// @brief Initializes the plugin instance.
- virtual void initialize(PluginHostInterface* host) = 0;
- virtual QWidget* getGui() = 0;
- };
+>>>>>>> .r31
+ /// @brief Sets the plugin GUI element to host application
+ /// @note It is up to the host application to decide how to manage
+ /// and show the actual widget.
+ virtual bool setGui(QWidget* widget) = 0;
+
+ /// @brief Adds additional plugin wigdets to the host application.
+ /// This functio can be called by the plugin recursively, i.e. when GUI events occur
+ /// The host application must handle placing the additional widgets.
+ /// @todo Could we implement this using in a more manageable way, e.g. signal-slot?
+ virtual void addPluginWidget(QWidget* widget) = 0;
+ virtual void addToolbar() = 0;
+ virtual void addToolItem() = 0;
+ virtual void addMenu() = 0;
+ virtual void addMenuItem() = 0;
+};
+
+
+/** @class PluginInterface
+ * @brief Defines interface for a plugin instance.
+ * The host application uses PluginInterface interface for calling the plugins
+ * that extend the Host functionality
+*/
+class PluginInterface : public QObject
+{
+public:
+ /// @brief Initializes the plugin instance.
+ virtual void initialize(PluginHostInterface* host) = 0;
+ virtual QWidget* getGui() = 0;
+};
} //namespace qtrapids
"com.ixonos.qtrapids.PluginInterface/1.0")
Q_DECLARE_INTERFACE(qtrapids::PluginHostInterface,
"com.ixonos.qtrapids.PluginHostInterface/1.0")
-
-
+
+
//////////////// EXAMPLE PLUGIN DECLARATION /////////////////////////
// A simple plugin example using the PluginInterface
// For more info, see Qt documentation: "How to Create Qt Plugins"
//
// namespace qtrapids
// {
-//
+//
// class MyPlugin : public PluginInterface {
// Q_OBJECT
// // NOTE: This macro tells Qt which interfaces the plugin implements (i.e. inherits):
// Q_INTERFACES(qtrapids::PluginInterface)
-//
+//
// public:
// MyPlugin();
// virtual void initialize(PluginHostInterface* host);
// virtual QWidget* getGui();
-//
+//
// // Additional plugin-specific signals and slots.
-// signals:
+// signals:
// void searchResult(QWidget* resultwidget);
-//
-// private slots:
+//
+// private slots:
// void on_button_clicked();
// void on_result(QWidget* resultWidget);
-//
+//
// private:
// };
-//
+//
//
// MyPlugin::MyPlugin(): host_(NULL) {}
-//
+//
// void SearchPlugin::initialize(AbstractPluginHost* host)
// {
// host_ = host;
-//
+//
// if (host_ != NULL) {
// QWidget *pluginWidget = new QWidget;
// QVBoxLayout *vbox = new QVBoxLayout;
// QPushButton *searchButton = new QPushButton("Search");
// vbox->addWidget(searchButton);
// pluginWidget->setLayout(vbox);
-//
+//
// connect(searchButton, SIGNAL(clicked()), this, SLOT(on_searchButton_clicked()));
// //connect(this, SIGNAL(searchResult(QWidget*)), this, SLOT(on_searchResult(QWidget*)));
-//
-// // Call host interface function to set the plugin GUI. Host handles the setup
+//
+// // Call host interface function to set the plugin GUI. Host handles the setup
// // to it's own policy
// host_->setGui(pluginWidget);
// }
// }
-// } // namespace qtrapids
+// } // namespace qtrapids
//
//// NOTE: Remember to export the actual plugin to be visible for Qt:
//// Q_EXPORT_PLUGIN2(myplugin, qtrapids::MyPlugin)