const PlumaEncoding * pluma_encoding_get_from_charset (const gchar *charset) { gint i; g_return_val_if_fail (charset != NULL, NULL); pluma_encoding_lazy_init (); if (charset == NULL) return NULL; if (g_ascii_strcasecmp (charset, "UTF-8") == 0) return pluma_encoding_get_utf8 (); i = 0; while (i < PLUMA_ENCODING_LAST) { if (g_ascii_strcasecmp (charset, encodings[i].charset) == 0) return &encodings[i]; ++i; } if (unknown_encoding.charset != NULL) { if (g_ascii_strcasecmp (charset, unknown_encoding.charset) == 0) return &unknown_encoding; } return NULL; }
PlumaDocumentSaver * pluma_document_saver_new (PlumaDocument *doc, const gchar *uri, const PlumaEncoding *encoding, PlumaDocumentNewlineType newline_type, PlumaDocumentSaveFlags flags) { PlumaDocumentSaver *saver; GType saver_type; g_return_val_if_fail (PLUMA_IS_DOCUMENT (doc), NULL); saver_type = PLUMA_TYPE_GIO_DOCUMENT_SAVER; if (encoding == NULL) encoding = pluma_encoding_get_utf8 (); saver = PLUMA_DOCUMENT_SAVER (g_object_new (saver_type, "document", doc, "uri", uri, "encoding", encoding, "newline_type", newline_type, "flags", flags, NULL)); return saver; }
static void update_menu (PlumaEncodingsComboBox *menu) { GtkListStore *store; GtkTreeIter iter; GSList *encodings, *l; gchar *str; const PlumaEncoding *utf8_encoding; const PlumaEncoding *current_encoding; store = menu->priv->store; /* Unset the previous model */ g_signal_handler_block (menu, menu->priv->changed_id); gtk_list_store_clear (store); gtk_combo_box_set_model (GTK_COMBO_BOX (menu), NULL); utf8_encoding = pluma_encoding_get_utf8 (); current_encoding = pluma_encoding_get_current (); if (!menu->priv->save_mode) { gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, NAME_COLUMN, _("Automatically Detected"), ENCODING_COLUMN, NULL, ADD_COLUMN, FALSE, -1); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, NAME_COLUMN, "", ENCODING_COLUMN, NULL, ADD_COLUMN, FALSE, -1); } if (current_encoding != utf8_encoding) str = pluma_encoding_to_string (utf8_encoding); else str = g_strdup_printf (_("Current Locale (%s)"), pluma_encoding_get_charset (utf8_encoding)); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, NAME_COLUMN, str, ENCODING_COLUMN, utf8_encoding, ADD_COLUMN, FALSE, -1); g_free (str); if ((utf8_encoding != current_encoding) && (current_encoding != NULL)) { str = g_strdup_printf (_("Current Locale (%s)"), pluma_encoding_get_charset (current_encoding)); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, NAME_COLUMN, str, ENCODING_COLUMN, current_encoding, ADD_COLUMN, FALSE, -1); g_free (str); } encodings = pluma_prefs_manager_get_shown_in_menu_encodings (); for (l = encodings; l != NULL; l = g_slist_next (l)) { const PlumaEncoding *enc = (const PlumaEncoding *)l->data; if ((enc != current_encoding) && (enc != utf8_encoding) && (enc != NULL)) { str = pluma_encoding_to_string (enc); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, NAME_COLUMN, str, ENCODING_COLUMN, enc, ADD_COLUMN, FALSE, -1); g_free (str); } } g_slist_free (encodings); if (pluma_prefs_manager_shown_in_menu_encodings_can_set ()) { gtk_list_store_append (store, &iter); /* separator */ gtk_list_store_set (store, &iter, NAME_COLUMN, "", ENCODING_COLUMN, NULL, ADD_COLUMN, FALSE, -1); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, NAME_COLUMN, _("Add or Remove..."), ENCODING_COLUMN, NULL, ADD_COLUMN, TRUE, -1); } /* set the model back */ gtk_combo_box_set_model (GTK_COMBO_BOX (menu), GTK_TREE_MODEL (menu->priv->store)); gtk_combo_box_set_active (GTK_COMBO_BOX (menu), 0); g_signal_handler_unblock (menu, menu->priv->changed_id); }