/* Test program for adding multiple filters to a gtk file chooser dialog. I's seeing the combo that holds the filter names come out too narrow, so that the names are not leglible. Allin Cottrell, 2011-09-13 */ #include static void filesel_add_filter (GtkWidget *dialog, const char *name, const char *pattern) { GtkFileFilter *filter = gtk_file_filter_new(); gtk_file_filter_set_name(filter, name); gtk_file_filter_add_pattern(filter, pattern); gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter); } static void filesel (GtkWidget *button, gpointer data) { GtkWidget *parent = data; GtkWidget *dialog; dialog = gtk_file_chooser_dialog_new(NULL, GTK_WINDOW(parent), GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); filesel_add_filter(dialog, "CSV files (*.csv)", "*.csv"); filesel_add_filter(dialog, "Text files (*.txt)", "*.txt"); filesel_add_filter(dialog, "All files (*.*)", "*"); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); } int main (int argc, char *argv[]) { GtkWidget *w, *button; gtk_init(&argc, &argv); w = gtk_window_new(GTK_WINDOW_TOPLEVEL); g_signal_connect(G_OBJECT(w), "destroy", G_CALLBACK(gtk_main_quit), NULL); button = gtk_button_new_from_stock(GTK_STOCK_OK); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(filesel), w); gtk_container_add(GTK_CONTAINER(w), button); gtk_widget_show_all(w); gtk_main(); return 0; }