order things to work correctly for now, with the python loading and the the config setting
This commit is contained in:
parent
2cbb95c3db
commit
893faed7b1
1 changed files with 55 additions and 29 deletions
|
@ -131,22 +131,6 @@ Openbox::Openbox(int argc, char **argv)
|
||||||
_cursors.ul_angle = XCreateFontCursor(**otk::display, XC_ul_angle);
|
_cursors.ul_angle = XCreateFontCursor(**otk::display, XC_ul_angle);
|
||||||
_cursors.ur_angle = XCreateFontCursor(**otk::display, XC_ur_angle);
|
_cursors.ur_angle = XCreateFontCursor(**otk::display, XC_ur_angle);
|
||||||
|
|
||||||
// initialize scripting
|
|
||||||
python_init(argv[0]);
|
|
||||||
|
|
||||||
// run the user's script or the system defaults if that fails
|
|
||||||
bool pyerr = false;
|
|
||||||
if (!python_exec(_scriptfilepath.c_str())) {
|
|
||||||
pyerr = true;
|
|
||||||
|
|
||||||
// reset all the python stuff
|
|
||||||
_bindings->removeAllKeys();
|
|
||||||
_bindings->removeAllButtons();
|
|
||||||
_bindings->removeAllEvents();
|
|
||||||
|
|
||||||
python_exec(SCRIPTDIR"/defaults.py"); // system default bahaviors
|
|
||||||
}
|
|
||||||
|
|
||||||
// initialize all the screens
|
// initialize all the screens
|
||||||
_focused_screen = 0;
|
_focused_screen = 0;
|
||||||
|
|
||||||
|
@ -177,29 +161,71 @@ Openbox::Openbox(int argc, char **argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
ScreenList::iterator it, end = _screens.end();
|
ScreenList::iterator it, end = _screens.end();
|
||||||
|
|
||||||
|
// run the user's script or the system defaults if that fails
|
||||||
|
bool pyerr, doretry;
|
||||||
|
do {
|
||||||
|
// initialize scripting
|
||||||
|
python_init(argv[0]);
|
||||||
|
|
||||||
|
// load all of the screens' configs here so we have a theme set if
|
||||||
|
// we decide to show the dialog below
|
||||||
|
for (it = _screens.begin(); it != end; ++it)
|
||||||
|
(*it)->config().load(); // load the defaults from config.py
|
||||||
|
|
||||||
|
pyerr = doretry = false;
|
||||||
|
|
||||||
|
// reset all the python stuff
|
||||||
|
_bindings->removeAllKeys();
|
||||||
|
_bindings->removeAllButtons();
|
||||||
|
_bindings->removeAllEvents();
|
||||||
|
|
||||||
|
int ret = python_exec(_scriptfilepath.c_str());
|
||||||
|
if (ret == 2)
|
||||||
|
pyerr = true;
|
||||||
|
|
||||||
|
if (ret) {
|
||||||
|
// reset all the python stuff
|
||||||
|
_bindings->removeAllKeys();
|
||||||
|
_bindings->removeAllButtons();
|
||||||
|
_bindings->removeAllEvents();
|
||||||
|
|
||||||
|
if (python_exec(SCRIPTDIR"/defaults.py")) // system default bahaviors
|
||||||
|
pyerr = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pyerr) {
|
||||||
|
std::string msg;
|
||||||
|
msg += _("An error occured while executing the python scripts.");
|
||||||
|
msg += "\n\n";
|
||||||
|
msg += _("See the exact error message in Openbox's output for details.");
|
||||||
|
otk::MessageDialog dia(this, _("Python Error"), msg);
|
||||||
|
otk::DialogButton ok(_("Okay"), true);
|
||||||
|
otk::DialogButton retry(_("Retry"));
|
||||||
|
dia.addButton(ok);
|
||||||
|
dia.addButton(retry);
|
||||||
|
dia.show();
|
||||||
|
dia.focus();
|
||||||
|
const otk::DialogButton &res = dia.run();
|
||||||
|
if (res == retry) {
|
||||||
|
doretry = true;
|
||||||
|
python_destroy(); // kill all the python modules so they reinit right
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} while (pyerr && doretry);
|
||||||
|
|
||||||
for (it = _screens.begin(); it != end; ++it) {
|
for (it = _screens.begin(); it != end; ++it) {
|
||||||
|
(*it)->config().load(); // load the config as the scripts may change it
|
||||||
(*it)->manageExisting();
|
(*it)->manageExisting();
|
||||||
}
|
}
|
||||||
|
|
||||||
// grab any keys set up before the screens existed
|
// grab any keys set up before the screens existed
|
||||||
_bindings->grabKeys(true);
|
//_bindings->grabKeys(true);
|
||||||
|
|
||||||
// set up input focus
|
// set up input focus
|
||||||
setFocusedClient(0);
|
setFocusedClient(0);
|
||||||
|
|
||||||
_state = State_Normal; // done starting
|
_state = State_Normal; // done starting
|
||||||
|
|
||||||
if (pyerr) {
|
|
||||||
std::string msg;
|
|
||||||
msg += _("An error occured while executing the python scripts.");
|
|
||||||
msg += "\n\n";
|
|
||||||
msg += _("See the exact error message in Openbox's output for details.");
|
|
||||||
otk::MessageDialog dia(this, _("Python Error"), msg);
|
|
||||||
dia.addButton(otk::DialogButton("OK", true));
|
|
||||||
dia.show();
|
|
||||||
dia.focus();
|
|
||||||
dia.run();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue