diff options
author | Pavel Labath <pavelo@centrum.sk> | 2011-06-12 13:17:47 (GMT) |
---|---|---|
committer | Pavel Labath <pavelo@centrum.sk> | 2013-02-16 23:51:49 (GMT) |
commit | 946bc2edb60836bb0d939d850543d1c9ab683dc9 (patch) | |
tree | 1011ab3f5e572998bd60408aef7618f9cc809e48 /src | |
parent | 62aac4851aed94bc198c09aff4d764967542b8e4 (diff) | |
download | fluxbox_pavel-946bc2edb60836bb0d939d850543d1c9ab683dc9.zip fluxbox_pavel-946bc2edb60836bb0d939d850543d1c9ab683dc9.tar.bz2 |
Factor out "session." from resource names
this reduces typing and it makes more sense in lua, since there the resources are implemented as
hierarchical tables and the topmost table has to be handled a bit specially.
Diffstat (limited to 'src')
-rw-r--r-- | src/FbTk/LResource.cc | 4 | ||||
-rw-r--r-- | src/FbTk/LResource.hh | 3 | ||||
-rw-r--r-- | src/FbTk/Resource.cc | 18 | ||||
-rw-r--r-- | src/FbTk/Resource.hh | 7 | ||||
-rw-r--r-- | src/fluxbox.cc | 42 | ||||
-rw-r--r-- | src/main.cc | 4 |
6 files changed, 42 insertions, 36 deletions
diff --git a/src/FbTk/LResource.cc b/src/FbTk/LResource.cc index 5842b65..78511eb 100644 --- a/src/FbTk/LResource.cc +++ b/src/FbTk/LResource.cc | |||
@@ -82,8 +82,8 @@ void LResourceManager::initState(lua::state &l) { | |||
82 | l.setfield(lua::REGISTRYINDEX, make_root); | 82 | l.setfield(lua::REGISTRYINDEX, make_root); |
83 | } | 83 | } |
84 | 84 | ||
85 | LResourceManager::LResourceManager(lua::state &l, const std::string &root) | 85 | LResourceManager::LResourceManager(const std::string &root, lua::state &l) |
86 | : m_l(&l), m_root(root) { | 86 | : ResourceManager_base(root), m_l(&l) { |
87 | l.checkstack(2); | 87 | l.checkstack(2); |
88 | lua::stack_sentry s(l); | 88 | lua::stack_sentry s(l); |
89 | 89 | ||
diff --git a/src/FbTk/LResource.hh b/src/FbTk/LResource.hh index 0853687..185a029 100644 --- a/src/FbTk/LResource.hh +++ b/src/FbTk/LResource.hh | |||
@@ -39,7 +39,7 @@ class LResourceManager: public ResourceManager_base { | |||
39 | public: | 39 | public: |
40 | static void initState(lua::state &l); | 40 | static void initState(lua::state &l); |
41 | 41 | ||
42 | LResourceManager(lua::state &l, const std::string &root); | 42 | LResourceManager(const std::string &root, lua::state &l); |
43 | virtual bool save(const char *filename, const char *); | 43 | virtual bool save(const char *filename, const char *); |
44 | virtual void addResource(Resource_base &r); | 44 | virtual void addResource(Resource_base &r); |
45 | virtual void removeResource(Resource_base &r); | 45 | virtual void removeResource(Resource_base &r); |
@@ -47,7 +47,6 @@ public: | |||
47 | private: | 47 | private: |
48 | 48 | ||
49 | lua::state *m_l; | 49 | lua::state *m_l; |
50 | std::string m_root; | ||
51 | }; | 50 | }; |
52 | 51 | ||
53 | } // end namespace FbTk | 52 | } // end namespace FbTk |
diff --git a/src/FbTk/Resource.cc b/src/FbTk/Resource.cc index fb0f595..37555b3 100644 --- a/src/FbTk/Resource.cc +++ b/src/FbTk/Resource.cc | |||
@@ -82,10 +82,13 @@ void ResourceManager_base::setResourceValue(const string &resname, const string | |||
82 | 82 | ||
83 | } | 83 | } |
84 | 84 | ||
85 | ResourceManager::ResourceManager(const char *filename, bool lock_db) : | 85 | ResourceManager::ResourceManager(const std::string &root, const std::string &alt_root, |
86 | const char *filename, bool lock_db) : | ||
87 | ResourceManager_base(root), | ||
86 | m_db_lock(0), | 88 | m_db_lock(0), |
87 | m_database(0), | 89 | m_database(0), |
88 | m_filename(filename ? filename : "") | 90 | m_filename(filename ? filename : ""), |
91 | m_alt_root(alt_root) | ||
89 | { | 92 | { |
90 | static bool xrm_initialized = false; | 93 | static bool xrm_initialized = false; |
91 | if (!xrm_initialized) { | 94 | if (!xrm_initialized) { |
@@ -131,8 +134,8 @@ bool ResourceManager::load(const char *filename) { | |||
131 | for (; i != i_end; ++i) { | 134 | for (; i != i_end; ++i) { |
132 | 135 | ||
133 | Resource_base *resource = *i; | 136 | Resource_base *resource = *i; |
134 | if (XrmGetResource(**m_database, resource->name().c_str(), | 137 | if (XrmGetResource(**m_database, (m_root + '.' + resource->name()).c_str(), |
135 | resource->altName().c_str(), &value_type, &value)) | 138 | (m_alt_root + '.' + resource->altName()).c_str(), &value_type, &value)) |
136 | resource->setFromString(value.addr); | 139 | resource->setFromString(value.addr); |
137 | else { | 140 | else { |
138 | _FB_USES_NLS; | 141 | _FB_USES_NLS; |
@@ -166,13 +169,12 @@ bool ResourceManager::save(const char *filename, const char *mergefilename) { | |||
166 | // empty database | 169 | // empty database |
167 | XrmDatabaseHelper database; | 170 | XrmDatabaseHelper database; |
168 | 171 | ||
169 | string rc_string; | ||
170 | ResourceList::iterator i = m_resourcelist.begin(); | 172 | ResourceList::iterator i = m_resourcelist.begin(); |
171 | ResourceList::iterator i_end = m_resourcelist.end(); | 173 | ResourceList::iterator i_end = m_resourcelist.end(); |
172 | //write all resources to database | 174 | //write all resources to database |
173 | for (; i != i_end; ++i) { | 175 | for (; i != i_end; ++i) { |
174 | Resource_base *resource = *i; | 176 | Resource_base *resource = *i; |
175 | rc_string = resource->name() + string(": ") + resource->getString(); | 177 | const string &rc_string = m_root + '.' + resource->name() + ": " + resource->getString(); |
176 | XrmPutLineResource(&*database, rc_string.c_str()); | 178 | XrmPutLineResource(&*database, rc_string.c_str()); |
177 | } | 179 | } |
178 | 180 | ||
@@ -248,8 +250,8 @@ void ResourceManager::addResource(Resource_base &r) { | |||
248 | char *value_type; | 250 | char *value_type; |
249 | 251 | ||
250 | // now, load the value for this resource | 252 | // now, load the value for this resource |
251 | if (XrmGetResource(**m_database, r.name().c_str(), | 253 | if (XrmGetResource(**m_database, (m_root + '.' + r.name()).c_str(), |
252 | r.altName().c_str(), &value_type, &value)) { | 254 | (m_alt_root + '.' + r.altName()).c_str(), &value_type, &value)) { |
253 | r.setFromString(value.addr); | 255 | r.setFromString(value.addr); |
254 | } else { | 256 | } else { |
255 | std::cerr<<"Failed to read: "<<r.name()<<std::endl; | 257 | std::cerr<<"Failed to read: "<<r.name()<<std::endl; |
diff --git a/src/FbTk/Resource.hh b/src/FbTk/Resource.hh index 33a6bb2..744178b 100644 --- a/src/FbTk/Resource.hh +++ b/src/FbTk/Resource.hh | |||
@@ -87,6 +87,8 @@ class ResourceManager_base | |||
87 | public: | 87 | public: |
88 | typedef std::list<Resource_base *> ResourceList; | 88 | typedef std::list<Resource_base *> ResourceList; |
89 | 89 | ||
90 | ResourceManager_base(const std::string &root) : m_root(root) {} | ||
91 | |||
90 | virtual ~ResourceManager_base() {} | 92 | virtual ~ResourceManager_base() {} |
91 | 93 | ||
92 | /// Save all resouces registered to this class | 94 | /// Save all resouces registered to this class |
@@ -123,6 +125,7 @@ public: | |||
123 | 125 | ||
124 | protected: | 126 | protected: |
125 | ResourceList m_resourcelist; | 127 | ResourceList m_resourcelist; |
128 | const std::string m_root; | ||
126 | }; | 129 | }; |
127 | 130 | ||
128 | class ResourceManager: public ResourceManager_base | 131 | class ResourceManager: public ResourceManager_base |
@@ -130,7 +133,8 @@ class ResourceManager: public ResourceManager_base | |||
130 | public: | 133 | public: |
131 | // lock specifies if the database should be opened with one level locked | 134 | // lock specifies if the database should be opened with one level locked |
132 | // (useful for constructing inside initial set of constructors) | 135 | // (useful for constructing inside initial set of constructors) |
133 | ResourceManager(const char *filename, bool lock_db); | 136 | ResourceManager(const std::string &root, const std::string &alt_root, |
137 | const char *filename, bool lock_db); | ||
134 | virtual ~ResourceManager(); | 138 | virtual ~ResourceManager(); |
135 | 139 | ||
136 | /// Load all resources registered to this class | 140 | /// Load all resources registered to this class |
@@ -169,6 +173,7 @@ private: | |||
169 | XrmDatabaseHelper *m_database; | 173 | XrmDatabaseHelper *m_database; |
170 | 174 | ||
171 | std::string m_filename; | 175 | std::string m_filename; |
176 | std::string m_alt_root; | ||
172 | }; | 177 | }; |
173 | 178 | ||
174 | 179 | ||
diff --git a/src/fluxbox.cc b/src/fluxbox.cc index 4ef6a67..73d91ba 100644 --- a/src/fluxbox.cc +++ b/src/fluxbox.cc | |||
@@ -237,27 +237,27 @@ Fluxbox::Fluxbox(int argc, char **argv, | |||
237 | const std::string& rc_path, const std::string& rc_filename, bool xsync) | 237 | const std::string& rc_path, const std::string& rc_filename, bool xsync) |
238 | : FbTk::App(dpy_name.c_str()), | 238 | : FbTk::App(dpy_name.c_str()), |
239 | m_fbatoms(FbAtoms::instance()), | 239 | m_fbatoms(FbAtoms::instance()), |
240 | m_resourcemanager(rc_filename.c_str(), true), | 240 | m_resourcemanager("session", "Session", rc_filename.c_str(), true), |
241 | // TODO: shouldn't need a separate one for screen | 241 | // TODO: shouldn't need a separate one for screen |
242 | m_screen_rm(m_resourcemanager), | 242 | m_screen_rm(m_resourcemanager), |
243 | 243 | ||
244 | m_RC_PATH(rc_path), | 244 | m_RC_PATH(rc_path), |
245 | m_rc_ignoreborder(m_resourcemanager, false, "session.ignoreBorder", "Session.IgnoreBorder"), | 245 | m_rc_ignoreborder(m_resourcemanager, false, "ignoreBorder", "IgnoreBorder"), |
246 | m_rc_pseudotrans(m_resourcemanager, false, "session.forcePseudoTransparency", "Session.forcePseudoTransparency"), | 246 | m_rc_pseudotrans(m_resourcemanager, false, "forcePseudoTransparency", "forcePseudoTransparency"), |
247 | m_rc_colors_per_channel(m_resourcemanager, 4, | 247 | m_rc_colors_per_channel(m_resourcemanager, 4, |
248 | "session.colorsPerChannel", "Session.ColorsPerChannel"), | 248 | "colorsPerChannel", "ColorsPerChannel"), |
249 | m_rc_double_click_interval(m_resourcemanager, 250, "session.doubleClickInterval", "Session.DoubleClickInterval"), | 249 | m_rc_double_click_interval(m_resourcemanager, 250, "doubleClickInterval", "DoubleClickInterval"), |
250 | m_rc_tabs_padding(m_resourcemanager, 0, "session.tabPadding", "Session.TabPadding"), | 250 | m_rc_tabs_padding(m_resourcemanager, 0, "tabPadding", "TabPadding"), |
251 | m_rc_stylefile(m_resourcemanager, DEFAULTSTYLE, "session.styleFile", "Session.StyleFile"), | 251 | m_rc_stylefile(m_resourcemanager, DEFAULTSTYLE, "styleFile", "StyleFile"), |
252 | m_rc_styleoverlayfile(m_resourcemanager, m_RC_PATH + "/overlay", "session.styleOverlay", "Session.StyleOverlay"), | 252 | m_rc_styleoverlayfile(m_resourcemanager, m_RC_PATH + "/overlay", "styleOverlay", "StyleOverlay"), |
253 | m_rc_menufile(m_resourcemanager, m_RC_PATH + "/menu", "session.menuFile", "Session.MenuFile"), | 253 | m_rc_menufile(m_resourcemanager, m_RC_PATH + "/menu", "menuFile", "MenuFile"), |
254 | m_rc_keyfile(m_resourcemanager, m_RC_PATH + "/keys", "session.keyFile", "Session.KeyFile"), | 254 | m_rc_keyfile(m_resourcemanager, m_RC_PATH + "/keys", "keyFile", "KeyFile"), |
255 | m_rc_slitlistfile(m_resourcemanager, m_RC_PATH + "/slitlist", "session.slitlistFile", "Session.SlitlistFile"), | 255 | m_rc_slitlistfile(m_resourcemanager, m_RC_PATH + "/slitlist", "slitlistFile", "SlitlistFile"), |
256 | m_rc_appsfile(m_resourcemanager, m_RC_PATH + "/apps", "session.appsFile", "Session.AppsFile"), | 256 | m_rc_appsfile(m_resourcemanager, m_RC_PATH + "/apps", "appsFile", "AppsFile"), |
257 | m_rc_tabs_attach_area(m_resourcemanager, ATTACH_AREA_WINDOW, "session.tabsAttachArea", "Session.TabsAttachArea"), | 257 | m_rc_tabs_attach_area(m_resourcemanager, ATTACH_AREA_WINDOW, "tabsAttachArea", "TabsAttachArea"), |
258 | m_rc_cache_life(m_resourcemanager, 5, "session.cacheLife", "Session.CacheLife"), | 258 | m_rc_cache_life(m_resourcemanager, 5, "cacheLife", "CacheLife"), |
259 | m_rc_cache_max(m_resourcemanager, 200, "session.cacheMax", "Session.CacheMax"), | 259 | m_rc_cache_max(m_resourcemanager, 200, "cacheMax", "CacheMax"), |
260 | m_rc_auto_raise_delay(m_resourcemanager, 250, "session.autoRaiseDelay", "Session.AutoRaiseDelay"), | 260 | m_rc_auto_raise_delay(m_resourcemanager, 250, "autoRaiseDelay", "AutoRaiseDelay"), |
261 | m_masked_window(0), | 261 | m_masked_window(0), |
262 | m_mousescreen(0), | 262 | m_mousescreen(0), |
263 | m_keyscreen(0), | 263 | m_keyscreen(0), |
@@ -400,8 +400,8 @@ Fluxbox::Fluxbox(int argc, char **argv, | |||
400 | for (size_t s = 0; s < screens.size(); s++) { | 400 | for (size_t s = 0; s < screens.size(); s++) { |
401 | std::string sc_nr = FbTk::StringUtil::number2String(screens[s]); | 401 | std::string sc_nr = FbTk::StringUtil::number2String(screens[s]); |
402 | BScreen *screen = new BScreen(m_screen_rm.lock(), | 402 | BScreen *screen = new BScreen(m_screen_rm.lock(), |
403 | std::string("session.screen") + sc_nr, | 403 | std::string("screen") + sc_nr, |
404 | std::string("session.Screen") + sc_nr, | 404 | std::string("Screen") + sc_nr, |
405 | screens[s], ::ResourceLayer::NUM_LAYERS); | 405 | screens[s], ::ResourceLayer::NUM_LAYERS); |
406 | 406 | ||
407 | // already handled | 407 | // already handled |
@@ -1155,7 +1155,7 @@ void Fluxbox::save_rc() { | |||
1155 | for (; it != it_end; ++it) { | 1155 | for (; it != it_end; ++it) { |
1156 | BScreen *screen = *it; | 1156 | BScreen *screen = *it; |
1157 | 1157 | ||
1158 | std::string workspaces_string("session.screen"); | 1158 | std::string workspaces_string("screen"); |
1159 | workspaces_string += FbTk::StringUtil::number2String(screen->screenNumber()); | 1159 | workspaces_string += FbTk::StringUtil::number2String(screen->screenNumber()); |
1160 | workspaces_string += ".workspaceNames: "; | 1160 | workspaces_string += ".workspaceNames: "; |
1161 | 1161 | ||
@@ -1248,10 +1248,10 @@ void Fluxbox::load_rc(BScreen &screen) { | |||
1248 | 1248 | ||
1249 | std::string screen_number = FbTk::StringUtil::number2String(screen.screenNumber()); | 1249 | std::string screen_number = FbTk::StringUtil::number2String(screen.screenNumber()); |
1250 | 1250 | ||
1251 | std::string name_lookup("session.screen"); | 1251 | std::string name_lookup("screen"); |
1252 | name_lookup += screen_number; | 1252 | name_lookup += screen_number; |
1253 | name_lookup += ".workspaceNames"; | 1253 | name_lookup += ".workspaceNames"; |
1254 | std::string class_lookup("session.screen"); | 1254 | std::string class_lookup("screen"); |
1255 | class_lookup += screen_number; | 1255 | class_lookup += screen_number; |
1256 | class_lookup += ".WorkspaceNames"; | 1256 | class_lookup += ".WorkspaceNames"; |
1257 | 1257 | ||
diff --git a/src/main.cc b/src/main.cc index 1a61ff2..6e6e47d 100644 --- a/src/main.cc +++ b/src/main.cc | |||
@@ -414,8 +414,8 @@ void updateConfigFilesIfNeeded(const std::string& rc_file) { | |||
414 | 414 | ||
415 | const int CONFIG_VERSION = 13; // TODO: move this to 'defaults.hh' or 'config.h' | 415 | const int CONFIG_VERSION = 13; // TODO: move this to 'defaults.hh' or 'config.h' |
416 | 416 | ||
417 | FbTk::ResourceManager r_mgr(rc_file.c_str(), false); | 417 | FbTk::ResourceManager r_mgr("session", "Session", rc_file.c_str(), false); |
418 | FbTk::IntResource c_version(r_mgr, 0, "session.configVersion", "Session.ConfigVersion"); | 418 | FbTk::IntResource c_version(r_mgr, 0, "configVersion", "ConfigVersion"); |
419 | 419 | ||
420 | if (!r_mgr.load(rc_file.c_str())) { | 420 | if (!r_mgr.load(rc_file.c_str())) { |
421 | _FB_USES_NLS; | 421 | _FB_USES_NLS; |