Mercurial > hg > orthanc-stone
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_);