From bbaf31a7c36a555a46a85d7d2308d0597da842ff Mon Sep 17 00:00:00 2001 From: Joel Klinghed Date: Sat, 19 Nov 2011 13:20:44 +0100 Subject: Support hiding the toolbar --- gui/viewtorrents.glade | 63 +++++++++++++++++++++++++++++++++++--------------- src/main.c | 48 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+), 19 deletions(-) diff --git a/gui/viewtorrents.glade b/gui/viewtorrents.glade index 55715d1..98ffaba 100644 --- a/gui/viewtorrents.glade +++ b/gui/viewtorrents.glade @@ -2,22 +2,21 @@ + - - Rehash - Rehash selected torrent - gtk-refresh + + Connect + Connect to rTorrent + gtk-connect - - - Stop - Stop selected torrent - gtk-media-stop + + Disconnect + Disconnect from rTorrent + gtk-disconnect - @@ -28,18 +27,20 @@ - - Disconnect - Disconnect from rTorrent - gtk-disconnect + + Stop + Stop selected torrent + gtk-media-stop + - - Connect - Connect to rTorrent - gtk-connect + + Rehash + Rehash selected torrent + gtk-refresh + @@ -79,7 +80,6 @@ - False 5 @@ -391,6 +391,31 @@ If authentication is needed, enter username and password as well. + + + False + True + False + _View + True + + + True + False + + + False + True + False + Toolbar + True + True + + + + + + False diff --git a/src/main.c b/src/main.c index 37b864f..edeac37 100644 --- a/src/main.c +++ b/src/main.c @@ -64,6 +64,9 @@ typedef struct GtkWidget* top; GtkAction* connectaction, * disconnectaction; GtkAction* startaction, * stopaction, * rehashaction; + GtkCheckMenuItem* viewtoolbaritem; + + GtkToolbar* toolbar; GtkWidget* connectdlg; GtkWidget* connectdlg_url; @@ -261,6 +264,8 @@ static void do_start(GtkAction* action, gpointer data); static void do_stop(GtkAction* action, gpointer data); static void do_rehash(GtkAction* action, gpointer data); +static void do_viewtoolbaritem(GtkCheckMenuItem* checkmenuitem, gpointer data); + static void do_about(GtkMenuItem* menuitem, gpointer data); static gpointer worker_main(gpointer data); @@ -379,6 +384,14 @@ int main(int argc, char** argv) gtk_action_set_sensitive(master.stopaction, FALSE); gtk_action_set_sensitive(master.rehashaction, FALSE); + master.toolbar = GTK_TOOLBAR(gtk_builder_get_object(builder, "toolbar")); + + master.viewtoolbaritem = + GTK_CHECK_MENU_ITEM(gtk_builder_get_object(builder, + "viewtoolbaritem")); + g_signal_connect(master.viewtoolbaritem, + "toggled", G_CALLBACK(do_viewtoolbaritem), &master); + pwddlg = GTK_WIDGET(gtk_builder_get_object(builder, "pwddlg")); gtk_dialog_set_default_response(GTK_DIALOG(pwddlg), GTK_RESPONSE_OK); @@ -457,6 +470,22 @@ int main(int argc, char** argv) gtk_widget_show_all(master.top); + { + GError* error = NULL; + gboolean view = + g_key_file_get_boolean(master.config, "view", "toolbar", &error); + if (!view && error) + { + g_clear_error(&error); + view = TRUE; /* default */ + } + gtk_check_menu_item_set_active(master.viewtoolbaritem, view); + if (!view) + { + gtk_widget_hide(GTK_WIDGET(master.toolbar)); + } + } + master.connectdlg = GTK_WIDGET(gtk_builder_get_object(builder, "connectdlg")); gtk_dialog_set_default_response(GTK_DIALOG(master.connectdlg), @@ -2249,6 +2278,25 @@ void listselection_changed(GtkTreeSelection* selection, gtk_action_set_sensitive(master->rehashaction, FALSE); } +void do_viewtoolbaritem(GtkCheckMenuItem* checkmenuitem, gpointer data) +{ + master_t* master = data; + gboolean active = gtk_check_menu_item_get_active(checkmenuitem); + if (active != gtk_widget_get_visible(GTK_WIDGET(master->toolbar))) + { + if (active) + { + gtk_widget_show_all(GTK_WIDGET(master->toolbar)); + } + else + { + gtk_widget_hide(GTK_WIDGET(master->toolbar)); + } + g_key_file_set_boolean(master->config, "view", "toolbar", active); + save_config(master); + } +} + void do_about(GtkMenuItem* G_GNUC_UNUSED menuitem, gpointer data) { master_t* master = data; -- cgit v1.2.3-70-g09d2