diff Applications/Samples/SimpleViewerApplication.h @ 307:be2660b6e40a am-callable-and-promise

wip: commands + status update
author am@osimis.io
date Tue, 25 Sep 2018 15:14:53 +0200
parents b4abaeb783b1
children b66d13708f40
line wrap: on
line diff
--- a/Applications/Samples/SimpleViewerApplication.h	Tue Sep 18 18:20:10 2018 +0200
+++ b/Applications/Samples/SimpleViewerApplication.h	Tue Sep 25 15:14:53 2018 +0200
@@ -32,7 +32,7 @@
 #include "../../Framework/SmartLoader.h"
 
 #if ORTHANC_ENABLE_WASM==1
-#include "../../Platforms/Wasm/IStoneApplicationToWebApplicationAdapter.h"
+#include "../../Platforms/Wasm/WasmPlatformApplicationAdapter.h"
 #include "../../Platforms/Wasm/Defaults.h"
 #endif
 #include <Core/Logging.h>
@@ -43,9 +43,6 @@
   {
     class SimpleViewerApplication :
         public SampleApplicationBase,
-#if ORTHANC_ENABLE_WASM==1
-        public IStoneApplicationToWebApplicationAdapter,
-#endif
         public IObserver
     {
     private:
@@ -172,6 +169,38 @@
         }
       };
 
+
+#if ORTHANC_ENABLE_WASM==1
+      class SimpleViewerApplicationAdapter : public WasmPlatformApplicationAdapter
+      {
+      public:
+        SimpleViewerApplicationAdapter(MessageBroker& broker, SimpleViewerApplication& application)
+          : WasmPlatformApplicationAdapter(broker, application)
+        {
+
+        }
+
+        virtual void HandleMessageFromWeb(std::string& output, const std::string& input) {
+          if (input == "select-tool:line-measure")
+          {
+            application.currentTool_ = Tools_LineMeasure;
+            NotifyStatusUpdateFromCppToWeb("currentTool=line-measure");
+          }
+          else if (input == "select-tool:circle-measure")
+          {
+            application.currentTool_ = Tools_CircleMeasure;
+            NotifyStatusUpdateFromCppToWeb("currentTool=circle-measure");
+          }
+
+          output = "ok";
+        }
+
+        virtual void NotifyStatusUpdateFromCppToWeb(const std::string& statusUpdateMessage) {
+          UpdateStoneApplicationStatusFromCpp(statusUpdateMessage.c_str());
+        }
+
+      };
+#endif
       enum Tools {
         Tools_LineMeasure,
         Tools_CircleMeasure
@@ -251,7 +280,7 @@
           mainLayout_->AddWidget(mainWidget_);
 
           // sources
-          smartLoader_.reset(new SmartLoader(broker_, context_->GetWebService()));
+          smartLoader_.reset(new SmartLoader(IObserver::broker_, context_->GetWebService()));
           smartLoader_->SetImageQuality(SliceImageQuality_FullPam);
 
           mainLayout_->SetTransmitMouseOver(true);
@@ -263,7 +292,7 @@
         statusBar.SetMessage("Use the key \"s\" to reinitialize the layout");
         statusBar.SetMessage("Use the key \"n\" to go to next image in the main viewport");
 
-        orthancApiClient_.reset(new OrthancApiClient(broker_, context_->GetWebService()));
+        orthancApiClient_.reset(new OrthancApiClient(IObserver::broker_, context_->GetWebService()));
 
         if (parameters.count("studyId") < 1)
         {
@@ -328,7 +357,7 @@
       void LoadThumbnailForSeries(const std::string& seriesId, const std::string& instanceId)
       {
         LOG(INFO) << "Loading thumbnail for series " << seriesId;
-        LayerWidget* thumbnailWidget = new LayerWidget(broker_, "thumbnail-series-" + seriesId);
+        LayerWidget* thumbnailWidget = new LayerWidget(IObserver::broker_, "thumbnail-series-" + seriesId);
         thumbnails_.push_back(thumbnailWidget);
         thumbnailsLayout_->AddWidget(thumbnailWidget);
         thumbnailWidget->RegisterObserverCallback(new Callable<SimpleViewerApplication, LayerWidget::GeometryChangedMessage>(*this, &SimpleViewerApplication::OnWidgetGeometryChanged));
@@ -371,25 +400,6 @@
       }
 
 #if ORTHANC_ENABLE_WASM==1
-      virtual void HandleMessageFromWeb(std::string& output, const std::string& input) {
-        if (input == "select-tool:line-measure")
-        {
-          currentTool_ = Tools_LineMeasure;
-          NotifyStatusUpdateFromCppToWeb("currentTool=line-measure");
-        }
-        else if (input == "select-tool:circle-measure")
-        {
-          currentTool_ = Tools_CircleMeasure;
-          NotifyStatusUpdateFromCppToWeb("currentTool=circle-measure");
-        }
-
-        output = "ok";
-      }
-
-      virtual void NotifyStatusUpdateFromCppToWeb(const std::string& statusUpdateMessage) {
-        UpdateStoneApplicationStatusFromCpp(statusUpdateMessage.c_str());
-      }
-
       virtual void InitializeWasm() {
 
         AttachWidgetToWasmViewport("canvas", thumbnailsLayout_);