summaryrefslogtreecommitdiff
path: root/pluma/dialogs/pluma-encodings-dialog.c
diff options
context:
space:
mode:
Diffstat (limited to 'pluma/dialogs/pluma-encodings-dialog.c')
-rw-r--r--pluma/dialogs/pluma-encodings-dialog.c41
1 files changed, 32 insertions, 9 deletions
diff --git a/pluma/dialogs/pluma-encodings-dialog.c b/pluma/dialogs/pluma-encodings-dialog.c
index fe58ad54..cff41e2b 100644
--- a/pluma/dialogs/pluma-encodings-dialog.c
+++ b/pluma/dialogs/pluma-encodings-dialog.c
@@ -40,14 +40,16 @@
#include "pluma-encodings-dialog.h"
#include "pluma-encodings.h"
-#include "pluma-prefs-manager.h"
#include "pluma-utils.h"
#include "pluma-debug.h"
#include "pluma-help.h"
#include "pluma-dirs.h"
+#include "pluma-settings.h"
struct _PlumaEncodingsDialogPrivate
{
+ GSettings *enc_settings;
+
GtkListStore *available_liststore;
GtkListStore *displayed_liststore;
GtkWidget *available_treeview;
@@ -63,7 +65,7 @@ G_DEFINE_TYPE_WITH_PRIVATE (PlumaEncodingsDialog, pluma_encodings_dialog, GTK_TY
static void
pluma_encodings_dialog_finalize (GObject *object)
{
- PlumaEncodingsDialogPrivate *priv = PLUMA_ENCODINGS_DIALOG (object)->priv;
+ PlumaEncodingsDialogPrivate *priv = pluma_encodings_dialog_get_instance_private (PLUMA_ENCODINGS_DIALOG(object));
g_slist_free (priv->show_in_menu_list);
@@ -71,11 +73,22 @@ pluma_encodings_dialog_finalize (GObject *object)
}
static void
+pluma_encodings_dialog_dispose (GObject *object)
+{
+ PlumaEncodingsDialogPrivate *priv = pluma_encodings_dialog_get_instance_private (PLUMA_ENCODINGS_DIALOG(object));
+
+ g_clear_object (&priv->enc_settings);
+
+ G_OBJECT_CLASS (pluma_encodings_dialog_parent_class)->dispose (object);
+}
+
+static void
pluma_encodings_dialog_class_init (PlumaEncodingsDialogClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->finalize = pluma_encodings_dialog_finalize;
+ object_class->dispose = pluma_encodings_dialog_dispose;
}
enum {
@@ -232,14 +245,16 @@ static void
init_shown_in_menu_tree_model (PlumaEncodingsDialog *dialog)
{
GtkTreeIter iter;
+ gchar **enc_strv;
GSList *list, *tmp;
/* add data to the list store */
- list = pluma_prefs_manager_get_shown_in_menu_encodings ();
+ enc_strv = g_settings_get_strv (dialog->priv->enc_settings,
+ PLUMA_SETTINGS_ENCODING_SHOWN_IN_MENU);
- tmp = list;
+ list = _pluma_encoding_strv_to_list ((const gchar * const *)enc_strv);
- while (tmp != NULL)
+ for (tmp = list; tmp != NULL; tmp = g_slist_next (tmp))
{
const PlumaEncoding *enc;
@@ -256,10 +271,9 @@ init_shown_in_menu_tree_model (PlumaEncodingsDialog *dialog)
pluma_encoding_get_charset (enc),
COLUMN_NAME,
pluma_encoding_get_name (enc), -1);
-
- tmp = g_slist_next (tmp);
}
+ g_strfreev (enc_strv);
g_slist_free (list);
}
@@ -277,8 +291,15 @@ response_handler (GtkDialog *dialog,
if (response_id == GTK_RESPONSE_OK)
{
- g_return_if_fail (pluma_prefs_manager_shown_in_menu_encodings_can_set ());
- pluma_prefs_manager_set_shown_in_menu_encodings (dlg->priv->show_in_menu_list);
+ gchar **encs;
+
+ encs = _pluma_encoding_list_to_strv (dlg->priv->show_in_menu_list);
+
+ g_settings_set_strv (dlg->priv->enc_settings,
+ PLUMA_SETTINGS_ENCODING_SHOWN_IN_MENU,
+ (const gchar * const *)encs);
+
+ g_strfreev (encs);
}
}
@@ -303,6 +324,8 @@ pluma_encodings_dialog_init (PlumaEncodingsDialog *dlg)
dlg->priv = pluma_encodings_dialog_get_instance_private (dlg);
+ dlg->priv->enc_settings = g_settings_new (PLUMA_SCHEMA_ID);
+
pluma_dialog_add_button (GTK_DIALOG (dlg), _("_Cancel"), "process-stop", GTK_RESPONSE_CANCEL);
pluma_dialog_add_button (GTK_DIALOG (dlg), _("_OK"), "gtk-ok", GTK_RESPONSE_OK);
pluma_dialog_add_button (GTK_DIALOG (dlg), _("_Help"), "help-browser", GTK_RESPONSE_HELP);