Gtk.FileChooserDialog¶
- Subclasses:
None
Methods¶
Virtual Methods¶
Properties¶
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:
- 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”)); elseGtk.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
:To select a file for opening, use
Gtk.FileChooserAction.OPEN
.To save a file for the first time, use
Gtk.FileChooserAction.SAVE
, and suggest a name such as “Untitled” with [method`Gtk`.FileChooser.set_current_name].To save a file under a different name, use
Gtk.FileChooserAction.SAVE
, and set the existing file with [method`Gtk`.FileChooser.set_file].To choose a folder instead of a filem use
Gtk.FileChooserAction.SELECT_FOLDER
.
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 asGtk.ResponseType.ACCEPT
andGtk.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 namewindow
and style class.filechooser
.Deprecated since version 4.10: Use [class`Gtk`.FileDialog] instead