|
@@ -43,23 +43,18 @@ public:
|
|
|
ctkVTKObjectEventsObserverPrivate(ctkVTKObjectEventsObserver& object);
|
|
|
|
|
|
///
|
|
|
- /// Check if a connection has already been added
|
|
|
- bool containsConnection(vtkObject* vtk_obj, unsigned long vtk_event,
|
|
|
- const QObject* qt_obj, const char* qt_slot);
|
|
|
-
|
|
|
- ///
|
|
|
/// Return a reference toward the corresponding connection or 0 if doesn't exist
|
|
|
- ctkVTKConnection* findConnection(const QString& id);
|
|
|
+ ctkVTKConnection* findConnection(const QString& id)const;
|
|
|
|
|
|
///
|
|
|
/// Return a reference toward the corresponding connection or 0 if doesn't exist
|
|
|
ctkVTKConnection* findConnection(vtkObject* vtk_obj, unsigned long vtk_event,
|
|
|
- const QObject* qt_obj, const char* qt_slot);
|
|
|
+ const QObject* qt_obj, const char* qt_slot)const;
|
|
|
|
|
|
///
|
|
|
/// Return all the references that match the given parameters
|
|
|
QList<ctkVTKConnection*> findConnections(vtkObject* vtk_obj, unsigned long vtk_event,
|
|
|
- const QObject* qt_obj, const char* qt_slot);
|
|
|
+ const QObject* qt_obj, const char* qt_slot)const;
|
|
|
|
|
|
inline QList<ctkVTKConnection*> connections()const
|
|
|
{
|
|
@@ -72,6 +67,77 @@ public:
|
|
|
};
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
+// ctkVTKObjectEventsObserverPrivate methods
|
|
|
+
|
|
|
+//-----------------------------------------------------------------------------
|
|
|
+ctkVTKObjectEventsObserverPrivate::ctkVTKObjectEventsObserverPrivate(ctkVTKObjectEventsObserver& object)
|
|
|
+ :q_ptr(&object)
|
|
|
+{
|
|
|
+ this->AllBlocked = false;
|
|
|
+ // ObserveDeletion == false hasn't been that well tested...
|
|
|
+ this->ObserveDeletion = true;
|
|
|
+}
|
|
|
+
|
|
|
+//-----------------------------------------------------------------------------
|
|
|
+ctkVTKConnection*
|
|
|
+ctkVTKObjectEventsObserverPrivate::findConnection(const QString& id)const
|
|
|
+{
|
|
|
+ foreach(ctkVTKConnection* connection, this->connections())
|
|
|
+ {
|
|
|
+ if (connection->id() == id)
|
|
|
+ {
|
|
|
+ return connection;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+//-----------------------------------------------------------------------------
|
|
|
+ctkVTKConnection*
|
|
|
+ctkVTKObjectEventsObserverPrivate::findConnection(
|
|
|
+ vtkObject* vtk_obj, unsigned long vtk_event,
|
|
|
+ const QObject* qt_obj, const char* qt_slot)const
|
|
|
+{
|
|
|
+ foreach (ctkVTKConnection* connection, this->connections())
|
|
|
+ {
|
|
|
+ if (connection->isEqual(vtk_obj, vtk_event, qt_obj, qt_slot))
|
|
|
+ {
|
|
|
+ return connection;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+//-----------------------------------------------------------------------------
|
|
|
+QList<ctkVTKConnection*>
|
|
|
+ctkVTKObjectEventsObserverPrivate::findConnections(
|
|
|
+ vtkObject* vtk_obj, unsigned long vtk_event,
|
|
|
+ const QObject* qt_obj, const char* qt_slot)const
|
|
|
+{
|
|
|
+ bool all_info = true;
|
|
|
+ if(vtk_obj == NULL || qt_slot == NULL ||
|
|
|
+ qt_obj == NULL || vtk_event == vtkCommand::NoEvent)
|
|
|
+ {
|
|
|
+ all_info = false;
|
|
|
+ }
|
|
|
+
|
|
|
+ QList<ctkVTKConnection*> foundConnections;
|
|
|
+ // Loop through all connection
|
|
|
+ foreach (ctkVTKConnection* connection, this->connections())
|
|
|
+ {
|
|
|
+ if (connection->isEqual(vtk_obj, vtk_event, qt_obj, qt_slot))
|
|
|
+ {
|
|
|
+ foundConnections.append(connection);
|
|
|
+ if (all_info)
|
|
|
+ {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return foundConnections;
|
|
|
+}
|
|
|
+
|
|
|
+//-----------------------------------------------------------------------------
|
|
|
// ctkVTKObjectEventsObserver methods
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
@@ -173,13 +239,15 @@ QString ctkVTKObjectEventsObserver::addConnection(vtkObject* vtk_obj, unsigned l
|
|
|
}
|
|
|
|
|
|
// Check if such event is already observed
|
|
|
- if (d->containsConnection(vtk_obj, vtk_event, qt_obj, qt_slot))
|
|
|
+ if (this->containsConnection(vtk_obj, vtk_event, qt_obj, qt_slot))
|
|
|
{
|
|
|
- qWarning() << "ctkVTKObjectEventsObserver::addConnection - [vtkObject:"
|
|
|
- << vtk_obj->GetClassName()
|
|
|
- << ", event:" << vtk_event << "]"
|
|
|
- << " is already connected with [qObject:" << qt_obj->objectName()
|
|
|
- << ", slot:" << qt_slot << "]";
|
|
|
+ // if you need to have more than 1 connection, then it's probably time to
|
|
|
+ // add the same mechanism than Qt does: Qt::UniqueConnection
|
|
|
+ //qWarning() << "ctkVTKObjectEventsObserver::addConnection - [vtkObject:"
|
|
|
+ // << vtk_obj->GetClassName()
|
|
|
+ // << ", event:" << vtk_event << "]"
|
|
|
+ // << " is already connected with [qObject:" << qt_obj->objectName()
|
|
|
+ // << ", slot:" << qt_slot << "]";
|
|
|
return QString();
|
|
|
}
|
|
|
|
|
@@ -274,74 +342,9 @@ int ctkVTKObjectEventsObserver::removeConnection(vtkObject* vtk_obj, unsigned lo
|
|
|
}
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
-// ctkVTKObjectEventsObserverPrivate methods
|
|
|
-
|
|
|
-//-----------------------------------------------------------------------------
|
|
|
-ctkVTKObjectEventsObserverPrivate::ctkVTKObjectEventsObserverPrivate(ctkVTKObjectEventsObserver& object)
|
|
|
- :q_ptr(&object)
|
|
|
-{
|
|
|
- this->AllBlocked = false;
|
|
|
- // ObserveDeletion == false hasn't been that well tested...
|
|
|
- this->ObserveDeletion = true;
|
|
|
-}
|
|
|
-
|
|
|
-//-----------------------------------------------------------------------------
|
|
|
-bool ctkVTKObjectEventsObserverPrivate::containsConnection(vtkObject* vtk_obj, unsigned long vtk_event,
|
|
|
- const QObject* qt_obj, const char* qt_slot)
|
|
|
-{
|
|
|
- return (this->findConnection(vtk_obj, vtk_event, qt_obj, qt_slot) != 0);
|
|
|
-}
|
|
|
-
|
|
|
-//-----------------------------------------------------------------------------
|
|
|
-ctkVTKConnection*
|
|
|
-ctkVTKObjectEventsObserverPrivate::findConnection(const QString& id)
|
|
|
-{
|
|
|
- foreach(ctkVTKConnection* connection, this->connections())
|
|
|
- {
|
|
|
- if (connection->id() == id)
|
|
|
- {
|
|
|
- return connection;
|
|
|
- }
|
|
|
- }
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
-//-----------------------------------------------------------------------------
|
|
|
-ctkVTKConnection*
|
|
|
-ctkVTKObjectEventsObserverPrivate::findConnection(vtkObject* vtk_obj, unsigned long vtk_event,
|
|
|
- const QObject* qt_obj, const char* qt_slot)
|
|
|
-{
|
|
|
- QList<ctkVTKConnection*> foundConnections =
|
|
|
- this->findConnections(vtk_obj, vtk_event, qt_obj, qt_slot);
|
|
|
-
|
|
|
- return foundConnections.size() ? foundConnections[0] : 0;
|
|
|
-}
|
|
|
-
|
|
|
-//-----------------------------------------------------------------------------
|
|
|
-QList<ctkVTKConnection*>
|
|
|
-ctkVTKObjectEventsObserverPrivate::findConnections(
|
|
|
- vtkObject* vtk_obj, unsigned long vtk_event,
|
|
|
- const QObject* qt_obj, const char* qt_slot)
|
|
|
+bool ctkVTKObjectEventsObserver::containsConnection(vtkObject* vtk_obj, unsigned long vtk_event,
|
|
|
+ const QObject* qt_obj, const char* qt_slot)const
|
|
|
{
|
|
|
- bool all_info = true;
|
|
|
- if(vtk_obj == NULL || qt_slot == NULL ||
|
|
|
- qt_obj == NULL || vtk_event == vtkCommand::NoEvent)
|
|
|
- {
|
|
|
- all_info = false;
|
|
|
- }
|
|
|
-
|
|
|
- QList<ctkVTKConnection*> foundConnections;
|
|
|
- // Loop through all connection
|
|
|
- foreach (ctkVTKConnection* connection, this->connections())
|
|
|
- {
|
|
|
- if (connection->isEqual(vtk_obj, vtk_event, qt_obj, qt_slot))
|
|
|
- {
|
|
|
- foundConnections.append(connection);
|
|
|
- if (all_info)
|
|
|
- {
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- return foundConnections;
|
|
|
+ Q_D(const ctkVTKObjectEventsObserver);
|
|
|
+ return (d->findConnection(vtk_obj, vtk_event, qt_obj, qt_slot) != 0);
|
|
|
}
|