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
GtkFileChooserDialogis a dialog suitable for use with “File Open” or “File Save” commands.An example
Gtk.FileChooserDialogThis 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
GtkFileChooserDialogdoes 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
GtkFileChooserDialogotherwise.- Typical usage
In the simplest of cases, you can the following code to use
GtkFileChooserDialogto 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.FileChooserActionaction =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.FileChooserActionaction =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
GtkFileChooserDialoginherits from [class`Gtk`.Dialog], so buttons that go in its action area have response codes such asGtk.ResponseType.ACCEPTandGtk.ResponseType.CANCEL. For example, you could call [ctor`Gtk`.FileChooserDialog.new] as follows:```c
Gtk.Widget*dialog;Gtk.FileChooserActionaction =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
GtkFileChooserDialogassumes that its “accept”-type action, e.g. an “Open” or “Save” button, will have one of the following response codes:This is because
GtkFileChooserDialogmust 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
GtkFileChooserDialogto ensure proper operation.- CSS nodes
GtkFileChooserDialoghas a single CSS node with the namewindowand style class.filechooser.Deprecated since version 4.10: Use [class`Gtk`.FileDialog] instead