[nemiver] Don't fall appart when gconfd is down
- From: Dodji Seketeli <dodji src gnome org>
- To: svn-commits-list gnome org
- Subject: [nemiver] Don't fall appart when gconfd is down
- Date: Thu, 16 Jul 2009 14:49:20 +0000 (UTC)
commit c1957771ab7264fdce24a0018a1a4fd062d503b4
Author: Dodji Seketeli <dodji redhat com>
Date: Thu Jul 16 15:16:00 2009 +0200
Don't fall appart when gconfd is down
* src/dbgengine/nmv-gdb-engine.cc:
(GDBEngine::Priv::get_debugger_full_path): Catch exceptions raised
when accessing the configuration bus.
* src/persp/dbgperspective/nmv-dbg-perspective.cc:
(DBGPerspective::Priv::ensure_buffer_is_in_utf8,
DBGPerspective::on_shutdown_signal,
DBGPerspective::on_file_content_changed, DBGPerspective::init_body,
DBGPerspective::read_default_config,
DBGPerspective::debugger): Likewise.
* src/workbench/nmv-workbench.cc:
(Workbench::get_configuration_manager,
Workbench::init_window,Workbench::save_window_geometry): Likewise.
src/dbgengine/nmv-gdb-engine.cc | 6 ++-
src/persp/dbgperspective/nmv-dbg-perspective.cc | 50 +++++++++++++++++++---
src/workbench/nmv-workbench.cc | 20 ++++++++-
3 files changed, 66 insertions(+), 10 deletions(-)
---
diff --git a/src/dbgengine/nmv-gdb-engine.cc b/src/dbgengine/nmv-gdb-engine.cc
index 821a5a7..e900a5b 100644
--- a/src/dbgengine/nmv-gdb-engine.cc
+++ b/src/dbgengine/nmv-gdb-engine.cc
@@ -286,8 +286,12 @@ public:
const UString& get_debugger_full_path () const
{
+ NEMIVER_TRY
get_conf_mgr ()->get_key_value (CONF_KEY_GDB_BINARY,
- const_cast<Priv*> (this)->debugger_full_path);
+ const_cast<Priv*>
+ (this)->debugger_full_path);
+ NEMIVER_CATCH_NOX
+
if (debugger_full_path == "" ||
debugger_full_path == DEFAULT_GDB_BINARY) {
const_cast<Priv*> (this)->debugger_full_path =
diff --git a/src/persp/dbgperspective/nmv-dbg-perspective.cc b/src/persp/dbgperspective/nmv-dbg-perspective.cc
index f1a7b53..a2f16b2 100644
--- a/src/persp/dbgperspective/nmv-dbg-perspective.cc
+++ b/src/persp/dbgperspective/nmv-dbg-perspective.cc
@@ -1022,9 +1022,14 @@ struct DBGPerspective::Priv {
IConfMgrSafePtr conf_mgr = workbench->get_configuration_manager ();
THROW_IF_FAIL (conf_mgr);
std::list<UString> supported_encodings;
- if (conf_mgr->get_key_value (CONF_KEY_SOURCE_FILE_ENCODING_LIST,
- supported_encodings)
- && !supported_encodings.empty ()) {
+ bool have_gconf_values = false;
+
+ NEMIVER_TRY
+ have_gconf_values =
+ conf_mgr->get_key_value (CONF_KEY_SOURCE_FILE_ENCODING_LIST,
+ supported_encodings);
+ NEMIVER_CATCH_NOX
+ if (have_gconf_values && !supported_encodings.empty ()) {
LOG_DD ("trying encodings coming from gconf");
std::list<UString>::const_iterator it;
for (it = supported_encodings.begin ();
@@ -1908,7 +1913,10 @@ DBGPerspective::on_shutdown_signal ()
// next time.
IConfMgr &conf_mgr = get_conf_mgr ();
int pane_location = m_priv->body_main_paned->get_position();
+
+ NEMIVER_TRY
conf_mgr.set_key_value (CONF_KEY_STATUS_PANE_LOCATION, pane_location);
+ NEMIVER_CATCH
if (m_priv->prog_path == "") {
return;
@@ -2603,12 +2611,14 @@ DBGPerspective::on_file_content_changed (const UString &a_path)
reload_file ();
LOG_DD ("don't ask again: " << (int) dont_ask_again);
if (m_priv->confirm_before_reload_source == dont_ask_again) {
+ NEMIVER_TRY
get_conf_mgr ().set_key_value
(CONF_KEY_CONFIRM_BEFORE_RELOAD_SOURCE,
!dont_ask_again);
get_conf_mgr ().set_key_value
(CONF_KEY_ALLOW_AUTO_RELOAD_SOURCE,
need_to_reload_file);
+ NEMIVER_CATCH_NOX
}
std::list<UString>::iterator iter =
std::find (pending_notifications.begin (),
@@ -3436,7 +3446,10 @@ DBGPerspective::init_body ()
IConfMgr &conf_mgr = get_conf_mgr ();
int pane_location = -1; // don't specifically set a location
// if we can't read the last location from gconf
+ NEMIVER_TRY
conf_mgr.get_key_value (CONF_KEY_STATUS_PANE_LOCATION, pane_location);
+ NEMIVER_CATCH_NOX
+
if (pane_location > 0) {
m_priv->body_main_paned->set_position (pane_location);
}
@@ -3456,8 +3469,12 @@ DBGPerspective::init_body ()
ui_utils::get_widget_from_glade<Gtk::Notebook> (m_priv->body_glade,
"statusesnotebook");
int width=100, height=70;
+
+ NEMIVER_TRY
conf_mgr.get_key_value (CONF_KEY_STATUS_WIDGET_MINIMUM_WIDTH, width);
conf_mgr.get_key_value (CONF_KEY_STATUS_WIDGET_MINIMUM_HEIGHT, height);
+ NEMIVER_CATCH_NOX
+
LOG_DD ("setting status widget min size: width: "
<< width
<< ", height: "
@@ -4143,19 +4160,28 @@ DBGPerspective::read_default_config ()
IConfMgr &conf_mgr = get_conf_mgr ();
if (m_priv->source_dirs.empty ()) {
UString dirs;
+
+ NEMIVER_TRY
conf_mgr.get_key_value (CONF_KEY_NEMIVER_SOURCE_DIRS, dirs);
+ NEMIVER_CATCH_NOX
+
LOG_DD ("got source dirs '" << dirs << "' from conf mgr");
- m_priv->source_dirs = dirs.split (":");
- LOG_DD ("that makes '" <<(int)m_priv->source_dirs.size()
- << "' dir paths");
+ if (!dirs.empty ()) {
+ m_priv->source_dirs = dirs.split (":");
+ LOG_DD ("that makes '" <<(int)m_priv->source_dirs.size()
+ << "' dir paths");
+ }
+ NEMIVER_TRY
conf_mgr.get_key_value (CONF_KEY_SHOW_DBG_ERROR_DIALOGS,
m_priv->show_dbg_errors);
+ NEMIVER_CATCH_NOX
conf_mgr.value_changed_signal ().connect
(sigc::mem_fun (*this,
&DBGPerspective::on_conf_key_changed_signal));
}
+ NEMIVER_TRY
conf_mgr.get_key_value (CONF_KEY_HIGHLIGHT_SOURCE_CODE,
m_priv->enable_syntax_highlight);
conf_mgr.get_key_value (CONF_KEY_SHOW_SOURCE_LINE_NUMBERS,
@@ -4168,9 +4194,15 @@ DBGPerspective::read_default_config ()
m_priv->custom_font_name);
conf_mgr.get_key_value (CONF_KEY_SYSTEM_FONT_NAME,
m_priv->system_font_name);
+ NEMIVER_CATCH_NOX
+
#ifdef WITH_SOURCEVIEWMM2
- UString style_id;
+ UString style_id ("classic");
+
+ NEMIVER_TRY
conf_mgr.get_key_value (CONF_KEY_EDITOR_STYLE_SCHEME, style_id);
+ NEMIVER_CATCH_NOX
+
m_priv->editor_style = gtksourceview::SourceStyleSchemeManager::get_default
()->get_scheme (style_id);
#endif // WITH_SOURCEVIEWMM2
@@ -6363,8 +6395,12 @@ DBGPerspective::debugger ()
THROW_IF_FAIL (module_manager);
UString debugger_dynmod_name;
+
+ NEMIVER_TRY
get_conf_mgr ().get_key_value (CONF_KEY_DEBUGGER_ENGINE_DYNMOD_NAME,
debugger_dynmod_name);
+ NEMIVER_CATCH_NOX
+
LOG_DD ("got debugger_dynmod_name from confmgr: '"
<< debugger_dynmod_name << "'");
if (debugger_dynmod_name == "") {
diff --git a/src/workbench/nmv-workbench.cc b/src/workbench/nmv-workbench.cc
index 329d798..50cb411 100644
--- a/src/workbench/nmv-workbench.cc
+++ b/src/workbench/nmv-workbench.cc
@@ -513,9 +513,13 @@ Workbench::get_configuration_manager ()
m_priv->conf_mgr = dynmod_manager->load_iface <IConfMgr> ("gconfmgr",
"IConfMgr") ;
+ NEMIVER_TRY
+
m_priv->conf_mgr->set_key_dir_to_notify ("/apps/nemiver") ;
m_priv->conf_mgr->add_key_to_notify (
"/desktop/gnome/interface/monospace_font_name") ;
+
+ NEMIVER_CATCH
}
THROW_IF_FAIL (m_priv->conf_mgr) ;
return m_priv->conf_mgr ;
@@ -572,15 +576,19 @@ Workbench::init_window ()
IConfMgrSafePtr conf_mgr = get_configuration_manager () ;
THROW_IF_FAIL (conf_mgr) ;
- int width=0, height=0, pos_x=0, pos_y=0 ;
+ int width=700, height=500, pos_x=0, pos_y=0 ;
+ bool maximized=false ;
+
LOG_DD ("getting windows geometry from confmgr ...") ;
+
+ NEMIVER_TRY
conf_mgr->get_key_value (CONF_KEY_NEMIVER_WINDOW_WIDTH, width) ;
conf_mgr->get_key_value (CONF_KEY_NEMIVER_WINDOW_HEIGHT, height) ;
conf_mgr->get_key_value (CONF_KEY_NEMIVER_WINDOW_POSITION_X, pos_x) ;
conf_mgr->get_key_value (CONF_KEY_NEMIVER_WINDOW_POSITION_Y, pos_y) ;
- bool maximized=false ;
conf_mgr->get_key_value (CONF_KEY_NEMIVER_WINDOW_MAXIMIZED, maximized) ;
LOG_DD ("got windows geometry from confmgr.") ;
+ NEMIVER_CATCH
if (width) {
LOG_DD ("restoring windows geometry from confmgr ...") ;
@@ -596,12 +604,17 @@ Workbench::init_window ()
//set the minimum width/height of nemiver, just in case.
width=0, height=0 ;
+
+ NEMIVER_TRY
conf_mgr->get_key_value (CONF_KEY_NEMIVER_WINDOW_MINIMUM_WIDTH, width) ;
conf_mgr->get_key_value (CONF_KEY_NEMIVER_WINDOW_MINIMUM_HEIGHT, height) ;
+ NEMIVER_CATCH
+
if (!width)
width = 700;
if (!height)
height = 500;
+
m_priv->root_window->set_size_request (width, height) ;
LOG_DD ("set windows min size to ("
<< (int) width
@@ -805,7 +818,9 @@ Workbench::save_window_geometry ()
bool maximized = (m_priv->root_window->get_window()->get_state()
& Gdk::WINDOW_STATE_MAXIMIZED);
+ NEMIVER_TRY
conf_mgr->set_key_value (CONF_KEY_NEMIVER_WINDOW_MAXIMIZED, maximized) ;
+
if (!maximized) {
LOG_DD ("storing windows geometry to confmgr...") ;
conf_mgr->set_key_value (CONF_KEY_NEMIVER_WINDOW_WIDTH, width) ;
@@ -816,6 +831,7 @@ Workbench::save_window_geometry ()
} else {
LOG_DD ("windows was maximized, didn't store its geometry") ;
}
+ NEMIVER_CATCH_NOX
}
void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]