Mercurial > hg > orthanc-stone
comparison Applications/IBasicApplication.h @ 221:d7b2590744f8 am
wip: building applications reusable in SDL and WASM
author | am@osimis.io |
---|---|
date | Mon, 11 Jun 2018 14:01:02 +0200 |
parents | 4cff7b1ed31d |
children | 84844649a8fd |
comparison
equal
deleted
inserted
replaced
219:26e3bfe30e66 | 221:d7b2590744f8 |
---|---|
20 | 20 |
21 | 21 |
22 #pragma once | 22 #pragma once |
23 | 23 |
24 #include "BasicApplicationContext.h" | 24 #include "BasicApplicationContext.h" |
25 | |
26 #include <boost/program_options.hpp> | 25 #include <boost/program_options.hpp> |
27 | |
28 #if ORTHANC_ENABLE_SDL == 1 | |
29 # include <SDL.h> // Necessary to avoid undefined reference to `SDL_main' | |
30 #endif | |
31 | 26 |
32 namespace OrthancStone | 27 namespace OrthancStone |
33 { | 28 { |
34 class IBasicApplication : public boost::noncopyable | 29 class IBasicApplication : public boost::noncopyable |
35 { | 30 { |
31 protected: | |
32 // struct StartupOptionValue { | |
33 // enum Type { | |
34 // boolean, | |
35 // string, | |
36 // integer | |
37 // }; | |
38 // Type type; | |
39 // std::string value; | |
40 | |
41 // int asInt() {return std::stoi(value);} | |
42 // bool asBool() {return value == "true"; } | |
43 // std::string asString() {return value; } | |
44 // }; | |
45 | |
46 // struct StartupOptionDefinition { | |
47 // std::string name; | |
48 // std::string helpText; | |
49 // std::string defaultValue; | |
50 // StartupOptionValue::Type type; | |
51 // }; | |
52 | |
53 // typedef std::list<StartupOptionDefinition> StartupOptions; | |
54 | |
55 // StartupOptions startupOptions_; | |
56 | |
36 public: | 57 public: |
37 virtual ~IBasicApplication() | 58 virtual ~IBasicApplication() |
38 { | 59 { |
39 } | 60 } |
40 | 61 |
41 virtual void DeclareCommandLineOptions(boost::program_options::options_description& options) = 0; | 62 virtual void DeclareStartupOptions(boost::program_options::options_description& options) = 0; |
63 virtual void Initialize(IStatusBar& statusBar, | |
64 const boost::program_options::variables_map& parameters) = 0; | |
65 | |
66 virtual BasicApplicationContext& CreateApplicationContext(Orthanc::WebServiceParameters& orthanc) = 0; | |
67 | |
42 | 68 |
43 virtual std::string GetTitle() const = 0; | 69 virtual std::string GetTitle() const = 0; |
44 | 70 |
45 virtual void Initialize(BasicApplicationContext& context, | 71 // virtual void Initialize(BasicApplicationContext& context, |
46 IStatusBar& statusBar, | 72 // IStatusBar& statusBar, |
47 const boost::program_options::variables_map& parameters) = 0; | 73 // const std::map<std::string, std::string>& startupOptions) = 0; |
48 | 74 |
49 virtual void Finalize() = 0; | 75 virtual void Finalize() = 0; |
50 | 76 |
51 #if ORTHANC_ENABLE_SDL == 1 | 77 //protected: |
52 static int ExecuteWithSdl(IBasicApplication& application, | 78 // virtual void DeclareStringStartupOption(const std::string& name, const std::string& defaultValue, const std::string& helpText); |
53 int argc, | 79 // virtual void DeclareIntegerStartupOption(const std::string& name, const int& defaultValue, const std::string& helpText); |
54 char* argv[]); | 80 // virtual void DeclareBoolStartupOption(const std::string& name, bool defaultValue, const std::string& helpText); |
55 #endif | |
56 }; | 81 }; |
82 | |
57 } | 83 } |