aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy-gtk/empathy-irc-network-dialog.c
diff options
context:
space:
mode:
authorGuillaume Desmottes <gdesmott@gnome.org>2008-02-10 07:39:48 +0800
committerGuillaume Desmottes <gdesmott@gnome.org>2008-02-10 07:39:48 +0800
commit6f3764d438d303d74c65be5bd3669601cd7a157c (patch)
treedac8c386d0b48f36f235718f79edadae5c730f57 /libempathy-gtk/empathy-irc-network-dialog.c
parentd55ac4c0a82c88801aa11a318be0ddf72de7dfc1 (diff)
downloadgsoc2013-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/empathy-irc-network-dialog.c')
-rw-r--r--libempathy-gtk/empathy-irc-network-dialog.c44
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;