#include #include #include /* void gtk_file_selection_set_filename (GtkFileSelection *filesel, const gchar *filename); */ struct fs_query { GtkWidget *fs; char *str; // null if cancelled }; char *gtk_filesel(char *prompt, char *pattern) { struct fs_query q; static int is_gtk_inited = 0; if(!is_gtk_inited) { gtk_init(0, 0); is_gtk_inited = 1; } q.fs = gtk_file_chooser_dialog_new( prompt, NULL, GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); //if(pattern)gtk_file_selection_complete(q.fs, pattern); if (gtk_dialog_run(GTK_DIALOG(q.fs)) == GTK_RESPONSE_ACCEPT) { char *filename; filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(q.fs)); q.str = strdup(filename); g_free(filename); } gtk_widget_destroy(q.fs); return q.str; }