diff options
| author | Dana Jansens <danakj@orodu.net> | 2003-02-19 19:28:11 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2003-02-19 19:28:11 +0000 |
| commit | feaf3ac4e5847d27e3747b09e7443915afa97b0b (patch) | |
| tree | 6548af5ed3f15b15b2d3e4a66a2b9795b0a4e18b /src/openbox.cc | |
| parent | 1dac42d9ed074bcd44f9d1016b0971ae473cc2eb (diff) | |
time to refactor shit hard
Diffstat (limited to 'src/openbox.cc')
| -rw-r--r-- | src/openbox.cc | 64 |
1 files changed, 20 insertions, 44 deletions
diff --git a/src/openbox.cc b/src/openbox.cc index 951d4ab4..d2ce85fd 100644 --- a/src/openbox.cc +++ b/src/openbox.cc @@ -134,6 +134,7 @@ Openbox::Openbox(int argc, char **argv) // initialize all the screens _focused_screen = 0; + _managed_count = 0; for (int i = 0, max = ScreenCount(**otk::display); i < max; ++i) { Screen *screen; @@ -148,77 +149,52 @@ Openbox::Openbox(int argc, char **argv) _screens.push_back(screen); if (!_focused_screen) // set this to the first screen managed _focused_screen = screen; + _managed_count++; } else { delete screen; _screens.push_back(0); } } - if (_screens.empty()) { + if (!_managed_count) { printf(_("No screens were found without a window manager. Exiting.\n")); ::exit(1); } assert(_focused_screen); - 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; - } + // initialize scripting + python_init(argv[0]); - if (pyerr) { + // load the theme XXX TEMP SHIT + otk::RenderStyle::setStyle(0, ""); + + int ret = python_exec(_scriptfilepath.c_str()); + if (ret == 2) { 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")); + otk::DialogButton retry(_("Restart")); 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 + _restart = _shutdown = true; + return; } - } - } while (pyerr && doretry); - - for (it = _screens.begin(); it != end; ++it) { - (*it)->config().load(); // load the config as the scripts may change it - (*it)->manageExisting(); } + + if (ret) + python_exec(SCRIPTDIR"/defaults.py"); // system default bahaviors + + ScreenList::iterator it, end = _screens.end(); + for (it = _screens.begin(); it != end; ++it) + if (*it) (*it)->manageExisting(); // grab any keys set up before the screens existed //_bindings->grabKeys(true); |
