comparison Applications/Samples/SampleApplicationBase.h @ 326:612238b3f3e8 am-2

all 4 samples now working in Qt, SDL and wasm
author am@osimis.io
date Tue, 16 Oct 2018 12:57:38 +0200
parents be2660b6e40a
children c7fdc8bac581
comparison
equal deleted inserted replaced
325:37ab9d83dc9b 326:612238b3f3e8
20 20
21 21
22 #pragma once 22 #pragma once
23 23
24 #include "../../Applications/IStoneApplication.h" 24 #include "../../Applications/IStoneApplication.h"
25 #include "../../Framework/Widgets/LayerWidget.h"
26
27 #if ORTHANC_ENABLE_WASM==1
28 #include "../../Platforms/Wasm/WasmPlatformApplicationAdapter.h"
29 #include "../../Platforms/Wasm/Defaults.h"
30 #endif
31
32 #if ORTHANC_ENABLE_QT==1
33 #include "Qt/SampleMainWindow.h"
34 #include "Qt/SampleMainWindowWithButtons.h"
35 #endif
25 36
26 namespace OrthancStone 37 namespace OrthancStone
27 { 38 {
28 namespace Samples 39 namespace Samples
29 { 40 {
30 class SampleApplicationBase : public IStoneApplication 41 class SampleApplicationBase : public IStoneApplication
31 { 42 {
32 protected: 43 protected:
33 BaseCommandBuilder commandBuilder_; 44 BaseCommandBuilder commandBuilder_;
45 LayerWidget* mainWidget_; // ownership is transfered to the application context
46
34 public: 47 public:
35 virtual void Initialize(StoneApplicationContext* context, 48 virtual void Initialize(StoneApplicationContext* context,
36 IStatusBar& statusBar, 49 IStatusBar& statusBar,
37 const boost::program_options::variables_map& parameters) 50 const boost::program_options::variables_map& parameters)
38 { 51 {
41 virtual std::string GetTitle() const 54 virtual std::string GetTitle() const
42 { 55 {
43 return "Stone of Orthanc - Sample"; 56 return "Stone of Orthanc - Sample";
44 } 57 }
45 58
59 virtual BaseCommandBuilder& GetCommandBuilder() {return commandBuilder_;}
60
61 virtual void Finalize() {}
62 virtual IWidget* GetCentralWidget() {return mainWidget_;}
63
64 #if ORTHANC_ENABLE_WASM==1
65 // default implementations for a single canvas named "canvas" in the HTML and an emtpy WasmApplicationAdapter
66
67 virtual void InitializeWasm()
68 {
69 AttachWidgetToWasmViewport("canvas", mainWidget_);
70 }
71
72 virtual WasmPlatformApplicationAdapter* CreateWasmApplicationAdapter(MessageBroker& broker)
73 {
74 return new WasmPlatformApplicationAdapter(broker, *this);
75 }
76 #endif
77
78 };
79
80 // this application actually works in Qt and WASM
81 class SampleSingleCanvasWithButtonsApplicationBase : public SampleApplicationBase
82 {
83 public:
46 virtual void OnPushButton1Clicked() {} 84 virtual void OnPushButton1Clicked() {}
47 virtual void OnPushButton2Clicked() {} 85 virtual void OnPushButton2Clicked() {}
48 virtual void OnTool1Clicked() {} 86 virtual void OnTool1Clicked() {}
49 virtual void OnTool2Clicked() {} 87 virtual void OnTool2Clicked() {}
50 88
57 pushButton2 = "action2"; 95 pushButton2 = "action2";
58 tool1 = "tool1"; 96 tool1 = "tool1";
59 tool2 = "tool2"; 97 tool2 = "tool2";
60 } 98 }
61 99
62 virtual BaseCommandBuilder& GetCommandBuilder() {return commandBuilder_;} 100 #if ORTHANC_ENABLE_QT==1
101 virtual QStoneMainWindow* CreateQtMainWindow() {
102 return new SampleMainWindowWithButtons(dynamic_cast<OrthancStone::NativeStoneApplicationContext&>(*context_), *this);
103 }
104 #endif
63 105
106 };
107
108 // this application actually works in SDL and WASM
109 class SampleSingleCanvasApplicationBase : public SampleApplicationBase
110 {
111 public:
112
113 #if ORTHANC_ENABLE_QT==1
114 virtual QStoneMainWindow* CreateQtMainWindow() {
115 return new SampleMainWindow(dynamic_cast<OrthancStone::NativeStoneApplicationContext&>(*context_), *this);
116 }
117 #endif
64 }; 118 };
65 } 119 }
66 } 120 }