X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=player%2Fcallbacks.c;h=229ff0cbcfe9b92f651aa4421220e108954f7fea;hb=39b9e14c0e3c11a4b6df8c22ac4a554e2aae9720;hp=86e85b62a9e14c384134bee146c81f280d818276;hpb=f95649aae72dacb4b65d5a987ce0a41b467a3909;p=projects%2Fchimara%2Fchimara.git diff --git a/player/callbacks.c b/player/callbacks.c index 86e85b6..229ff0c 100644 --- a/player/callbacks.c +++ b/player/callbacks.c @@ -84,9 +84,39 @@ on_open_activate(GtkAction *action, ChimaraGlk *glk) GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); + + /* Get last opened path */ + extern GSettings *state_settings; + gchar *path; + g_settings_get(state_settings, "last-open-path", "ms", &path); + if(path) { + gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), path); + g_free(path); + } + if(gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { GError *error = NULL; gchar *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); + + /* See if there is a corresponding graphics file */ + /* FIXME: hardcoded path */ + gchar *path = g_path_get_dirname(filename); + gchar *scratch = g_path_get_basename(filename); + *(strrchr(scratch, '.')) = '\0'; + gchar *blorbfile = g_strconcat(path, "/../Resources/", scratch, ".blb", NULL); + if(g_file_test(blorbfile, G_FILE_TEST_EXISTS)) { + g_object_set(glk, "graphics-file", blorbfile, NULL); + g_printerr("Setting graphics file to %s\n", blorbfile); + } + g_free(blorbfile); + g_free(path); + g_free(scratch); + + path = gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(dialog)); + if(path) { + g_settings_set(state_settings, "last-open-path", "ms", path); + g_free(path); + } if(!chimara_if_run_game(CHIMARA_IF(glk), filename, &error)) { error_dialog(window, error, _("Could not open game file '%s': "), filename); g_free(filename);