]> Pileus Git - ~andy/gtk/blob - tests/testfilechooser.c
Add gtk_file_chooser_set_current_name() to set the current entry contents.
[~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 #ifdef USE_GNOME_VFS
7 #include "gtkfilesystemgnomevfs.h"
8 #else
9 #include "gtkfilesystemunix.h"
10 #endif
11
12 static void
13 print_current_folder (GtkFileChooser *chooser)
14 {
15   gchar *uri;
16
17   uri = gtk_file_chooser_get_current_folder_uri (chooser);
18   g_print ("Current folder changed :\n  %s\n", uri);
19   g_free (uri);
20 }
21
22 static void
23 print_selected (GtkFileChooser *chooser)
24 {
25   GSList *uris = gtk_file_chooser_get_uris (chooser);
26   GSList *tmp_list;
27
28   g_print ("Selection changed :\n");
29   for (tmp_list = uris; tmp_list; tmp_list = tmp_list->next)
30     {
31       gchar *uri = tmp_list->data;
32       g_print ("  %s\n", uri);
33       g_free (uri);
34     }
35   g_print ("\n");
36   g_slist_free (uris);
37 }
38
39 static void
40 response_cb (GtkDialog *dialog,
41              gint       response_id)
42 {
43   gtk_main_quit ();
44 }
45
46 int
47 main (int argc, char **argv)
48 {
49   GtkWidget *control_window;
50   GtkWidget *vbbox;
51   GtkWidget *button;
52   GtkWidget *dialog;
53   GtkWidget *prop_editor;
54   GtkFileSystem *file_system;
55   
56   gtk_init (&argc, &argv);
57
58 #ifdef USE_GNOME_VFS
59   file_system = _gtk_file_system_gnome_vfs_new ();
60 #else  
61   file_system = _gtk_file_system_unix_new ();
62 #endif
63   
64   dialog = g_object_new (GTK_TYPE_FILE_CHOOSER_DIALOG,
65                          "action", GTK_FILE_CHOOSER_ACTION_OPEN,
66                          "file-system", file_system,
67                          "title", "Select a file",
68                          NULL);
69                          
70   gtk_dialog_add_buttons (GTK_DIALOG (dialog),
71                           GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
72                           GTK_STOCK_OPEN, GTK_RESPONSE_OK,
73                           NULL);
74   gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
75   
76   g_signal_connect (dialog, "selection-changed",
77                     G_CALLBACK (print_selected), NULL);
78   g_signal_connect (dialog, "current-folder-changed",
79                     G_CALLBACK (print_current_folder), NULL);
80   g_signal_connect (dialog, "response",
81                     G_CALLBACK (response_cb), NULL);
82   
83   gtk_window_set_default_size (GTK_WINDOW (dialog), 600, 400);
84   gtk_widget_show (dialog);
85
86   prop_editor = create_prop_editor (G_OBJECT (dialog), GTK_TYPE_FILE_CHOOSER);
87
88   control_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
89   
90   vbbox = gtk_vbutton_box_new ();
91   gtk_container_add (GTK_CONTAINER (control_window), vbbox);
92
93   button = gtk_button_new_with_mnemonic ("_Select all");
94   gtk_container_add (GTK_CONTAINER (vbbox), button);
95   g_signal_connect_swapped (button, "clicked",
96                             G_CALLBACK (gtk_file_chooser_select_all), dialog);
97   
98   button = gtk_button_new_with_mnemonic ("_Unselect all");
99   gtk_container_add (GTK_CONTAINER (vbbox), button);
100   g_signal_connect_swapped (button, "clicked",
101                             G_CALLBACK (gtk_file_chooser_unselect_all), dialog);
102
103   gtk_widget_show_all (control_window);
104   
105   gtk_main ();
106
107   return 0;
108 }