Mercurial > hg > orthanc-stone
comparison 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 |
comparison
equal
deleted
inserted
replaced
384:d20d75f20c5d | 385:6cc3ce74dc05 |
---|---|
21 | 21 |
22 #pragma once | 22 #pragma once |
23 | 23 |
24 #include "IStatusBar.h" | 24 #include "IStatusBar.h" |
25 #include "../StoneEnumerations.h" | 25 #include "../StoneEnumerations.h" |
26 #include "../Messages/IObservable.h" | |
26 | 27 |
27 #include <Core/Images/ImageAccessor.h> | 28 #include <Core/Images/ImageAccessor.h> |
28 | 29 |
29 namespace OrthancStone | 30 namespace OrthancStone |
30 { | 31 { |
31 class IWidget; // Forward declaration | 32 class IWidget; // Forward declaration |
32 | 33 |
33 class IViewport : public boost::noncopyable | 34 class IViewport : public IObservable |
34 { | 35 { |
35 public: | 36 public: |
36 class IObserver : public boost::noncopyable | 37 typedef OriginMessage<MessageType_ViewportChanged, IViewport> ViewportChangedMessage; |
38 | |
39 IViewport(MessageBroker& broker) : | |
40 IObservable(broker) | |
37 { | 41 { |
38 public: | 42 } |
39 virtual ~IObserver() | 43 |
40 { | |
41 } | |
42 | |
43 virtual void OnViewportContentChanged(const IViewport& scene) = 0; | |
44 }; | |
45 | |
46 virtual ~IViewport() | 44 virtual ~IViewport() |
47 { | 45 { |
48 } | 46 } |
49 | 47 |
50 virtual void FitContent() = 0; | 48 virtual void FitContent() = 0; |
51 | |
52 virtual void Register(IObserver& observer) = 0; | |
53 | 49 |
54 virtual void SetStatusBar(IStatusBar& statusBar) = 0; | 50 virtual void SetStatusBar(IStatusBar& statusBar) = 0; |
55 | 51 |
56 virtual void SetSize(unsigned int width, | 52 virtual void SetSize(unsigned int width, |
57 unsigned int height) = 0; | 53 unsigned int height) = 0; |
85 virtual bool HasUpdateContent() = 0; | 81 virtual bool HasUpdateContent() = 0; |
86 | 82 |
87 virtual void UpdateContent() = 0; | 83 virtual void UpdateContent() = 0; |
88 | 84 |
89 // Should only be called from IWidget | 85 // Should only be called from IWidget |
90 virtual void NotifyContentChanged(const IWidget& widget) = 0; | 86 virtual void NotifyContentChanged() |
87 { | |
88 ViewportChangedMessage message(*this); | |
89 EmitMessage(message); | |
90 } | |
91 }; | 91 }; |
92 } | 92 } |