diff options
author | Guillaume Desmottes <gdesmott@gnome.org> | 2008-02-10 07:39:48 +0800 |
---|---|---|
committer | Guillaume Desmottes <gdesmott@gnome.org> | 2008-02-10 07:39:48 +0800 |
commit | 6f3764d438d303d74c65be5bd3669601cd7a157c (patch) | |
tree | dac8c386d0b48f36f235718f79edadae5c730f57 /libempathy-gtk | |
parent | d55ac4c0a82c88801aa11a318be0ddf72de7dfc1 (diff) | |
download | gsoc2013-empathy-6f3764d438d303d74c65be5bd3669601cd7a157c.tar gsoc2013-empathy-6f3764d438d303d74c65be5bd3669601cd7a157c.tar.gz gsoc2013-empathy-6f3764d438d303d74c65be5bd3669601cd7a157c.tar.bz2 gsoc2013-empathy-6f3764d438d303d74c65be5bd3669601cd7a157c.tar.lz gsoc2013-empathy-6f3764d438d303d74c65be5bd3669601cd7a157c.tar.xz gsoc2013-empathy-6f3764d438d303d74c65be5bd3669601cd7a157c.tar.zst gsoc2013-empathy-6f3764d438d303d74c65be5bd3669601cd7a157c.zip |
update server buttons sensitive according current selection
Diffstat (limited to 'libempathy-gtk')
-rw-r--r-- | libempathy-gtk/empathy-irc-network-dialog.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/libempathy-gtk/empathy-irc-network-dialog.c b/libempathy-gtk/empathy-irc-network-dialog.c index 858c396c3..195ab12bd 100644 --- a/libempathy-gtk/empathy-irc-network-dialog.c +++ b/libempathy-gtk/empathy-irc-network-dialog.c @@ -231,6 +231,38 @@ irc_network_dialog_network_focus_cb (GtkWidget *widget, } static void +irc_network_dialog_network_update_buttons (EmpathyIrcNetworkDialog *dialog) +{ + GtkTreeSelection *selection; + GtkTreeModel *model; + GtkTreePath *path; + GtkTreeIter iter; + gboolean can_remove = FALSE, can_move_up = FALSE, can_move_down = FALSE; + int selected; + + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW ( + dialog->treeview_servers)); + + if (gtk_tree_selection_get_selected (selection, &model, &iter)) + { + path = gtk_tree_model_get_path (model, &iter); + + selected = gtk_tree_path_get_indices (path)[0]; + + can_remove = TRUE; + can_move_up = selected > 0; + can_move_down = + selected < gtk_tree_model_iter_n_children (model, NULL) - 1; + + gtk_tree_path_free (path); + } + + gtk_widget_set_sensitive (dialog->button_remove, can_remove); + gtk_widget_set_sensitive (dialog->button_up, can_move_up); + gtk_widget_set_sensitive (dialog->button_down, can_move_down); +} + +static void irc_network_dialog_button_add_clicked_cb (GtkWidget *widget, EmpathyIrcNetworkDialog *dialog) { @@ -253,6 +285,8 @@ irc_network_dialog_button_add_clicked_cb (GtkWidget *widget, gtk_tree_view_set_cursor (GTK_TREE_VIEW (dialog->treeview_servers), path, column, TRUE); + irc_network_dialog_network_update_buttons (dialog); + gtk_tree_path_free (path); g_object_unref (server); } @@ -277,6 +311,8 @@ irc_network_dialog_button_remove_clicked_cb (GtkWidget *widget, gtk_list_store_remove (GTK_LIST_STORE (model), &iter); empathy_irc_network_remove_server (dialog->network, server); + irc_network_dialog_network_update_buttons (dialog); + g_object_unref (server); } @@ -313,6 +349,8 @@ irc_network_dialog_button_up_clicked_cb (GtkWidget *widget, pos = gtk_tree_path_get_indices (path); empathy_irc_network_set_server_position (dialog->network, server, *pos); + irc_network_dialog_network_update_buttons (dialog); + g_object_unref (server); gtk_tree_path_free (path); } @@ -350,6 +388,8 @@ irc_network_dialog_button_down_clicked_cb (GtkWidget *widget, pos = gtk_tree_path_get_indices (path); empathy_irc_network_set_server_position (dialog->network, server, *pos); + irc_network_dialog_network_update_buttons (dialog); + gtk_tree_path_free (path); } @@ -360,6 +400,8 @@ irc_network_dialog_selection_changed_cb (GtkTreeSelection *treeselection, /* TODO: sensitive / unsensitive buttons according current * selection/configuration */ g_print ("selection changed\n"); + + irc_network_dialog_network_update_buttons (dialog); } GtkWidget * @@ -476,6 +518,8 @@ irc_network_dialog_show (EmpathyIrcNetwork *network, GTK_WINDOW (parent)); gtk_window_set_modal (GTK_WINDOW (dialog->dialog), TRUE); + irc_network_dialog_network_update_buttons (dialog); + gtk_widget_show_all (dialog->dialog); return dialog->dialog; |