comparison Framework/Messages/IObservable.cpp @ 428:751fb354149e am-vsol-upgrade

ability to change the scene of the RadiographyWidget
author am@osimis.io
date Wed, 28 Nov 2018 10:44:28 +0100
parents 99e31898910e
children a750f11892ec
comparison
equal deleted inserted replaced
426:660fe6f6bf4a 428:751fb354149e
62 MessageType messageType = callable->GetMessageType(); 62 MessageType messageType = callable->GetMessageType();
63 63
64 callables_[messageType].insert(callable); 64 callables_[messageType].insert(callable);
65 } 65 }
66 66
67 void IObservable::Unregister(IObserver *observer)
68 {
69 // delete all callables from this observer
70 for (Callables::iterator itCallableSet = callables_.begin();
71 itCallableSet != callables_.end(); ++itCallableSet)
72 {
73 for (std::set<ICallable*>::const_iterator
74 itCallable = itCallableSet->second.begin(); itCallable != itCallableSet->second.end(); )
75 {
76 if ((*itCallable)->GetObserver() == observer)
77 {
78 delete *itCallable;
79 itCallableSet->second.erase(itCallable++);
80 }
81 else
82 ++itCallable;
83 }
84 }
85 }
67 86
68 void IObservable::EmitMessage(const IMessage& message) 87 void IObservable::EmitMessage(const IMessage& message)
69 { 88 {
70 Callables::const_iterator found = callables_.find(message.GetType()); 89 Callables::const_iterator found = callables_.find(message.GetType());
71 90