char *gwwv_open_filename_mult(const char *title, const char *def_name, const struct gwwv_filter *filters, int mult ) { GtkWidget *dialog; char *filename = NULL; gsize read, written; if ( mult ) dialog = gtk_file_chooser_dialog_new (title, NULL, GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, GTK_STOCK_NEW, -100, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, NULL); else dialog = gtk_file_chooser_dialog_new (title, NULL, GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, NULL); gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER( dialog ), mult ); gwwv_file_def_filters(dialog,def_name,filters); filename = NULL; if ( gtk_dialog_run(GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT ) { char *temp = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); filename = g_filename_to_utf8(temp,-1,&read,&written,NULL); } gtk_widget_destroy (dialog); return( filename ); }
char *gwwv_save_filename_with_gadget(const char *title, const char *def_name, const struct gwwv_filter *filters, GtkWidget *extra ) { GtkWidget *dialog; char *filename = NULL; gsize read, written; dialog = gtk_file_chooser_dialog_new (title, NULL, GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, NULL); gwwv_file_def_filters(dialog,def_name,filters); if ( extra != NULL ) gtk_file_chooser_set_extra_widget( GTK_FILE_CHOOSER( dialog ), extra ); filename = NULL; if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) { char *temp = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); filename = g_filename_to_utf8(temp,-1,&read,&written,NULL); free(temp); } gtk_widget_destroy (dialog); return( filename ); }