- Additional (plugin)tabs closable in MainWindow
[qtrapids] / src / plugins / PluginInterface.h
index d5ed6c8..c89ba22 100644 (file)
@@ -37,8 +37,11 @@ namespace qtrapids
                * that implement the additional functionality
                * @note Implementing plugin host should inherit QObject.
        */
-       class PluginHostInterface {
+       class PluginHostInterface 
+       {
                public:
+                       
+                       
                        /// @enum PluginWidgetType Allows plugin host to differentiate actions 
                        /// when passed as parameter to addWidget(). E.g. Popup a dialog or append tab etc.
                        /// @todo add new types
@@ -53,13 +56,14 @@ namespace qtrapids
                        /// @todo Additional functionality request constants.
                        enum PluginRequest {
                                OPEN_FILE,
+                               READ_BUFFER,
                                UNKNOWN_REQUEST
                        };
                        
                        /// @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, PluginWidgetType type = UNKNOWN_TYPE) = 0;
+                       virtual bool setGui(QWidget* widget, PluginWidgetType type = UNKNOWN_TYPE, PluginInterface* plugin = NULL) = 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
@@ -85,10 +89,25 @@ namespace qtrapids
                * The host application uses PluginInterface interface for calling the plugins
                * that extend the Host functionality
        */
-       class PluginInterface : public QObject {
+       class PluginInterface : public QObject 
+       {
                public:
+                       
+                       /// @struct Info Used to supply information from the host application to the plugin 
+                       /// for initialization.
+                       struct Info {
+                               Info() : directory("") {} //Constructor
+                               QString directory; ///< directory from which the plugin is loaded
+                               // ...
+                       };
+                       
                        /// @brief Initializes the plugin instance.
-                       virtual void initialize(PluginHostInterface* host) = 0;
+                       virtual void initialize(PluginHostInterface* host, Info info = Info()) = 0;
+                       
+                       /// @brief Returns plugin identifier to be used by the host application
+                       /// @returns Plugin identifier as string representation.
+                       virtual QString identifier() = 0;
+                       
                        virtual QWidget* getGui() = 0;
        };