static void terminal_app_encoding_list_notify_cb (GSettings *settings, const char *key, TerminalApp *app) { gs_strfreev char **encodings = NULL; int i; TerminalEncoding *encoding; app->encodings_locked = !g_settings_is_writable (settings, key); /* Mark all as non-active, then re-enable the active ones */ g_hash_table_foreach (app->encodings, (GHFunc) encoding_mark_active, GUINT_TO_POINTER (FALSE)); /* First add the locale's charset */ encoding = g_hash_table_lookup (app->encodings, "current"); g_assert (encoding); if (terminal_encoding_is_valid (encoding)) encoding->is_active = TRUE; /* Also always make UTF-8 available */ encoding = g_hash_table_lookup (app->encodings, "UTF-8"); g_assert (encoding); if (terminal_encoding_is_valid (encoding)) encoding->is_active = TRUE; g_settings_get (settings, key, "^as", &encodings); for (i = 0; encodings[i] != NULL; ++i) { encoding = terminal_app_ensure_encoding (app, encodings[i]); if (!terminal_encoding_is_valid (encoding)) continue; encoding->is_active = TRUE; } g_signal_emit (app, signals[ENCODING_LIST_CHANGED], 0); }
static void liststore_insert_encoding (gpointer key, TerminalEncoding *encoding, GtkListStore *store) { GtkTreeIter iter; if (!terminal_encoding_is_valid (encoding)) return; gtk_list_store_insert_with_values (store, &iter, -1, COLUMN_CHARSET, terminal_encoding_get_charset (encoding), COLUMN_NAME, encoding->name, COLUMN_DATA, encoding, -1); }