aboutsummaryrefslogtreecommitdiff
path: root/src/fluxbox.cc
diff options
context:
space:
mode:
authorPavel Labath <pavelo@centrum.sk>2011-06-16 19:09:37 (GMT)
committerPavel Labath <pavelo@centrum.sk>2011-11-01 09:57:19 (GMT)
commite3feca08ce0f6753f7e71ccb9088cf9003d41fc2 (patch)
treeabf0dafc53405d67fdf5ccc285961a37603092d3 /src/fluxbox.cc
parent0e8a7bfb12e6d03ec288cd1fdd0a1453d5e814e1 (diff)
downloadfluxbox_pavel-e3feca08ce0f6753f7e71ccb9088cf9003d41fc2.zip
fluxbox_pavel-e3feca08ce0f6753f7e71ccb9088cf9003d41fc2.tar.bz2
Replace ResourceManager with the lua version
Loading of an init file with the new manager works ok. Saving and restarting is still not completed. This touches many files because i removed the alternative name of resources. Unlike Xrm, lua does not have native support for alt names. It should be fairly easy to add them, but I think that is unnecessary and would be confusing.
Diffstat (limited to 'src/fluxbox.cc')
-rw-r--r--src/fluxbox.cc38
1 files changed, 11 insertions, 27 deletions
diff --git a/src/fluxbox.cc b/src/fluxbox.cc
index 9ccad80..0c391dc 100644
--- a/src/fluxbox.cc
+++ b/src/fluxbox.cc
@@ -45,7 +45,7 @@
45#include "FbTk/EventManager.hh" 45#include "FbTk/EventManager.hh"
46#include "FbTk/StringUtil.hh" 46#include "FbTk/StringUtil.hh"
47#include "FbTk/Util.hh" 47#include "FbTk/Util.hh"
48#include "FbTk/Resource.hh" 48#include "FbTk/LResource.hh"
49#include "FbTk/SimpleCommand.hh" 49#include "FbTk/SimpleCommand.hh"
50#include "FbTk/XrmDatabaseHelper.hh" 50#include "FbTk/XrmDatabaseHelper.hh"
51#include "FbTk/Command.hh" 51#include "FbTk/Command.hh"
@@ -227,10 +227,9 @@ Fluxbox::Fluxbox(int argc, char **argv,
227 const std::string& dpy_name, 227 const std::string& dpy_name,
228 const std::string& rc_path, const std::string& rc_filename, bool xsync) 228 const std::string& rc_path, const std::string& rc_filename, bool xsync)
229 : FbTk::App(dpy_name.c_str()), 229 : FbTk::App(dpy_name.c_str()),
230 m_l(new lua::state()),
230 m_fbatoms(FbAtoms::instance()), 231 m_fbatoms(FbAtoms::instance()),
231 m_resourcemanager("session", "Session", rc_filename.c_str(), true), 232 m_resourcemanager("session", *m_l),
232 // TODO: shouldn't need a separate one for screen
233 m_screen_rm(m_resourcemanager),
234 233
235 m_RC_PATH(rc_path), 234 m_RC_PATH(rc_path),
236 m_RC_INIT_FILE("init"), 235 m_RC_INIT_FILE("init"),
@@ -396,9 +395,8 @@ Fluxbox::Fluxbox(int argc, char **argv,
396 // create screens 395 // create screens
397 for (size_t s = 0; s < screens.size(); s++) { 396 for (size_t s = 0; s < screens.size(); s++) {
398 std::string sc_nr = FbTk::StringUtil::number2String(screens[s]); 397 std::string sc_nr = FbTk::StringUtil::number2String(screens[s]);
399 BScreen *screen = new BScreen(m_screen_rm.lock(), 398 BScreen *screen = new BScreen(m_resourcemanager,
400 std::string("screen") + sc_nr, 399 std::string("screen") + sc_nr,
401 std::string("Screen") + sc_nr,
402 screens[s], ::ResourceLayer::NUM_LAYERS); 400 screens[s], ::ResourceLayer::NUM_LAYERS);
403 401
404 // already handled 402 // already handled
@@ -440,20 +438,13 @@ Fluxbox::Fluxbox(int argc, char **argv,
440 438
441 m_reconfigure_wait = false; 439 m_reconfigure_wait = false;
442 440
443 m_resourcemanager.unlock();
444 ungrab(); 441 ungrab();
445 442
446 if (m_resourcemanager.lockDepth() != 0) {
447 fbdbg<<"--- resource manager lockdepth = "<<m_resourcemanager.lockDepth()<<endl;
448 }
449
450 m_starting = false; 443 m_starting = false;
451 // 444 //
452 // For dumping theme items 445 // For dumping theme items
453 // FbTk::ThemeManager::instance().listItems(); 446 // FbTk::ThemeManager::instance().listItems();
454 // 447 //
455 // m_resourcemanager.dump();
456
457} 448}
458 449
459 450
@@ -1136,7 +1127,6 @@ void Fluxbox::save_rc() {
1136 1127
1137 if (!dbfile.empty()) { 1128 if (!dbfile.empty()) {
1138 m_resourcemanager.save(dbfile.c_str(), dbfile.c_str()); 1129 m_resourcemanager.save(dbfile.c_str(), dbfile.c_str());
1139 m_screen_rm.save(dbfile.c_str(), dbfile.c_str());
1140 } else 1130 } else
1141 cerr<<_FB_CONSOLETEXT(Fluxbox, BadRCFile, "rc filename is invalid!", "Bad settings file")<<endl; 1131 cerr<<_FB_CONSOLETEXT(Fluxbox, BadRCFile, "rc filename is invalid!", "Bad settings file")<<endl;
1142 1132
@@ -1190,9 +1180,14 @@ string Fluxbox::getDefaultDataFilename(const char *name) const {
1190/// loads resources 1180/// loads resources
1191void Fluxbox::load_rc() { 1181void Fluxbox::load_rc() {
1192 _FB_USES_NLS; 1182 _FB_USES_NLS;
1183 lua::stack_sentry s(*m_l);
1193 1184
1194 string dbfile(getRcFilename()); 1185 string dbfile(getRcFilename());
1195 1186
1187 m_l->loadfile(dbfile.c_str());
1188 m_l->call(0, 0);
1189
1190 /* XXX
1196 if (!dbfile.empty()) { 1191 if (!dbfile.empty()) {
1197 if (!m_resourcemanager.load(dbfile.c_str())) { 1192 if (!m_resourcemanager.load(dbfile.c_str())) {
1198 cerr<<_FB_CONSOLETEXT(Fluxbox, CantLoadRCFile, "Failed to load database", "Failed trying to read rc file")<<":"<<dbfile<<endl; 1193 cerr<<_FB_CONSOLETEXT(Fluxbox, CantLoadRCFile, "Failed to load database", "Failed trying to read rc file")<<":"<<dbfile<<endl;
@@ -1203,7 +1198,7 @@ void Fluxbox::load_rc() {
1203 } else { 1198 } else {
1204 if (!m_resourcemanager.load(DEFAULT_INITFILE)) 1199 if (!m_resourcemanager.load(DEFAULT_INITFILE))
1205 cerr<<_FB_CONSOLETEXT(Fluxbox, CantLoadRCFile, "Failed to load database", "")<<": "<<DEFAULT_INITFILE<<endl; 1200 cerr<<_FB_CONSOLETEXT(Fluxbox, CantLoadRCFile, "Failed to load database", "")<<": "<<DEFAULT_INITFILE<<endl;
1206 } 1201 } */
1207 1202
1208 if (m_rc_menufile->empty()) 1203 if (m_rc_menufile->empty())
1209 m_rc_menufile.setDefaultValue(); 1204 m_rc_menufile.setDefaultValue();
@@ -1230,6 +1225,7 @@ void Fluxbox::load_rc(BScreen &screen) {
1230 1225
1231 XrmDatabaseHelper database; 1226 XrmDatabaseHelper database;
1232 1227
1228 // XXX make this a regular resource
1233 database = XrmGetFileDatabase(dbfile.c_str()); 1229 database = XrmGetFileDatabase(dbfile.c_str());
1234 if (database==0) 1230 if (database==0)
1235 database = XrmGetFileDatabase(DEFAULT_INITFILE); 1231 database = XrmGetFileDatabase(DEFAULT_INITFILE);
@@ -1264,18 +1260,6 @@ void Fluxbox::load_rc(BScreen &screen) {
1264 } 1260 }
1265 1261
1266 } 1262 }
1267
1268 if (!dbfile.empty()) {
1269 if (!m_screen_rm.load(dbfile.c_str())) {
1270 cerr<<_FB_CONSOLETEXT(Fluxbox, CantLoadRCFile, "Failed to load database", "Failed trying to read rc file")<<":"<<dbfile<<endl;
1271 cerr<<_FB_CONSOLETEXT(Fluxbox, CantLoadRCFileTrying, "Retrying with", "Retrying rc file loading with (the following file)")<<": "<<DEFAULT_INITFILE<<endl;
1272 if (!m_screen_rm.load(DEFAULT_INITFILE))
1273 cerr<<_FB_CONSOLETEXT(Fluxbox, CantLoadRCFile, "Failed to load database", "")<<": "<<DEFAULT_INITFILE<<endl;
1274 }
1275 } else {
1276 if (!m_screen_rm.load(DEFAULT_INITFILE))
1277 cerr<<_FB_CONSOLETEXT(Fluxbox, CantLoadRCFile, "Failed to load database", "")<<": "<<DEFAULT_INITFILE<<endl;
1278 }
1279} 1263}
1280 1264
1281void Fluxbox::reconfigure() { 1265void Fluxbox::reconfigure() {