summaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c48
1 files changed, 48 insertions, 0 deletions
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;