static void fill_store (EmpathyIrcNetworkChooserDialog *self) { EmpathyIrcNetworkChooserDialogPriv *priv = GET_PRIV (self); GSList *networks, *l; networks = empathy_irc_network_manager_get_networks ( priv->network_manager); for (l = networks; l != NULL; l = g_slist_next (l)) { EmpathyIrcNetwork *network = l->data; GtkTreeIter iter; gtk_list_store_insert_with_values (priv->store, &iter, -1, COL_NETWORK_OBJ, network, COL_NETWORK_NAME, empathy_irc_network_get_name (network), -1); if (network == priv->network) { GtkTreeIter filter_iter = iter_to_filter_iter (self, &iter); select_iter (self, &filter_iter, FALSE); } g_object_unref (network); } g_slist_free (networks); }
static void irc_network_dialog_destroy_cb (GtkWidget *widget, EmpathyIrcNetworkChooserDialog *self) { EmpathyIrcNetworkChooserDialogPriv *priv = GET_PRIV (self); EmpathyIrcNetwork *network; GtkTreeIter iter, filter_iter; priv->changed = TRUE; network = dup_selected_network (self, &iter); if (network == NULL) return; /* name could be changed */ gtk_list_store_set (GTK_LIST_STORE (priv->store), &iter, COL_NETWORK_NAME, empathy_irc_network_get_name (network), -1); filter_iter = iter_to_filter_iter (self, &iter); scroll_to_iter (self, &filter_iter); gtk_widget_grab_focus (priv->treeview); g_object_unref (network); }
static void remove_network (EmpathyIrcNetworkChooserDialog *self) { EmpathyIrcNetworkChooserDialogPriv *priv = GET_PRIV (self); EmpathyIrcNetwork *network; GtkTreeIter iter; network = dup_selected_network (self, &iter); if (network == NULL) return; /* Hide the search after picking the network to get the right one */ gtk_widget_hide (priv->search); DEBUG ("Remove network %s", empathy_irc_network_get_name (network)); /* Delete network and select next network */ if (gtk_list_store_remove (priv->store, &iter)) { GtkTreeIter filter_iter = iter_to_filter_iter (self, &iter); select_iter (self, &filter_iter, TRUE); } else { /* this should only happen if the last network was deleted */ GtkTreeIter last, filter_iter; gint n_elements; n_elements = gtk_tree_model_iter_n_children (GTK_TREE_MODEL (priv->store), NULL); if (n_elements > 0) { gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (priv->store), &last, NULL, (n_elements-1)); filter_iter = iter_to_filter_iter (self, &last); select_iter (self, &filter_iter, TRUE); } } empathy_irc_network_manager_remove (priv->network_manager, network); gtk_widget_grab_focus (priv->treeview); g_object_unref (network); }
static void add_network (TpawIrcNetworkChooserDialog *self) { TpawIrcNetwork *network; GtkTreeIter iter, filter_iter; gtk_widget_hide (self->priv->search); network = tpaw_irc_network_new (_("New Network")); tpaw_irc_network_manager_add (self->priv->network_manager, network); gtk_list_store_insert_with_values (self->priv->store, &iter, -1, COL_NETWORK_OBJ, network, COL_NETWORK_NAME, tpaw_irc_network_get_name (network), -1); filter_iter = iter_to_filter_iter (self, &iter); select_iter (self, &filter_iter, TRUE); display_irc_network_dialog (self, network); g_object_unref (network); }