MNE-CPP  beta 1.0
IPlugin.h
Go to the documentation of this file.
1 //=============================================================================================================
36 #ifndef IPLUGIN_H
37 #define IPLUGIN_H
38 
39 //*************************************************************************************************************
40 //=============================================================================================================
41 // INCLUDES
42 //=============================================================================================================
43 
44 //#include "../Management/plugininputconnector.h"
45 //#include "../Management/pluginoutputconnector.h"
46 #include "../Management/pluginoutputdata.h"
47 #include "../Management/plugininputdata.h"
48 
49 
50 //*************************************************************************************************************
51 //=============================================================================================================
52 // QT INCLUDES
53 //=============================================================================================================
54 
55 #include <QThread>
56 #include <QCoreApplication>
57 #include <QSharedPointer>
58 #include <QAction>
59 
60 
61 //*************************************************************************************************************
62 //=============================================================================================================
63 // DEFINE NAMESPACE MNEX
64 //=============================================================================================================
65 
66 namespace MNEX
67 {
68 
69 
70 //*************************************************************************************************************
71 //=============================================================================================================
72 // ENUMERATIONS
73 //=============================================================================================================
74 
75 
76 
77 //*************************************************************************************************************
78 //=============================================================================================================
79 // FORWARD DECLARATIONS
80 //=============================================================================================================
81 
82 //class PluginInputConnector;
83 //class PluginOutputConnector;
84 
85 
86 //=========================================================================================================
92 class IPlugin : public QThread
93 {
94 // Q_OBJECT
95 public:
96  //=============================================================================================================
101  {
106  };
107 
108  typedef QSharedPointer<IPlugin> SPtr;
109  typedef QSharedPointer<const IPlugin> ConstSPtr;
111  typedef QVector< QSharedPointer< PluginInputConnector > > InputConnectorList;
112  typedef QVector< QSharedPointer< PluginOutputConnector > > OutputConnectorList;
114  //=========================================================================================================
118  virtual ~IPlugin() {};
119 
120  //=========================================================================================================
124  virtual QSharedPointer<IPlugin> clone() const = 0;
125 
126  //=========================================================================================================
130  virtual void init() = 0;
131 
132  //=========================================================================================================
136  virtual void unload() = 0;// = 0 call is not longer possible - it has to be reimplemented in child;
137 
138  //=========================================================================================================
145  virtual bool start() = 0;
146 
147  //=========================================================================================================
154  virtual bool stop() = 0;
155 
156  //=========================================================================================================
162  inline QList< QAction* > getPluginActions();
163 
164  //=========================================================================================================
171  virtual PluginType getType() const = 0;
172 
173  //=========================================================================================================
180  virtual QString getName() const = 0;
181 
182  //=========================================================================================================
188  virtual inline bool multiInstanceAllowed() const = 0;
189 
190  //=========================================================================================================
197  virtual QWidget* setupWidget() = 0; //setup()
198 
199 
200  inline InputConnectorList& getInputConnectors(){return m_inputConnectors;}
201  inline OutputConnectorList& getOutputConnectors(){return m_outputConnectors;}
202 
203 
204 protected:
205  //=========================================================================================================
211  virtual void run() = 0;
212 
213  //=========================================================================================================
219  inline void addPluginAction(QAction* pAction);
220 
221  InputConnectorList m_inputConnectors;
222  OutputConnectorList m_outputConnectors;
224 private:
225  QList< QAction* > m_qListPluginActions;
226 };
227 
228 //*************************************************************************************************************
229 //=============================================================================================================
230 // INLINE DEFINITIONS
231 //=============================================================================================================
232 
233 inline bool IPlugin::multiInstanceAllowed() const
234 {
235  return true;
236 }
237 
238 
239 //*************************************************************************************************************
240 
241 inline QList< QAction* > IPlugin::getPluginActions()
242 {
243  return m_qListPluginActions;
244 }
245 
246 
247 //*************************************************************************************************************
248 
249 inline void IPlugin::addPluginAction(QAction* pAction)
250 {
251  m_qListPluginActions.append(pAction);
252 }
253 
254 
255 //*************************************************************************************************************
256 
257 //inline void IPlugin::addPluginWidget(QWidget* pWidget)
258 //{
259 // m_qListPluginWidgets.append(pWidget);
260 //}
261 
262 } //Namespace
263 
264 Q_DECLARE_INTERFACE(MNEX::IPlugin, "mne_x/1.0")
265 
266 #endif //IPLUGIN_H
QVector< QSharedPointer< PluginOutputConnector > > OutputConnectorList
Definition: IPlugin.h:112
virtual bool multiInstanceAllowed() const =0
Definition: IPlugin.h:233
OutputConnectorList m_outputConnectors
Definition: IPlugin.h:222
virtual ~IPlugin()
Definition: IPlugin.h:118
The IPlugin class is the base interface class of all plugins.
Definition: IPlugin.h:92
virtual QString getName() const =0
void addPluginAction(QAction *pAction)
Definition: IPlugin.h:249
virtual bool start()=0
virtual PluginType getType() const =0
QList< QAction * > getPluginActions()
Definition: IPlugin.h:241
QSharedPointer< IPlugin > SPtr
Definition: IPlugin.h:108
Definition: arrow.h:75
virtual QWidget * setupWidget()=0
virtual void init()=0
virtual void run()=0
virtual QSharedPointer< IPlugin > clone() const =0
virtual void unload()=0
InputConnectorList m_inputConnectors
Definition: IPlugin.h:221
QSharedPointer< const IPlugin > ConstSPtr
Definition: IPlugin.h:109
QVector< QSharedPointer< PluginInputConnector > > InputConnectorList
Definition: IPlugin.h:111
virtual bool stop()=0