summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2002-07-07 21:16:35 +0000
committerDana Jansens <danakj@orodu.net>2002-07-07 21:16:35 +0000
commit137a0c4e596409a1d35f0f6ea1bd6e4fcd5a3831 (patch)
treec8af9cd55971bd8eede10daa01843647c280dc0c /src
parent32c13697524e01a21e5b667188cad73434693ecb (diff)
allow style options in the rc file to override those found in the style
Diffstat (limited to 'src')
-rw-r--r--src/Configuration.cc17
-rw-r--r--src/Configuration.hh5
-rw-r--r--src/Screen.cc18
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)