Mercurial > hg > orthanc-stone
diff Applications/Samples/SimpleViewerApplication.h @ 287:2038d76bf13f am-2
interaction with HTML/JS
author | am@osimis.io |
---|---|
date | Thu, 30 Aug 2018 11:36:36 +0200 |
parents | 3c190e2bb3af |
children | 8c8da145fefa |
line wrap: on
line diff
--- a/Applications/Samples/SimpleViewerApplication.h Tue Aug 28 15:34:20 2018 +0200 +++ b/Applications/Samples/SimpleViewerApplication.h Thu Aug 30 11:36:36 2018 +0200 @@ -31,6 +31,10 @@ #include "../../Framework/Messages/IObserver.h" #include "../../Framework/SmartLoader.h" +#if ORTHANC_ENABLE_WASM==1 +#include "../../Platforms/Wasm/IStoneApplicationToWebApplicationAdapter.h" +#include "../../Platforms/Wasm/Defaults.h" +#endif #include <Core/Logging.h> namespace OrthancStone @@ -39,6 +43,9 @@ { class SimpleViewerApplication : public SampleApplicationBase, +#if ORTHANC_ENABLE_WASM==1 + public IStoneApplicationToWebApplicationAdapter, +#endif public IObserver { private: @@ -178,6 +185,7 @@ LayerWidget* mainWidget_; std::vector<LayerWidget*> thumbnails_; std::map<std::string, std::vector<std::string>> instancesIdsPerSeriesId_; + std::map<std::string, Json::Value> seriesTags_; unsigned int currentInstanceIndex_; OrthancStone::WidgetViewport* wasmViewport1_; @@ -297,6 +305,7 @@ { // keep track of all instances IDs const std::string& seriesId = response["ID"].asString(); + seriesTags_[seriesId] = response; instancesIdsPerSeriesId_[seriesId] = std::vector<std::string>(); for (size_t i = 0; i < response["Instances"].size(); i++) { @@ -351,19 +360,12 @@ } } -#if ORTHANC_ENABLE_WASM==1 - virtual void InitializeWasm() { - - AttachWidgetToWasmViewport("canvas", thumbnailsLayout_); - AttachWidgetToWasmViewport("canvas2", mainWidget_); - } -#endif - - - void SelectSeriesInMainViewport(const std::string& seriesId) { mainWidget_->ReplaceLayer(0, smartLoader_->GetFrame(instancesIdsPerSeriesId_[seriesId][0], 0)); +#if ORTHANC_ENABLE_WASM==1 + NotifyStatusUpdateFromCppToWeb("series-description=" + seriesTags_[seriesId]["MainDicomTags"]["SeriesDescription"].asString()); +#endif } virtual void OnPushButton1Clicked() {} @@ -381,6 +383,33 @@ pushButton1 = "action1"; pushButton2 = "action2"; } + +#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_); + AttachWidgetToWasmViewport("canvas2", mainWidget_); + } +#endif };