### Class

# Gtk FileChooserNative

deprecated: 4.10 since: 4.0

#### Description [src]

    final class Gtk.FileChooserNative : Gtk.NativeDialog
      implements Gtk.FileChooser {
      /* No available fields */
    }

`GtkFileChooserNative` is an abstraction of a dialog suitable for use with “File Open” or “File Save as” commands.

By default, this just uses a `GtkFileChooserDialog` to implement the actual dialog. However, on some platforms, such as Windows and macOS, the native platform file chooser is used instead. When the application is running in a sandboxed environment without direct filesystem access (such as Flatpak), `GtkFileChooserNative` may call the proper APIs (portals) to let the user choose a file and make it available to the application.

While the API of `GtkFileChooserNative` closely mirrors `GtkFileChooserDialog`, the main difference is that there is no access to any `GtkWindow` or `GtkWidget` for the dialog. This is required, as there may not be one in the case of a platform native dialog.

Showing, hiding and running the dialog is handled by the `GtkNativeDialog` functions.

Note that unlike `GtkFileChooserDialog`, `GtkFileChooserNative` objects are not toplevel widgets, and GTK does not keep them alive. It is your responsibility to keep a reference until you are done with the object.

## Typical usage

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

    static void
    on_response (GtkNativeDialog *native,
                 int              response)
    {
      if (response == GTK_RESPONSE_ACCEPT)
        {
          GtkFileChooser *chooser = GTK_FILE_CHOOSER (native);
          GFile *file = gtk_file_chooser_get_file (chooser);

          open_file (file);

          g_object_unref (file);
        }

      g_object_unref (native);
    }

      // ...
      GtkFileChooserNative *native;
      GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_OPEN;

      native = gtk_file_chooser_native_new ("Open File",
                                            parent_window,
                                            action,
                                            "_Open",
                                            "_Cancel");

      g_signal_connect (native, "response", G_CALLBACK (on_response), NULL);
      gtk_native_dialog_show (GTK_NATIVE_DIALOG (native));

To use a `GtkFileChooserNative` for saving, you can use this:

    static void
    on_response (GtkNativeDialog *native,
                 int              response)
    {
      if (response == GTK_RESPONSE_ACCEPT)
        {
          GtkFileChooser *chooser = GTK_FILE_CHOOSER (native);
          GFile *file = gtk_file_chooser_get_file (chooser);

          save_to_file (file);

          g_object_unref (file);
        }

      g_object_unref (native);
    }

      // ...
      GtkFileChooserNative *native;
      GtkFileChooser *chooser;
      GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_SAVE;

      native = gtk_file_chooser_native_new ("Save File",
                                            parent_window,
                                            action,
                                            "_Save",
                                            "_Cancel");
      chooser = GTK_FILE_CHOOSER (native);

      if (user_edited_a_new_document)
        gtk_file_chooser_set_current_name (chooser, _("Untitled document"));
      else
        gtk_file_chooser_set_file (chooser, existing_file, NULL);

      g_signal_connect (native, "response", G_CALLBACK (on_response), NULL);
      gtk_native_dialog_show (GTK_NATIVE_DIALOG (native));

For more information on how to best set up a file dialog, see the `GtkFileChooserDialog` documentation.

## Response Codes

`GtkFileChooserNative` inherits from `GtkNativeDialog`, which means it will return `GTK_RESPONSE_ACCEPT` if the user accepted, and `GTK_RESPONSE_CANCEL` if he pressed cancel. It can also return `GTK_RESPONSE_DELETE_EVENT` if the window was unexpectedly closed.

## Differences from `GtkFileChooserDialog`

There are a few things in the `GtkFileChooser` interface that are not possible to use with `GtkFileChooserNative`, as such use would prohibit the use of a native dialog.

No operations that change the dialog work while the dialog is visible. Set all the properties that are required before showing the dialog.

## Win32 details

On windows the `IFileDialog` implementation (added in Windows Vista) is used. It supports many of the features that `GtkFileChooser` has, but there are some things it does not handle:

- Any `GtkFileFilter` added using a mimetype

If any of these features are used the regular `GtkFileChooserDialog` will be used in place of the native one.

## Portal details

When the `org.freedesktop.portal.FileChooser` portal is available on the session bus, it is used to bring up an out-of-process file chooser. Depending on the kind of session the application is running in, this may or may not be a GTK file chooser.

## macOS details

On macOS the `NSSavePanel` and `NSOpenPanel` classes are used to provide native file chooser dialogs. Some features provided by `GtkFileChooser` are not supported:

- Shortcut folders.

Available since: 4.0

Deprecated since: 4.10

Use `GtkFileDialog` instead.

#### Ancestors

- GtkNativeDialog
- GObject

#### Implements

- GtkFileChooser

#### Constructors

###### gtk_file_chooser_native_new

Creates a new `GtkFileChooserNative`.

deprecated: 4.10 since: 4.0

#### Instance methods

###### gtk_file_chooser_native_get_accept_label

Retrieves the custom label text for the accept button.

deprecated: 4.10 since: 4.0

###### gtk_file_chooser_native_get_cancel_label

Retrieves the custom label text for the cancel button.

deprecated: 4.10 since: 4.0

###### gtk_file_chooser_native_set_accept_label

Sets the custom label text for the accept button.

deprecated: 4.10 since: 4.0

###### gtk_file_chooser_native_set_cancel_label

Sets the custom label text for the cancel button.

deprecated: 4.10 since: 4.0

##### Methods inherited from GtkNativeDialog (10)

###### gtk_native_dialog_destroy

Destroys a dialog.

since: 4.0

###### gtk_native_dialog_get_modal

Returns whether the dialog is modal.

since: 4.0

###### gtk_native_dialog_get_title

Gets the title of the `GtkNativeDialog`.

since: 4.0

###### gtk_native_dialog_get_transient_for

Fetches the transient parent for this window.

since: 4.0

###### gtk_native_dialog_get_visible

Determines whether the dialog is visible.

since: 4.0

###### gtk_native_dialog_hide

Hides the dialog if it is visible, aborting any interaction.

since: 4.0

###### gtk_native_dialog_set_modal

Sets a dialog modal or non-modal.

since: 4.0

###### gtk_native_dialog_set_title

Sets the title of the `GtkNativeDialog.`

since: 4.0

###### gtk_native_dialog_set_transient_for

Dialog windows should be set transient for the main application window they were spawned from.

since: 4.0

###### gtk_native_dialog_show

Shows the dialog on the display.

since: 4.0

##### Methods inherited from GObject (43)

Please see GObject for a full list of methods.

##### Methods inherited from GtkFileChooser (25)

Please see GtkFileChooser for a full list of methods.

#### Properties

###### Gtk.FileChooserNative:accept-label

The text used for the label on the accept button in the dialog, or `NULL` to use the default text.

since: 4.0

###### Gtk.FileChooserNative:cancel-label

The text used for the label on the cancel button in the dialog, or `NULL` to use the default text.

since: 4.0

##### Properties inherited from GtkNativeDialog (4)

###### Gtk.NativeDialog:modal

Whether the window should be modal with respect to its transient parent.

since: 4.0

###### Gtk.NativeDialog:title

The title of the dialog window.

since: 4.0

###### Gtk.NativeDialog:transient-for

The transient parent of the dialog, or `NULL` for none.

since: 4.0

###### Gtk.NativeDialog:visible

Whether the window is currently visible.

since: 4.0

##### Properties inherited from GtkFileChooser (6)

###### GtkFileChooser:action

The type of operation that the file chooser is performing.

deprecated: 4.10 since: 4.0

###### GtkFileChooser:create-folders

Whether a file chooser not in `GTK_FILE_CHOOSER_ACTION_OPEN` mode will offer the user to create new folders.

deprecated: 4.10 since: 4.0

###### GtkFileChooser:filter

The current filter for selecting files that are displayed.

deprecated: 4.10 since: 4.0

###### GtkFileChooser:filters

A `GListModel` containing the filters that have been added with gtk_file_chooser_add_filter().

deprecated: 4.10 since: 4.0

###### GtkFileChooser:select-multiple

Whether to allow multiple files to be selected.

deprecated: 4.10 since: 4.0

###### GtkFileChooser:shortcut-folders

A `GListModel` containing the shortcut folders that have been added with gtk_file_chooser_add_shortcut_folder().

deprecated: 4.10 since: 4.0

#### Signals

##### Signals inherited from GtkNativeDialog (1)

###### GtkNativeDialog::response

Emitted when the user responds to the dialog.

since: 4.0

##### Signals inherited from GObject (1)

###### GObject::notify

The notify signal is emitted on an object when one of its properties has its value set through g_object_set_property(), g_object_set(), et al.

since: 2.0

#### Class structure

    struct GtkFileChooserNativeClass {
      GtkNativeDialogClass parent_class;

    }

No description available.

###### Class members

`parent_class: GtkNativeDialogClass`
  No description available.