diff options
Diffstat (limited to 'src/main.c')
| -rw-r--r-- | src/main.c | 48 |
1 files changed, 48 insertions, 0 deletions
@@ -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; |
