From 137a0c4e596409a1d35f0f6ea1bd6e4fcd5a3831 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Sun, 7 Jul 2002 21:16:35 +0000 Subject: [PATCH] allow style options in the rc file to override those found in the style --- src/Configuration.cc | 17 +++++++++++++---- src/Configuration.hh | 5 +++-- src/Screen.cc | 18 ++---------------- 3 files changed, 18 insertions(+), 22 deletions(-) diff --git a/src/Configuration.cc b/src/Configuration.cc index 5517790f..237b4a63 100644 --- a/src/Configuration.cc +++ b/src/Configuration.cc @@ -35,21 +35,21 @@ using std::string; bool Configuration::m_initialized = False; -Configuration::Configuration(const string &file) { +Configuration::Configuration(const string &file, bool autosave) { setFile(file); m_modified = False; m_database = NULL; - m_autosave = True; + m_autosave = autosave; if (! m_initialized) { XrmInitialize(); m_initialized = True; } } -Configuration::Configuration() { +Configuration::Configuration(bool autosave) { m_modified = False; m_database = NULL; - m_autosave = True; + m_autosave = autosave; if (! m_initialized) { XrmInitialize(); m_initialized = True; @@ -84,6 +84,15 @@ bool Configuration::load() { return True; } +bool Configuration::merge(const string &file, bool overwrite) { + if (XrmCombineFileDatabase(file.c_str(), &m_database, overwrite) == 0) + return False; + m_modified = True; + if (m_autosave) + save(); + return True; +} + void Configuration::create() { if (m_database != NULL) XrmDestroyDatabase(m_database); diff --git a/src/Configuration.hh b/src/Configuration.hh index 6909c799..b26541fd 100644 --- a/src/Configuration.hh +++ b/src/Configuration.hh @@ -37,8 +37,8 @@ */ class Configuration { public: - explicit Configuration(const std::string &file); - Configuration(); + explicit Configuration(const std::string &file, bool autosave = True); + Configuration(bool autosave = True); virtual ~Configuration(); inline const std::string &file() const { @@ -58,6 +58,7 @@ public: void save(); bool load(); + bool merge(const std::string &file, bool overwrite = False); void create(); void setValue(const std::string &rname, bool value); diff --git a/src/Screen.cc b/src/Screen.cc index 3a94a4a5..ca94e75a 100644 --- a/src/Screen.cc +++ b/src/Screen.cc @@ -739,24 +739,10 @@ void BScreen::LoadStyle(void) { } } - string s; - - if (config->getValue("rootCommand", s)) - printf("config.rootCommand: %s\n", s.c_str()); - - if (style.getValue("rootCommand", s)) - printf("style.rootCommand: %s\n", s.c_str()); - // merge in the rc file - style.merge(config, True); + style.merge(config->file(), True); - printf("merged databases\n"); - - if (style.getValue("rootCommand", s)) - printf("style.rootCommand: %s\n", s.c_str()); - - if (style.getValue("session.cacheMax", s)) - printf("session.cacheMax: %s\n", s.c_str()); + string s; // load fonts/fontsets if (resource.wstyle.font) -- 2.45.2