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);
+    }
   };
 }