Majoranapp
A C++ library for studying MZM in non-interacting systems
KeyBindings.hpp
Go to the documentation of this file.
1 #ifndef PARSERS_KEYBINDINGS_HPP
2 #define PARSERS_KEYBINDINGS_HPP
3 
4 #include <iostream>
5 #include <map>
6 #include <string>
7 
8 #include "../Info.hpp"
9 #include "../Filler.hpp"
10 
11 #include "SystemOption.hpp"
12 
17 {
18 public:
22  static const std::map<char, std::string> mapDimensions;
26  static const std::map<char, std::string> mapParameters;
30  static const std::map<char, SystemOption> mapSystemKeys;
31 
35  static void Help()
36  {
37  Info::Comment("Program options");
38  Info::Comment("opt ARG description");
39  Info::Line();
41  Info::Line();
42  Info::Comment("Parameters settings");
43  Info::Comment("key name");
44  Info::Line();
47  Info::Line();
48  Info::Comment("Example");
49  Info::Line();
50  Info::Comment("The following command will run program with");
51  Info::Comment("settings and parameters loaded from JSON");
52  Info::Comment("and the Length will be replaced by 100:");
53  Info::Comment("");
54  Info::Comment("./majoranapp.exe -f inputscript.json -L 100");
55  }
56 
63  static std::string GetOptstring()
64  {
65  std::string ret{":"};
66  for (auto const &item : KeyBindings::mapDimensions)
67  {
68  ret += std::string{item.first} + ":";
69  }
70  for (auto const &item : KeyBindings::mapParameters)
71  {
72  ret += std::string{item.first} + ":";
73  }
74  for (auto const &item : KeyBindings::mapSystemKeys)
75  {
76  ret += std::string{item.first} + item.second.opt;
77  }
78  return ret;
79  }
80 
81  static const char VerboseKey{'v'};
82  static const char HelpKey{'h'};
83  static const char QuietKey{'q'};
84  static const char FilenameKey{'f'};
85 
86 };
87 
88 const std::map<char, SystemOption> KeyBindings::mapSystemKeys{
89  {KeyBindings::VerboseKey, {"verbose","increase output verbosity",""}},
90  {KeyBindings::FilenameKey, {"filename","select inputscript filename",":"}},
91  {KeyBindings::QuietKey, {"quiet","decrease output verbosity",""}},
92  {KeyBindings::HelpKey, {"help","show help page",""}}
93  };
94 
95 const std::map<char, std::string> KeyBindings::mapDimensions{
96  {'L', Dimensions::lengthName},
97  {'W', Dimensions::widthName},
98  {'H', Dimensions::heightName}};
99 
100 const std::map<char, std::string> KeyBindings::mapParameters{
110 
111 #endif
static const std::string name
Definition: ZeemanXTerm.hpp:44
static const char QuietKey
Definition: KeyBindings.hpp:83
static const std::string name
Definition: ZeemanYTerm.hpp:44
static void Comment(std::string text)
Display commented line.
Definition: Basics.hpp:33
Key bindings for char and selected terms, dimensions and TODO system options.
Definition: KeyBindings.hpp:16
static void ShowMap(T &map)
Displaying map.
Definition: ShowMap.hpp:22
static const std::string name
Definition: ZeemanZTerm.hpp:44
static void Help()
display all key bindings
Definition: KeyBindings.hpp:35
static const std::string name
Definition: KineticTerm.hpp:45
static const std::string name
Definition: ChemicalTerm.hpp:40
static const std::map< char, SystemOption > mapSystemKeys
SystemKeys name translation map.
Definition: KeyBindings.hpp:30
static const char FilenameKey
Definition: KeyBindings.hpp:84
static const std::string name
Definition: RashbaYTerm.hpp:50
static const char VerboseKey
Definition: KeyBindings.hpp:81
static void Line(int n=40)
Display line of n char (default char &#39;=&#39;)
Definition: Basics.hpp:124
static const std::map< char, std::string > mapParameters
Parameters name translation map.
Definition: KeyBindings.hpp:26
static const std::string name
Definition: ProxTerm.hpp:43
static const std::string name
Definition: RashbaZTerm.hpp:50
static std::string GetOptstring()
Get the Optstring object optstring for ArgvParser.
Definition: KeyBindings.hpp:63
static const std::map< char, std::string > mapDimensions
Dimensions translation map.
Definition: KeyBindings.hpp:22
static const char HelpKey
Definition: KeyBindings.hpp:82
static const std::string name
Definition: RashbaXTerm.hpp:50