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 }