From 1f2972377ee7f5e695c7b3b388a918688622aacb Mon Sep 17 00:00:00 2001 From: Nedko Arnaudov Date: Mon, 27 Sep 2010 22:48:35 +0300 Subject: [PATCH] gladish: persist the toolbar visibility setting across invocations --- gui/main.c | 46 ++++++++++++++++++++++++++++++++++++++++++++-- gui/menu.c | 5 +++++ gui/menu.h | 1 + wscript | 1 + 4 files changed, 51 insertions(+), 2 deletions(-) diff --git a/gui/main.c b/gui/main.c index ba840a57..3bc51094 100644 --- a/gui/main.c +++ b/gui/main.c @@ -33,6 +33,7 @@ #include "graph_view.h" #include "../common/catdup.h" #include "../proxies/studio_proxy.h" +#include "../proxies/conf_proxy.h" #include "create_room_dialog.h" #include "menu.h" #include "about.h" @@ -44,6 +45,8 @@ GtkWidget * g_main_win; GtkWidget * g_toolbar; +#define LADISH_CONF_KEY_GLADISH_TOOLBAR_VISIBILITY "/org/ladish/gladish/toolbar_visibility" + void set_main_window_title( graph_view_handle view) @@ -85,12 +88,46 @@ void menu_request_toggle_toolbar(bool visible) { gtk_widget_hide(g_toolbar); } + + conf_set_bool(LADISH_CONF_KEY_GLADISH_TOOLBAR_VISIBILITY, visible); +} + +void on_dbus_toggle_toobar(void * context, const char * key, const char * value) +{ + bool toolbar_visible; + + if (value == NULL) + { + toolbar_visible = false; + } + else + { + toolbar_visible = conf_string2bool(value); + } + + if (toolbar_visible) + { + gtk_widget_show(g_toolbar); + } + else + { + gtk_widget_hide(g_toolbar); + } + + menu_set_toolbar_visibility(toolbar_visible); } int main(int argc, char** argv) { gtk_init(&argc, &argv); + dbus_init(); + + if (!conf_proxy_init()) + { + return 1; + } + if (!canvas_init()) { log_error("Canvas initialization failed."); @@ -122,7 +159,10 @@ int main(int argc, char** argv) menu_init(); buffer_size_clear(); - dbus_init(); + if (!conf_register(LADISH_CONF_KEY_GLADISH_TOOLBAR_VISIBILITY, on_dbus_toggle_toobar, NULL)) + { + return 1; + } if (!init_jack()) { @@ -154,9 +194,11 @@ int main(int argc, char** argv) studio_proxy_uninit(); control_proxy_uninit(); uninit_jack(); - dbus_uninit(); create_room_dialog_uninit(); uninit_gtk_builder(); + conf_proxy_uninit(); + dbus_uninit(); + return 0; } diff --git a/gui/menu.c b/gui/menu.c index b2138fa3..d58e9c3d 100644 --- a/gui/menu.c +++ b/gui/menu.c @@ -217,6 +217,11 @@ bool menu_set_jack_latency(uint32_t buffer_size, bool force) return true; } +void menu_set_toolbar_visibility(bool visible) +{ + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(g_menu_item_view_toolbar), visible); +} + void menu_view_activated(bool room) { gtk_widget_set_sensitive(g_menu_item_destroy_room, room); diff --git a/gui/menu.h b/gui/menu.h index b092f0bd..ee140688 100644 --- a/gui/menu.h +++ b/gui/menu.h @@ -33,6 +33,7 @@ void menu_init(void); void menu_studio_state_changed(unsigned int studio_state); void menu_set_jack_latency_items_sensivity(bool sensitive); bool menu_set_jack_latency(uint32_t buffer_size, bool force); +void menu_set_toolbar_visibility(bool visible); void menu_view_activated(bool room); void fill_view_popup_menu(GtkMenu * menu, graph_view_handle view); diff --git a/wscript b/wscript index 985b288d..9dbacc47 100644 --- a/wscript +++ b/wscript @@ -458,6 +458,7 @@ def build(bld): 'control_proxy.c', 'app_supervisor_proxy.c', "room_proxy.c", + "conf_proxy.c", ]: gladish.source.append(os.path.join("proxies", source))