summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThorsten Wißmann <edu@thorsten-wissmann.de>2015-09-23 11:44:03 +0200
committerPhilipp Erhardt <Philipp.Erhardt@informatik.stud.uni-erlangen.de>2015-09-25 18:14:42 +0200
commit98171e7675c34e93dcdcf1aff0ef9e46c98c4eff (patch)
tree5805b7953567f53252eb6cf0fc3a5a37f8e8671d /src
parent5b895508831418de29418e184ae720488c111b5c (diff)
Add --write-defaults command line switch
Diffstat (limited to 'src')
-rw-r--r--src/config.cpp17
-rw-r--r--src/config.h3
-rw-r--r--src/main.cpp5
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;
}