NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
niftkItkSignalCollector.h
Go to the documentation of this file.
1 /*=============================================================================
2 
3  NifTK: A software platform for medical image computing.
4 
5  Copyright (c) University College London (UCL). All rights reserved.
6 
7  This software is distributed WITHOUT ANY WARRANTY; without even
8  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
9  PURPOSE.
10 
11  See LICENSE.txt in the top level directory for details.
12 
13 =============================================================================*/
14 
15 #ifndef niftkItkSignalCollector_h
16 #define niftkItkSignalCollector_h
17 
18 #include <itkCommand.h>
19 #include <itkEventObject.h>
20 
21 #include <mitkCommon.h>
22 
23 #include <vector>
24 
25 namespace niftk
26 {
27 
32 {
33 public:
34  virtual void OnItkSignalReceived(const itk::Object* object, const itk::EventObject& event) = 0;
35 };
36 
37 
41 class ItkSignalCollector : public itk::Command
42 {
43 public:
45  itkNewMacro(ItkSignalCollector)
46 
47  typedef std::pair<const itk::Object*, itk::EventObject*> Signal;
48  typedef std::vector<Signal> Signals;
49 
52  void Connect(itk::Object* object, const itk::EventObject& event);
53 
55  void AddListener(ItkSignalListener* listener);
56 
59  void RemoveListener(ItkSignalListener* listener);
60 
62  const Signals& GetSignals() const;
63 
65  Signals GetSignals(const itk::EventObject& event) const;
66 
69  Signals GetSignals(const itk::Object* object, const itk::EventObject& event = itk::AnyEvent()) const;
70 
72  virtual void Clear();
73 
75  virtual void ProcessEvent(const itk::Object* object, const itk::EventObject& event);
76 
77 protected:
78 
81 
83  virtual ~ItkSignalCollector();
84 
86  virtual void PrintSelf(std::ostream & os, itk::Indent indent) const override;
87 
88 private:
89 
91  virtual void Execute(itk::Object* caller, const itk::EventObject& event) override;
92 
94  virtual void Execute(const itk::Object* object, const itk::EventObject& event) override;
95 
96  typedef std::multimap<itk::Object::Pointer, unsigned long> ObserverMap;
97  ObserverMap m_ObserverTags;
98 
100  Signals m_Signals;
101 
103  std::vector<ItkSignalListener*> m_Listeners;
104 
105 };
106 
107 }
108 
109 #endif
Class for collecting ITK signals and sending notifications of them to registered listeners.
Definition: niftkItkSignalCollector.h:41
void AddListener(ItkSignalListener *listener)
Adds a listener that will get notified of the ITK signals that this object is connected to...
Definition: niftkItkSignalCollector.cxx:56
void Connect(itk::Object *object, const itk::EventObject &event)
Connects this object to the events of the given object. The current object will collect the given typ...
Definition: niftkItkSignalCollector.cxx:48
Definition: niftkMeshSmoother.cxx:19
std::vector< Signal > Signals
Definition: niftkItkSignalCollector.h:48
const Signals & GetSignals() const
Gets the signals collected by this object.
Definition: niftkItkSignalCollector.cxx:107
Definition: niftkITKAffineResampleImage.cxx:74
virtual void PrintSelf(std::ostream &os, itk::Indent indent) const override
Prints the collected signals to the given stream or to the standard output if no stream is given...
Definition: niftkItkSignalCollector.cxx:156
virtual void ProcessEvent(const itk::Object *object, const itk::EventObject &event)
Adds the object-event pair to the list of collected signals.
Definition: niftkItkSignalCollector.cxx:92
std::pair< const itk::Object *, itk::EventObject * > Signal
Definition: niftkItkSignalCollector.h:47
virtual void OnItkSignalReceived(const itk::Object *object, const itk::EventObject &event)=0
virtual void Clear()
Clears all the signals collected by now.
Definition: niftkItkSignalCollector.cxx:140
Abstract class to be implemented by ITK signal listeners.
Definition: niftkItkSignalCollector.h:31
cl_event event
Definition: glew.h:3231
void RemoveListener(ItkSignalListener *listener)
Removes a listener. The listener will not get notified about the ITK signals observed by the current ...
Definition: niftkItkSignalCollector.cxx:67
mitkClassMacroItkParent(ItkSignalCollector, itk::Command) static Pointer New()
Definition: niftkExceptionObject.h:21