X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=player%2Fpreferences.c;h=b457c1ef5e37e0731f78fac8570f7d8033f75e20;hb=HEAD;hp=5ee62ed6be797156bc4a43e4777fd1ece155f15a;hpb=82bf403ab4af1f293c0e1eda447613242c48cda9;p=projects%2Fchimara%2Fchimara.git diff --git a/player/preferences.c b/player/preferences.c index 5ee62ed..b457c1e 100644 --- a/player/preferences.c +++ b/player/preferences.c @@ -30,6 +30,7 @@ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include #include #include #include @@ -40,6 +41,7 @@ GObject *load_object(const gchar *name); static GtkTextTag *current_tag; +static GtkListStore *preferred_list; static void style_tree_select_callback(GtkTreeSelection *selection, ChimaraGlk *glk); @@ -63,6 +65,17 @@ parse_format(const char *format) return CHIMARA_IF_FORMAT_NONE; } +static const char *format_strings[CHIMARA_IF_NUM_FORMATS] = { + "z5", "z6", "z8", "zblorb", "glulx", "gblorb" +}; + +static const char *format_to_string(ChimaraIFFormat format) +{ + if(format >= 0 && format < CHIMARA_IF_NUM_FORMATS) + return format_strings[format]; + return "unknown"; +} + static const char *format_display_strings[CHIMARA_IF_NUM_FORMATS] = { N_("Z-machine version 5"), N_("Z-machine version 6"), @@ -75,7 +88,7 @@ static const char *format_display_strings[CHIMARA_IF_NUM_FORMATS] = { static const char * format_to_display_string(ChimaraIFFormat format) { - if(format < CHIMARA_IF_NUM_FORMATS) + if(format >= 0 && format < CHIMARA_IF_NUM_FORMATS) return gettext(format_display_strings[format]); return _("Unknown"); } @@ -91,20 +104,35 @@ parse_interpreter(const char *interp) return CHIMARA_IF_INTERPRETER_GLULXE; if(strcmp(interp, "git") == 0) return CHIMARA_IF_INTERPRETER_GIT; + if(strcmp(interp, "bocfel") == 0) + return CHIMARA_IF_INTERPRETER_BOCFEL; return CHIMARA_IF_INTERPRETER_NONE; } +static const char *interpreter_strings[CHIMARA_IF_NUM_INTERPRETERS] = { + "frotz", "nitfol", "glulxe", "git", "bocfel" +}; + +static const char * +interpreter_to_string(ChimaraIFInterpreter interp) +{ + if(interp >= 0 && interp < CHIMARA_IF_NUM_INTERPRETERS) + return interpreter_strings[interp]; + return "unknown"; +} + static const char *interpreter_display_strings[CHIMARA_IF_NUM_INTERPRETERS] = { N_("Frotz"), N_("Nitfol"), N_("Glulxe"), - N_("Git") + N_("Git"), + N_("Bocfel") }; static const char * interpreter_to_display_string(ChimaraIFInterpreter interp) { - if(interp < CHIMARA_IF_NUM_INTERPRETERS) + if(interp >= 0 && interp < CHIMARA_IF_NUM_INTERPRETERS) return gettext(interpreter_display_strings[interp]); return _("Unknown"); } @@ -114,7 +142,7 @@ void preferences_create(ChimaraGlk *glk) { /* Initialize the tree of style names */ - GtkTreeStore *style_list = gtk_tree_store_new(1, G_TYPE_STRING); + GtkTreeStore *style_list = GTK_TREE_STORE( load_object("style-list") ); GtkTreeIter buffer, grid, buffer_child, grid_child; gtk_tree_store_append(style_list, &buffer, NULL); @@ -123,8 +151,8 @@ preferences_create(ChimaraGlk *glk) gtk_tree_store_set(style_list, &grid, 0, "Text grid", -1); int i; - gint num_tags = chimara_glk_get_num_tag_names(glk); - const gchar **tag_names = chimara_glk_get_tag_names(glk); + unsigned int num_tags; + const gchar **tag_names = chimara_glk_get_tag_names(glk, &num_tags); for(i=0; i