4 #include "gtkfilechooserdialog.h"
5 #include "gtkfilechooser.h"
6 #include "prop-editor.h"
9 #include "gtkfilesystemgnomevfs.h"
11 #include "gtkfilesystemunix.h"
15 print_current_folder (GtkFileChooser *chooser)
19 uri = gtk_file_chooser_get_current_folder_uri (chooser);
20 g_print ("Current folder changed :\n %s\n", uri);
25 print_selected (GtkFileChooser *chooser)
27 GSList *uris = gtk_file_chooser_get_uris (chooser);
30 g_print ("Selection changed :\n");
31 for (tmp_list = uris; tmp_list; tmp_list = tmp_list->next)
33 gchar *uri = tmp_list->data;
34 g_print (" %s\n", uri);
42 response_cb (GtkDialog *dialog,
49 no_backup_files_filter (const GtkFileFilterInfo *filter_info,
52 gsize len = strlen (filter_info->display_name);
53 if (len > 0 && filter_info->display_name[len - 1] == '~')
60 main (int argc, char **argv)
62 GtkWidget *control_window;
66 GtkWidget *prop_editor;
67 GtkFileSystem *file_system;
68 GtkFileFilter *filter;
70 gtk_init (&argc, &argv);
73 file_system = gtk_file_system_gnome_vfs_new ();
75 file_system = gtk_file_system_unix_new ();
78 dialog = g_object_new (GTK_TYPE_FILE_CHOOSER_DIALOG,
79 "action", GTK_FILE_CHOOSER_ACTION_OPEN,
80 "file-system", file_system,
81 "title", "Select a file",
84 gtk_dialog_add_buttons (GTK_DIALOG (dialog),
85 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
86 GTK_STOCK_OPEN, GTK_RESPONSE_OK,
88 gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
90 g_signal_connect (dialog, "selection-changed",
91 G_CALLBACK (print_selected), NULL);
92 g_signal_connect (dialog, "current-folder-changed",
93 G_CALLBACK (print_current_folder), NULL);
94 g_signal_connect (dialog, "response",
95 G_CALLBACK (response_cb), NULL);
98 filter = gtk_file_filter_new ();
99 gtk_file_filter_set_name (filter, "All Files");
100 gtk_file_filter_add_pattern (filter, "*");
101 gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter);
103 filter = gtk_file_filter_new ();
104 gtk_file_filter_set_name (filter, "No backup files");
105 gtk_file_filter_add_custom (filter, GTK_FILE_FILTER_DISPLAY_NAME,
106 no_backup_files_filter, NULL, NULL);
107 gtk_file_filter_add_mime_type (filter, "image/png");
108 gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter);
110 /* Make this filter the default */
111 gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (dialog), filter);
113 filter = gtk_file_filter_new ();
114 gtk_file_filter_set_name (filter, "PNG and JPEG");
115 gtk_file_filter_add_mime_type (filter, "image/jpeg");
116 gtk_file_filter_add_mime_type (filter, "image/png");
117 gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter);
119 gtk_window_set_default_size (GTK_WINDOW (dialog), 600, 400);
120 /* show_all() to reveal bugs in composite widget handling */
121 gtk_widget_show_all (dialog);
123 prop_editor = create_prop_editor (G_OBJECT (dialog), GTK_TYPE_FILE_CHOOSER);
125 control_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
127 vbbox = gtk_vbutton_box_new ();
128 gtk_container_add (GTK_CONTAINER (control_window), vbbox);
130 button = gtk_button_new_with_mnemonic ("_Select all");
131 gtk_container_add (GTK_CONTAINER (vbbox), button);
132 g_signal_connect_swapped (button, "clicked",
133 G_CALLBACK (gtk_file_chooser_select_all), dialog);
135 button = gtk_button_new_with_mnemonic ("_Unselect all");
136 gtk_container_add (GTK_CONTAINER (vbbox), button);
137 g_signal_connect_swapped (button, "clicked",
138 G_CALLBACK (gtk_file_chooser_unselect_all), dialog);
140 gtk_widget_show_all (control_window);