MNE-CPP  beta 1.0
pluginconnectorconnection.h
Go to the documentation of this file.
1 //=============================================================================================================
35 #ifndef PLUGINCONNECTORCONNECTION_H
36 #define PLUGINCONNECTORCONNECTION_H
37 
38 //*************************************************************************************************************
39 //=============================================================================================================
40 // INCLUDES
41 //=============================================================================================================
42 
43 #include "../mne_x_global.h"
44 
45 #include "../Interfaces/IPlugin.h"
46 
47 #include "plugininputconnector.h"
48 #include "pluginoutputconnector.h"
49 
50 
51 //*************************************************************************************************************
52 //=============================================================================================================
53 // Qt INCLUDES
54 //=============================================================================================================
55 
56 #include <QObject>
57 #include <QMetaObject>
58 #include <QSharedPointer>
59 
60 
61 //*************************************************************************************************************
62 //=============================================================================================================
63 // DEFINE NAMESPACE MNEX
64 //=============================================================================================================
65 
66 namespace MNEX
67 {
68 
69 //*************************************************************************************************************
73 enum ConnectorDataType
74 {
75  _N,
76  _RTMSA,
77  _RTSA,
78  _RTE,
79  _RTC,
80  _RTSE,
81  _None,
82 };
83 
84 
85 //=============================================================================================================
92 {
93  Q_OBJECT
94 
96 
97 public:
98  typedef QSharedPointer<PluginConnectorConnection> SPtr;
99  typedef QSharedPointer<const PluginConnectorConnection> ConstSPtr;
101  explicit PluginConnectorConnection(IPlugin::SPtr sender, IPlugin::SPtr receiver, QObject *parent = 0);
102 
103  //=========================================================================================================
107  virtual ~PluginConnectorConnection();
108 
109  //=========================================================================================================
113  void clearConnection();
114 
115  //=========================================================================================================
119  static inline QSharedPointer<PluginConnectorConnection> create(IPlugin::SPtr sender, IPlugin::SPtr receiver, QObject *parent = 0);
120 
121  static ConnectorDataType getDataType(QSharedPointer<PluginConnector> pPluginConnector);
122 
123  inline IPlugin::SPtr& getSender();
124 
125  inline IPlugin::SPtr& getReceiver();
126 
127  inline bool isConnected();
128 
129  //=========================================================================================================
135  QWidget* setupWidget();
136 
137 signals:
138 
139 private:
140  //=========================================================================================================
144  bool createConnection();
145 
146  IPlugin::SPtr m_pSender;
147  IPlugin::SPtr m_pReceiver;
148 
149  QHash<QPair<QString, QString>, QMetaObject::Connection> m_qHashConnections;
150 };
151 
152 //*************************************************************************************************************
153 //=============================================================================================================
154 // INLINE DEFINITIONS
155 //=============================================================================================================
156 
157 inline QSharedPointer<PluginConnectorConnection> PluginConnectorConnection::create(IPlugin::SPtr sender, IPlugin::SPtr receiver, QObject *parent)
158 {
159  QSharedPointer<PluginConnectorConnection> pPluginConnectorConnection(new PluginConnectorConnection(sender, receiver, parent));
160  return pPluginConnectorConnection;
161 }
162 
163 
164 //*************************************************************************************************************
165 
166 inline IPlugin::SPtr& PluginConnectorConnection::getSender()
167 {
168  return m_pSender;
169 }
170 
171 
172 //*************************************************************************************************************
173 
174 inline IPlugin::SPtr& PluginConnectorConnection::getReceiver()
175 {
176  return m_pReceiver;
177 }
178 
179 
180 //*************************************************************************************************************
181 
182 inline bool PluginConnectorConnection::isConnected()
183 {
184  return m_qHashConnections.size() > 0 ? true : false;
185 }
186 
187 } // NAMESPACE
188 
189 #endif // PLUGINCONNECTORCONNECTION_H
QSharedPointer< PluginConnectorConnection > SPtr
QSharedPointer< const PluginConnectorConnection > ConstSPtr
static QSharedPointer< PluginConnectorConnection > create(IPlugin::SPtr sender, IPlugin::SPtr receiver, QObject *parent=0)
Contains the declaration of the PluginOutputConnector class.
#define MNE_X_SHARED_EXPORT
Definition: mne_x_global.h:55
QSharedPointer< IPlugin > SPtr
Definition: IPlugin.h:108
The PluginConnectorConnection class holds connector connections.
Definition: arrow.h:75
The PluginConnectorConnectionWidget class provides an user interface for connector connections...