diff options
author | Thorsten Wißmann <edu@thorsten-wissmann.de> | 2015-09-23 11:44:03 +0200 |
---|---|---|
committer | Philipp Erhardt <Philipp.Erhardt@informatik.stud.uni-erlangen.de> | 2015-09-25 18:14:42 +0200 |
commit | 98171e7675c34e93dcdcf1aff0ef9e46c98c4eff (patch) | |
tree | 5805b7953567f53252eb6cf0fc3a5a37f8e8671d /src | |
parent | 5b895508831418de29418e184ae720488c111b5c (diff) |
Add --write-defaults command line switch
Diffstat (limited to 'src')
-rw-r--r-- | src/config.cpp | 17 | ||||
-rw-r--r-- | src/config.h | 3 | ||||
-rw-r--r-- | src/main.cpp | 5 |
3 files changed, 25 insertions, 0 deletions
diff --git a/src/config.cpp b/src/config.cpp index ad8f7d1..a435bd3 100644 --- a/src/config.cpp +++ b/src/config.cpp @@ -5,7 +5,15 @@ CFG::CFG() : settings(QSettings::IniFormat, QSettings::UserScope, "katarakt") { // TODO warn about invalid user input + init_defaults(); +} + +CFG::CFG(const char* file) : + settings(file, QSettings::IniFormat) { + init_defaults(); +} +void CFG::init_defaults() { settings.beginGroup("Settings"); // canvas options defaults["background_color"] = "0xDF000000"; @@ -126,6 +134,15 @@ CFG *CFG::get_instance() { return &instance; } +void CFG::write_defaults(const char *file) { + CFG inst(file); + inst.settings.clear(); + inst.settings.setFallbacksEnabled(false); + inst.set_defaults(); + inst.settings.sync(); + get_instance(); +} + QVariant CFG::get_value(const char *key) const { return settings.value(QString("Settings/") + key, defaults[key]); } diff --git a/src/config.h b/src/config.h index caa62ff..2a2c461 100644 --- a/src/config.h +++ b/src/config.h @@ -12,9 +12,11 @@ class CFG { private: CFG(); CFG(const CFG &other); + CFG(const char *file); CFG &operator=(const CFG &other); ~CFG(); + void init_defaults(); void set_defaults(); QSettings settings; @@ -24,6 +26,7 @@ private: public: static CFG *get_instance(); + static void write_defaults(const char *file); // write defaults to file QVariant get_value(const char *key) const; void set_value(const char *key, QVariant value); diff --git a/src/main.cpp b/src/main.cpp index f2234c2..c792186 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -22,6 +22,7 @@ static void print_help(char *name) { cout << " -f, --fullscreen Start in fullscreen mode" << endl; cout << " -q, --quit Quit on initialization failure" << endl; cout << " -h, --help Print this help and exit" << endl; + cout << " --write-defaults FILE Write the default configuration to FILE and exit" << endl; cout << " --single-instance true|false Whether to have a single instance per file" << endl; } @@ -36,6 +37,7 @@ int main(int argc, char *argv[]) { {"quit", no_argument, NULL, 'q'}, {"help", no_argument, NULL, 'h'}, {"single-instance", required_argument, NULL, 0}, + {"write-defaults", required_argument, NULL, 0}, {NULL, 0, NULL, 0} }; int option_index = 0; @@ -52,6 +54,9 @@ int main(int argc, char *argv[]) { // (according to QVariant) any string can be converted to // bool, so no type check needed here CFG::get_instance()->set_tmp_value("single_instance_per_file", optarg); + } else if (!strcmp(option_name, "write-defaults")) { + CFG::write_defaults(optarg); + return 0; } break; } |