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 }