]> Pileus Git - ~andy/gtk/blob - tests/testfilechooser.c
Add GtkFileSystem::parse, and a chooser entry with completion
[~andy/gtk] / tests / testfilechooser.c
1 #include <gtk/gtk.h>
2 #include "gtkfilechooserdialog.h"
3 #include "gtkfilechooser.h"
4 #include "prop-editor.h"
5
6 static void
7 print_current_folder (GtkFileChooser *chooser)
8 {
9   gchar *uri;
10
11   uri = gtk_file_chooser_get_current_folder_uri (chooser);
12   g_print ("Current folder changed :\n  %s\n", uri);
13   g_free (uri);
14 }
15
16 static void
17 print_selected (GtkFileChooser *chooser)
18 {
19   GSList *uris = gtk_file_chooser_get_uris (chooser);
20   GSList *tmp_list;
21
22   g_print ("Selection changed :\n");
23   for (tmp_list = uris; tmp_list; tmp_list = tmp_list->next)
24     {
25       gchar *uri = tmp_list->data;
26       g_print ("  %s\n", uri);
27       g_free (uri);
28     }
29   g_print ("\n");
30   g_slist_free (uris);
31 }
32
33 static void
34 response_cb (GtkDialog *dialog,
35              gint       response_id)
36 {
37   gtk_main_quit ();
38 }
39
40 int
41 main (int argc, char **argv)
42 {
43   GtkWidget *control_window;
44   GtkWidget *vbbox;
45   GtkWidget *button;
46   GtkWidget *dialog;
47   GtkWidget *prop_editor;
48   
49   gtk_init (&argc, &argv);
50
51   dialog = gtk_file_chooser_dialog_new ("Select a file", NULL,
52                                         GTK_FILE_CHOOSER_ACTION_OPEN,
53                                         GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
54                                         GTK_STOCK_OPEN, GTK_RESPONSE_OK,
55                                         NULL);
56   gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
57   
58   g_signal_connect (dialog, "selection_changed",
59                     G_CALLBACK (print_selected), NULL);
60   g_signal_connect (dialog, "current_folder_changed",
61                     G_CALLBACK (print_current_folder), NULL);
62   g_signal_connect (dialog, "response",
63                     G_CALLBACK (response_cb), NULL);
64   
65   gtk_window_set_default_size (GTK_WINDOW (dialog), 600, 400);
66   gtk_widget_show (dialog);
67
68   prop_editor = create_prop_editor (G_OBJECT (dialog), GTK_TYPE_FILE_CHOOSER);
69
70   control_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
71   
72   vbbox = gtk_vbutton_box_new ();
73   gtk_container_add (GTK_CONTAINER (control_window), vbbox);
74
75   button = gtk_button_new_with_mnemonic ("_Select all");
76   gtk_container_add (GTK_CONTAINER (vbbox), button);
77   g_signal_connect_swapped (button, "clicked",
78                             G_CALLBACK (gtk_file_chooser_select_all), dialog);
79   
80   button = gtk_button_new_with_mnemonic ("_Unselect all");
81   gtk_container_add (GTK_CONTAINER (vbbox), button);
82   g_signal_connect_swapped (button, "clicked",
83                             G_CALLBACK (gtk_file_chooser_unselect_all), dialog);
84
85   gtk_widget_show_all (control_window);
86   
87   gtk_main ();
88
89   return 0;
90 }