Gtk.FileChooserDialog

g GObject.GInterface GObject.GInterface Gtk.Accessible Gtk.Accessible GObject.GInterface->Gtk.Accessible Gtk.Buildable Gtk.Buildable GObject.GInterface->Gtk.Buildable Gtk.ConstraintTarget Gtk.ConstraintTarget GObject.GInterface->Gtk.ConstraintTarget Gtk.FileChooser Gtk.FileChooser GObject.GInterface->Gtk.FileChooser Gtk.Native Gtk.Native GObject.GInterface->Gtk.Native Gtk.Root Gtk.Root GObject.GInterface->Gtk.Root Gtk.ShortcutManager Gtk.ShortcutManager GObject.GInterface->Gtk.ShortcutManager GObject.InitiallyUnowned GObject.InitiallyUnowned Gtk.Widget Gtk.Widget GObject.InitiallyUnowned->Gtk.Widget GObject.Object GObject.Object GObject.Object->GObject.InitiallyUnowned Gtk.Accessible->Gtk.Widget Gtk.Buildable->Gtk.Widget Gtk.ConstraintTarget->Gtk.Widget Gtk.Dialog Gtk.Dialog Gtk.FileChooserDialog Gtk.FileChooserDialog Gtk.Dialog->Gtk.FileChooserDialog Gtk.FileChooser->Gtk.FileChooserDialog Gtk.Window Gtk.Window Gtk.Native->Gtk.Window Gtk.Root->Gtk.Window Gtk.ShortcutManager->Gtk.Window Gtk.Widget->Gtk.Window Gtk.Window->Gtk.Dialog

Subclasses:

None

Methods

Inherited:

Gtk.Dialog (11), Gtk.Window (62), Gtk.Widget (181), GObject.Object (37), Gtk.Accessible (15), Gtk.Buildable (1), Gtk.Native (6), Gtk.Root (3), Gtk.FileChooser (25)

Structs:

Gtk.WidgetClass (18), GObject.ObjectClass (5)

Virtual Methods

Inherited:

Gtk.Dialog (2), Gtk.Window (5), Gtk.Widget (25), GObject.Object (7), Gtk.Accessible (6), Gtk.Buildable (9), Gtk.ShortcutManager (2)

Properties

Inherited:

Gtk.Dialog (1), Gtk.Window (25), Gtk.Widget (34), Gtk.Accessible (1), Gtk.FileChooser (6)

Signals

Inherited:

Gtk.Dialog (2), Gtk.Window (5), Gtk.Widget (13), GObject.Object (1)

Fields

Inherited:

Gtk.Dialog (2), Gtk.Window (5), Gtk.Widget (13), GObject.Object (1)

Class Details

class Gtk.FileChooserDialog(*args, **kwargs)
Bases:

Gtk.Dialog, Gtk.FileChooser

Abstract:

No

GtkFileChooserDialog is a dialog suitable for use with “File Open” or “File Save” commands.

An example Gtk.FileChooserDialog

This widget works by putting a [class`Gtk`.FileChooserWidget] inside a [class`Gtk`.Dialog]. It exposes the [iface`Gtk`.FileChooser] interface, so you can use all of the [iface`Gtk`.FileChooser] functions on the file chooser dialog as well as those for [class`Gtk`.Dialog].

Note that GtkFileChooserDialog does not have any methods of its own. Instead, you should use the functions that work on a [iface`Gtk`.FileChooser].

If you want to integrate well with the platform you should use the [class`Gtk`.FileChooserNative] API, which will use a platform-specific dialog if available and fall back to GtkFileChooserDialog otherwise.

Typical usage

In the simplest of cases, you can the following code to use GtkFileChooserDialog to select a file for opening:

```c static void on_open_response (Gtk.Dialog *dialog, int response) { if (response == Gtk.ResponseType.ACCEPT) { Gtk.FileChooser *chooser = GTK_FILE_CHOOSER (dialog);

g_autoptr(Gio.File) file = Gtk.FileChooser.get_file (chooser);

open_file (file); }

Gtk.Window.destroy (GTK_WINDOW (dialog)); }

// … Gtk.Widget *dialog; Gtk.FileChooserAction action = Gtk.FileChooserAction.OPEN;

dialog = gtk_file_chooser_dialog_new (“Open File”, parent_window, action, _(”_Cancel”), Gtk.ResponseType.CANCEL, _(”_Open”), Gtk.ResponseType.ACCEPT, None);

Gtk.Window.present (GTK_WINDOW (dialog));

g_signal_connect (dialog, “response”, G_CALLBACK (on_open_response), None); ```

To use a dialog for saving, you can use this:

```c static void on_save_response (Gtk.Dialog *dialog, int response) { if (response == Gtk.ResponseType.ACCEPT) { Gtk.FileChooser *chooser = GTK_FILE_CHOOSER (dialog);

g_autoptr(Gio.File) file = Gtk.FileChooser.get_file (chooser);

save_to_file (file); }

Gtk.Window.destroy (GTK_WINDOW (dialog)); }

// … Gtk.Widget *dialog; Gtk.FileChooser *chooser; Gtk.FileChooserAction action = Gtk.FileChooserAction.SAVE;

dialog = gtk_file_chooser_dialog_new (“Save File”, parent_window, action, _(”_Cancel”), Gtk.ResponseType.CANCEL, _(”_Save”), Gtk.ResponseType.ACCEPT, None); chooser = GTK_FILE_CHOOSER (dialog);

if (user_edited_a_new_document) Gtk.FileChooser.set_current_name (chooser, _(“Untitled document”)); else Gtk.FileChooser.set_file (chooser, existing_filename);

Gtk.Window.present (GTK_WINDOW (dialog));

g_signal_connect (dialog, “response”, G_CALLBACK (on_save_response), None); ```

Setting up a file chooser dialog

There are various cases in which you may need to use a GtkFileChooserDialog :

In general, you should only cause the file chooser to show a specific folder when it is appropriate to use [method`Gtk`.FileChooser.set_file], i.e. when you are doing a “Save As” command and you already have a file saved somewhere.

Response Codes

GtkFileChooserDialog inherits from [class`Gtk`.Dialog], so buttons that go in its action area have response codes such as Gtk.ResponseType.ACCEPT and Gtk.ResponseType.CANCEL. For example, you could call [ctor`Gtk`.FileChooserDialog.new] as follows:

```c Gtk.Widget *dialog; Gtk.FileChooserAction action = Gtk.FileChooserAction.OPEN;

dialog = gtk_file_chooser_dialog_new (“Open File”, parent_window, action, _(”_Cancel”), Gtk.ResponseType.CANCEL, _(”_Open”), Gtk.ResponseType.ACCEPT, None); ```

This will create buttons for “Cancel” and “Open” that use predefined response identifiers from [enum`Gtk`.ResponseType]. For most dialog boxes you can use your own custom response codes rather than the ones in [enum`Gtk`.ResponseType], but GtkFileChooserDialog assumes that its “accept”-type action, e.g. an “Open” or “Save” button, will have one of the following response codes:

This is because GtkFileChooserDialog must intercept responses and switch to folders if appropriate, rather than letting the dialog terminate — the implementation uses these known response codes to know which responses can be blocked if appropriate.

To summarize, make sure you use a predefined response code when you use GtkFileChooserDialog to ensure proper operation.

CSS nodes

GtkFileChooserDialog has a single CSS node with the name window and style class .filechooser.

Deprecated since version 4.10: Use [class`Gtk`.FileDialog] instead