[gedit/wip/merge-encoding-settings: 24/33] EncodingsDialog: remove chosen encodings in the available encodings
- From: Sébastien Wilmet <swilmet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gedit/wip/merge-encoding-settings: 24/33] EncodingsDialog: remove chosen encodings in the available encodings
- Date: Sat, 28 Mar 2015 19:11:53 +0000 (UTC)
commit a3fca7b0c44e6f70258fa0a6ebb76348cd51cd6f
Author: Sébastien Wilmet <swilmet gnome org>
Date: Wed Mar 18 18:08:22 2015 +0100
EncodingsDialog: remove chosen encodings in the available encodings
An encoding is either chosen or available, but not in the two lists.
gedit/gedit-encodings-dialog.c | 81 ++++++++++++++++++++-------------------
1 files changed, 42 insertions(+), 39 deletions(-)
---
diff --git a/gedit/gedit-encodings-dialog.c b/gedit/gedit-encodings-dialog.c
index bd31f35..f8d2547 100644
--- a/gedit/gedit-encodings-dialog.c
+++ b/gedit/gedit-encodings-dialog.c
@@ -306,52 +306,57 @@ remove_button_clicked_cb (GtkWidget *button,
}
static void
-init_liststore_chosen (GeditEncodingsDialog *dialog)
+append_encoding (GtkListStore *liststore,
+ const GtkSourceEncoding *encoding)
{
GtkTreeIter iter;
+
+ gtk_list_store_append (liststore, &iter);
+ gtk_list_store_set (liststore, &iter,
+ COLUMN_NAME, gtk_source_encoding_get_name (encoding),
+ COLUMN_CHARSET, gtk_source_encoding_get_charset (encoding),
+ -1);
+}
+
+static void
+init_liststores (GeditEncodingsDialog *dialog)
+{
gchar **enc_strv;
- GSList *list;
+ GSList *chosen_encodings;
+ GSList *all_encodings;
GSList *l;
+ /* Chosen encodings */
+
enc_strv = g_settings_get_strv (dialog->priv->enc_settings,
GEDIT_SETTINGS_CANDIDATE_ENCODINGS);
- list = _gedit_utils_encoding_strv_to_list ((const gchar * const *)enc_strv);
+ chosen_encodings = _gedit_utils_encoding_strv_to_list ((const gchar * const *)enc_strv);
- for (l = list; l != NULL; l = l->next)
+ for (l = chosen_encodings; l != NULL; l = l->next)
{
const GtkSourceEncoding *cur_encoding = l->data;
-
- gtk_list_store_append (dialog->priv->liststore_chosen, &iter);
- gtk_list_store_set (dialog->priv->liststore_chosen, &iter,
- COLUMN_NAME, gtk_source_encoding_get_name (cur_encoding),
- COLUMN_CHARSET, gtk_source_encoding_get_charset (cur_encoding),
- -1);
+ append_encoding (dialog->priv->liststore_chosen, cur_encoding);
}
- g_slist_free (list);
-}
-
-static void
-init_liststore_available (GeditEncodingsDialog *dialog)
-{
- GSList *all_encodings;
- GSList *l;
+ /* Available encodings */
all_encodings = gtk_source_encoding_get_all ();
- for (l = all_encodings; l != NULL; l = l->next)
+ for (l = chosen_encodings; l != NULL; l = l->next)
{
- const GtkSourceEncoding *encoding = l->data;
- GtkTreeIter iter;
+ const GtkSourceEncoding *chosen_encoding = l->data;
+ all_encodings = g_slist_remove (all_encodings, chosen_encoding);
+ }
- gtk_list_store_append (dialog->priv->liststore_available, &iter);
- gtk_list_store_set (dialog->priv->liststore_available, &iter,
- COLUMN_NAME, gtk_source_encoding_get_name (encoding),
- COLUMN_CHARSET, gtk_source_encoding_get_charset (encoding),
- -1);
+ for (l = all_encodings; l != NULL; l = l->next)
+ {
+ const GtkSourceEncoding *cur_encoding = l->data;
+ append_encoding (dialog->priv->liststore_available, cur_encoding);
}
+ g_strfreev (enc_strv);
+ g_slist_free (chosen_encodings);
g_slist_free (all_encodings);
}
@@ -368,20 +373,10 @@ gedit_encodings_dialog_init (GeditEncodingsDialog *dialog)
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
- g_signal_connect (dialog->priv->add_button,
- "clicked",
- G_CALLBACK (add_button_clicked_cb),
- dialog);
-
- g_signal_connect (dialog->priv->remove_button,
- "clicked",
- G_CALLBACK (remove_button_clicked_cb),
- dialog);
+ init_liststores (dialog);
/* Tree view of available encodings */
- init_liststore_available (dialog);
-
gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (dialog->priv->sort_available),
COLUMN_NAME,
GTK_SORT_ASCENDING);
@@ -395,9 +390,12 @@ gedit_encodings_dialog_init (GeditEncodingsDialog *dialog)
update_add_button_sensitivity (dialog);
- /* Tree view of chosen encodings */
+ g_signal_connect (dialog->priv->add_button,
+ "clicked",
+ G_CALLBACK (add_button_clicked_cb),
+ dialog);
- init_liststore_chosen (dialog);
+ /* Tree view of chosen encodings */
selection = gtk_tree_view_get_selection (dialog->priv->treeview_chosen);
@@ -407,6 +405,11 @@ gedit_encodings_dialog_init (GeditEncodingsDialog *dialog)
dialog);
update_remove_button_sensitivity (dialog);
+
+ g_signal_connect (dialog->priv->remove_button,
+ "clicked",
+ G_CALLBACK (remove_button_clicked_cb),
+ dialog);
}
GtkWidget *
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]