List all available formats in dialog
[projects/chimara/chimara.git] / player / preferences.c
index 1c1527d30470ef048421319ceba728e74020ba4c..6287f7723f29c7c7e256d729dd3f6d8446e8fbcb 100644 (file)
@@ -165,8 +165,28 @@ preferences_create(ChimaraGlk *glk)
                g_free(filename);
        }
 
+       /* Populate the list of available interpreters */
+       GtkListStore *interp_list = GTK_LIST_STORE( load_object("available_interpreters") );
+       unsigned int count;
+       GtkTreeIter tree_iter;
+       for(count = 0; count < CHIMARA_IF_NUM_INTERPRETERS; count++) {
+               gtk_list_store_append(interp_list, &tree_iter);
+               gtk_list_store_set(interp_list, &tree_iter,
+                       0, interpreter_to_display_string(count),
+                       -1);
+       }
+
        /* Initialize the list of preferred interpreters */
-       GtkListStore *interp_list = GTK_LIST_STORE( load_object("interpreters") );
+       GtkListStore *preferred_list = GTK_LIST_STORE( load_object("interpreters") );
+       for(count = 0; count < CHIMARA_IF_NUM_FORMATS; count++) {
+               gtk_list_store_append(preferred_list, &tree_iter);
+               gtk_list_store_set(preferred_list, &tree_iter,
+                       0, format_to_display_string(count),
+                       1, _("Unknown"),
+                       -1);
+       }
+
+       /* Get the list of preferred interpreters from the preferences */
        GVariantIter *iter;
        char *format, *plugin;
        g_settings_get(prefs_settings, "preferred-interpreters", "a{ss}", &iter);
@@ -177,10 +197,10 @@ preferences_create(ChimaraGlk *glk)
                ChimaraIFInterpreter interp_num = parse_interpreter(plugin);
                if(interp_num == CHIMARA_IF_INTERPRETER_NONE)
                        continue;
-               GtkTreeIter tree_iter;
-               gtk_list_store_append(interp_list, &tree_iter);
-               gtk_list_store_set(interp_list, &tree_iter,
-                       0, format_to_display_string(format_num),
+               GtkTreePath *path = gtk_tree_path_new_from_indices(format_num, -1);
+               gtk_tree_model_get_iter(GTK_TREE_MODEL(preferred_list), &tree_iter, path);
+               gtk_tree_path_free(path);
+               gtk_list_store_set(preferred_list, &tree_iter,
                        1, interpreter_to_display_string(interp_num),
                        -1);
        }