Mercurial > hg > orthanc-stone
diff Framework/Viewport/IViewport.h @ 385:6cc3ce74dc05
using message broker in widgets
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 07 Nov 2018 20:49:41 +0100 |
parents | 7a364e44fbb4 |
children | e33659decec5 |
line wrap: on
line diff
--- a/Framework/Viewport/IViewport.h Wed Nov 07 16:17:02 2018 +0100 +++ b/Framework/Viewport/IViewport.h Wed Nov 07 20:49:41 2018 +0100 @@ -23,6 +23,7 @@ #include "IStatusBar.h" #include "../StoneEnumerations.h" +#include "../Messages/IObservable.h" #include <Core/Images/ImageAccessor.h> @@ -30,27 +31,22 @@ { class IWidget; // Forward declaration - class IViewport : public boost::noncopyable + class IViewport : public IObservable { public: - class IObserver : public boost::noncopyable + typedef OriginMessage<MessageType_ViewportChanged, IViewport> ViewportChangedMessage; + + IViewport(MessageBroker& broker) : + IObservable(broker) { - public: - virtual ~IObserver() - { - } - - virtual void OnViewportContentChanged(const IViewport& scene) = 0; - }; - + } + virtual ~IViewport() { } virtual void FitContent() = 0; - virtual void Register(IObserver& observer) = 0; - virtual void SetStatusBar(IStatusBar& statusBar) = 0; virtual void SetSize(unsigned int width, @@ -87,6 +83,10 @@ virtual void UpdateContent() = 0; // Should only be called from IWidget - virtual void NotifyContentChanged(const IWidget& widget) = 0; + virtual void NotifyContentChanged() + { + ViewportChangedMessage message(*this); + EmitMessage(message); + } }; }