From 03212725b0dda5264d987f817fe53b83accf2d19 Mon Sep 17 00:00:00 2001 From: Thomas White Date: Fri, 19 Jan 2018 21:41:12 +0100 Subject: Implement Open menu item --- src/colloquium.c | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) (limited to 'src/colloquium.c') diff --git a/src/colloquium.c b/src/colloquium.c index 8af3857..9373d23 100644 --- a/src/colloquium.c +++ b/src/colloquium.c @@ -110,9 +110,83 @@ static void quit_sig(GSimpleAction *action, GVariant *parameter, gpointer vp) } +static GFile **gslist_to_array(GSList *item, int *n) +{ + int i = 0; + int len = g_slist_length(item); + GFile **files = malloc(len * sizeof(GFile *)); + + if ( files == NULL ) return NULL; + + while ( item != NULL ) { + if ( i == len ) { + fprintf(stderr, "WTF? Too many files\n"); + break; + } + files[i++] = item->data; + item = item->next; + } + + *n = len; + return files; +} + + +static gint open_response_sig(GtkWidget *d, gint response, GApplication *papp) +{ + if ( response == GTK_RESPONSE_ACCEPT ) { + + GSList *files; + int n_files = 0; + GFile **files_array; + int i; + + files = gtk_file_chooser_get_files(GTK_FILE_CHOOSER(d)); + files_array = gslist_to_array(files, &n_files); + if ( files_array == NULL ) { + fprintf(stderr, "Failed to convert file list\n"); + return 0; + } + g_slist_free(files); + g_application_open(papp, files_array, n_files, ""); + + for ( i=0; iimagestore); if ( load_presentation(p, uri) == 0 ) { narrative_window_new(p, papp); -- cgit v1.2.3