GtkFileChooser File chooser interface used by #GtkFileChooserWidget and #GtkFileChooserDialog. #GtkFileChooser is an interface that can be implemented by file selection widgets. In GTK+, the main objects that implement this interface are #GtkFileChooserWidget and #GtkFileChooserDialog. You do not need to write an object that implements the #GtkFileChooser interface unless you are trying to adapt an existing file selector to expose a standard programming interface. Adding a Preview Widget You can add a custom preview widget to a file chooser and then get notification about when the preview needs to be updated. To install a preview widget, use gtk_file_chooser_set_preview_widget(). Then, connect to the #GtkFileChooser::update-preview signal to get notified when you need to update the contents of the preview. Your callback should use gtk_file_chooser_get_preview_filename() to see what needs previewing. Once you have generated the preview for the corresponding file, you must call gtk_file_chooser_set_preview_widget_active() with a boolean flag that indicates whether your callback could successfully generate a preview. Sample Usage { GtkImage *preview; ... preview = gtk_image_new (); gtk_file_chooser_set_preview_widget (my_file_chooser, preview); g_signal_connect (my_file_chooser, "update-preview", G_CALLBACK (update_preview_cb), preview); } static void update_preview_cb (GtkFileChooser *file_chooser, gpointer data) { GtkWidget *preview; char *filename; GdkPixbuf *pixbuf; gboolean have_preview; preview = GTK_WIDGET (data); filename = gtk_file_chooser_get_preview_filename (file_chooser); pixbuf = gdk_pixbuf_new_from_file_at_size (filename, 128, 128, NULL); have_preview = (pixbuf != NULL); g_free (filename); gtk_image_set_from_pixbuf (GTK_IMAGE (preview), pixbuf); if (pixbuf) gdk_pixbuf_unref (pixbuf); gtk_file_chooser_set_preview_widget_active (file_chooser, have_preview); } Adding Extra Widgets You can add extra widgets to a file chooser to provide options that are not present in the default design. For example, you can add a toggle button to give the user the option to open a file in read-only mode. You can use gtk_file_chooser_set_extra_widget() to insert additional widgets in a file chooser. Sample Usage { GtkWidget *toggle; ... toggle = gtk_check_button_new_with_label ("Open file read-only"); gtk_widget_show (toggle); gtk_file_chooser_set_extra_widget (my_file_chooser, toggle); } If you want to set more than one extra widget in the file chooser, you can a container such as a GtkVBox or a GtkTable and include your widgets in it. Then, set the container as the whole extra widget. #GtkFileChooserDialog, #GtkFileChooserWidget @filechooser: the object which received the signal. @filechooser: the object which received the signal. @filechooser: the object which received the signal. @filechooser: the object which received the signal. Describes whether a #GtkFileChooser is being used to open existing files or to save to a possibly new file. @GTK_FILE_CHOOSER_ACTION_OPEN: Indicates Open mode. The file chooser will only let the user pick an existing file. @GTK_FILE_CHOOSER_ACTION_SAVE: Indicates Save mode. The file chooser will let the user pick an existing file, or type in a new filename. Used to get the #GError quark for #GtkFileChooser errors. These identify the various errors that can occur while calling #GtkFileChooser functions. @GTK_FILE_CHOOSER_ERROR_NONEXISTENT: Indicates that a file does not exist. @GTK_FILE_CHOOSER_ERROR_BAD_FILENAME: Indicates a malformed filename. @Returns: @chooser: @action: @chooser: @Returns: @chooser: @folder_mode: @chooser: @Returns: @chooser: @local_only: @files_only: @chooser: @Returns: @chooser: @select_multiple: @chooser: @Returns: @chooser: @name: @chooser: @Returns: @chooser: @filename: @chooser: @filename: @chooser: @filename: @chooser: @chooser: @chooser: @Returns: @chooser: @filename: @chooser: @Returns: @chooser: @Returns: @chooser: @uri: @chooser: @uri: @chooser: @uri: @chooser: @Returns: @chooser: @uri: @chooser: @Returns: @chooser: @preview_widget: @chooser: @Returns: @chooser: @active: @chooser: @Returns: @chooser: @Returns: @file_chooser: @chooser: @Returns: @file_chooser: @chooser: @extra_widget: @chooser: @Returns: @chooser: @filter: @chooser: @filter: @chooser: @Returns: @chooser: @filter: @chooser: @Returns: @chooser: @folder: @error: @Returns: @chooser: @folder: @error: @Returns: @chooser: @Returns: @chooser: @uri: @error: @Returns: @folder: @chooser: @uri: @error: @Returns: @folder: @chooser: @Returns: