Class FileChooserDialog
- All Implemented Interfaces:
Accessible, Buildable, ConstraintTarget, FileChooser, Native, Root, ShortcutManager, Proxy
GtkFileChooserDialog is a dialog suitable for use with
“File Open” or “File Save” commands.

This widget works by putting a FileChooserWidget
inside a Dialog. It exposes the FileChooser
interface, so you can use all of the FileChooser functions
on the file chooser dialog as well as those for Dialog.
Note that GtkFileChooserDialog does not have any methods of its
own. Instead, you should use the functions that work on a
FileChooser.
If you want to integrate well with the platform you should use the
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:
static void
on_open_response (GtkDialog *dialog,
int response)
{
if (response == GTK_RESPONSE_ACCEPT)
{
GtkFileChooser *chooser = GTK_FILE_CHOOSER (dialog);
g_autoptr(GFile) file = gtk_file_chooser_get_file (chooser);
open_file (file);
}
gtk_window_destroy (GTK_WINDOW (dialog));
}
// ...
GtkWidget *dialog;
GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_OPEN;
dialog = gtk_file_chooser_dialog_new ("Open File",
parent_window,
action,
_("_Cancel"),
GTK_RESPONSE_CANCEL,
_("_Open"),
GTK_RESPONSE_ACCEPT,
NULL);
gtk_window_present (GTK_WINDOW (dialog));
g_signal_connect (dialog, "response",
G_CALLBACK (on_open_response),
NULL);
To use a dialog for saving, you can use this:
static void
on_save_response (GtkDialog *dialog,
int response)
{
if (response == GTK_RESPONSE_ACCEPT)
{
GtkFileChooser *chooser = GTK_FILE_CHOOSER (dialog);
g_autoptr(GFile) file = gtk_file_chooser_get_file (chooser);
save_to_file (file);
}
gtk_window_destroy (GTK_WINDOW (dialog));
}
// ...
GtkWidget *dialog;
GtkFileChooser *chooser;
GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_SAVE;
dialog = gtk_file_chooser_dialog_new ("Save File",
parent_window,
action,
_("_Cancel"),
GTK_RESPONSE_CANCEL,
_("_Save"),
GTK_RESPONSE_ACCEPT,
NULL);
chooser = GTK_FILE_CHOOSER (dialog);
if (user_edited_a_new_document)
gtk_file_chooser_set_current_name (chooser, _("Untitled document"));
else
gtk_file_chooser_set_file (chooser, existing_filename);
gtk_window_present (GTK_WINDOW (dialog));
g_signal_connect (dialog, "response",
G_CALLBACK (on_save_response),
NULL);
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
FileChooserAction.OPEN. -
To save a file for the first time, use
FileChooserAction.SAVE, and suggest a name such as “Untitled” withFileChooser.setCurrentName(String). -
To save a file under a different name, use
FileChooserAction.SAVE, and set the existing file withFileChooser.setFile(File). -
To choose a folder instead of a file, use
FileChooserAction.SELECT_FOLDER.
In general, you should only cause the file chooser to show a specific
folder when it is appropriate to use FileChooser.setFile(File),
i.e. when you are doing a “Save As” command and you already have a file
saved somewhere.
Response Codes
GtkFileChooserDialog inherits from Dialog, so buttons that
go in its action area have response codes such as ResponseType.ACCEPT and
ResponseType.CANCEL. For example, you could call
FileChooserDialog() as follows:
GtkWidget *dialog;
GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_OPEN;
dialog = gtk_file_chooser_dialog_new ("Open File",
parent_window,
action,
_("_Cancel"),
GTK_RESPONSE_CANCEL,
_("_Open"),
GTK_RESPONSE_ACCEPT,
NULL);
This will create buttons for “Cancel” and “Open” that use predefined
response identifiers from Gtk.ResponseType. For most dialog
boxes you can use your own custom response codes rather than the
ones in 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.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classFileChooserDialog.Builder<B extends FileChooserDialog.Builder<B>>Deprecated.Inner class implementing a builder pattern to construct a GObject with properties.Nested classes/interfaces inherited from class Dialog
Dialog.CloseCallback, Dialog.DialogClass, Dialog.ResponseCallbackNested classes/interfaces inherited from class Window
Window.ActivateDefaultCallback, Window.ActivateFocusCallback, Window.CloseRequestCallback, Window.EnableDebuggingCallback, Window.KeysChangedCallback, Window.WindowClassNested classes/interfaces inherited from class Widget
Widget.DestroyCallback, Widget.DirectionChangedCallback, Widget.HideCallback, Widget.KeynavFailedCallback, Widget.MapCallback, Widget.MnemonicActivateCallback, Widget.MoveFocusCallback, Widget.QueryTooltipCallback, Widget.RealizeCallback, Widget.ShowCallback, Widget.StateFlagsChangedCallback, Widget.UnmapCallback, Widget.UnrealizeCallback, Widget.Widget$Impl, Widget.WidgetClassNested classes/interfaces inherited from class InitiallyUnowned
InitiallyUnowned.InitiallyUnownedClassNested classes/interfaces inherited from class GObject
GObject.NotifyCallback, GObject.ObjectClassNested classes/interfaces inherited from interface Accessible
Accessible.Accessible$Impl, Accessible.AccessibleInterfaceNested classes/interfaces inherited from interface Buildable
Buildable.Buildable$Impl, Buildable.BuildableIfaceNested classes/interfaces inherited from interface ConstraintTarget
ConstraintTarget.ConstraintTarget$Impl, ConstraintTarget.ConstraintTargetInterfaceNested classes/interfaces inherited from interface FileChooser
FileChooser.FileChooser$ImplNested classes/interfaces inherited from interface Native
Native.Native$Impl, Native.NativeInterfaceNested classes/interfaces inherited from interface Root
Root.Root$Impl, Root.RootInterfaceNested classes/interfaces inherited from interface ShortcutManager
ShortcutManager.ShortcutManager$Impl, ShortcutManager.ShortcutManagerInterface -
Constructor Summary
ConstructorsConstructorDescriptionDeprecated.Create a new FileChooserDialog.FileChooserDialog(@Nullable String title, @Nullable Window parent, FileChooserAction action, @Nullable String firstButtonText, Object... varargs) Deprecated.UseFileDialoginsteadFileChooserDialog(MemorySegment address) Deprecated.Create a FileChooserDialog instance for the provided memory address. -
Method Summary
Modifier and TypeMethodDescriptionprotected FileChooserDialogasParent()Deprecated.Return this instance as if it were its parent type.static FileChooserDialog.Builder<? extends FileChooserDialog.Builder> builder()Deprecated.AFileChooserDialog.Builderobject constructs aFileChooserDialogwith the specified properties.static MemoryLayoutDeprecated.The memory layout of the native struct.static @Nullable TypegetType()Deprecated.Get the GType of the FileChooserDialog class.Methods inherited from class Dialog
addActionWidget, addButton, addButtons, close, emitClose, emitResponse, getContentArea, getHeaderBar, getResponseForWidget, getWidgetForResponse, onClose, onResponse, response, setDefaultResponse, setResponseSensitive, withButtons, withButtonsMethods inherited from class Window
activateDefault, activateFocus, closeRequest, destroy, emitActivateDefault, emitActivateFocus, emitCloseRequest, emitEnableDebugging, emitKeysChanged, enableDebugging, fullscreen, fullscreenOnMonitor, getApplication, getChild, getDecorated, getDefaultIconName, getDefaultSize, getDefaultWidget, getDeletable, getDestroyWithParent, getFocus, getFocusVisible, getGravity, getGroup, getHandleMenubarAccel, getHideOnClose, getIconName, getMnemonicsVisible, getModal, getResizable, getTitle, getTitlebar, getToplevels, getTransientFor, hasGroup, isActive, isFullscreen, isMaximized, isSuspended, keysChanged, listToplevels, maximize, minimize, onActivateDefault, onActivateFocus, onCloseRequest, onEnableDebugging, onKeysChanged, present, presentWithTime, setApplication, setAutoStartupNotification, setChild, setDecorated, setDefaultIconName, setDefaultSize, setDefaultWidget, setDeletable, setDestroyWithParent, setDisplay, setFocus, setFocusVisible, setGravity, setHandleMenubarAccel, setHideOnClose, setIconName, setInteractiveDebugging, setMnemonicsVisible, setModal, setResizable, setStartupId, setTitle, setTitlebar, setTransientFor, unfullscreen, unmaximize, unminimizeMethods inherited from class Widget
actionSetEnabled, activateActionIfExists, activateWidget, addController, addCssClass, addMnemonicLabel, addTickCallback, allocate, childFocus, computeBounds, computeExpand, computeExpand, computePoint, computeTransform, contains, createPangoContext, createPangoLayout, cssChanged, directionChanged, disposeTemplate, dragCheckThreshold, emitDestroy, emitDirectionChanged, emitHide, emitKeynavFailed, emitMap, emitMnemonicActivate, emitMoveFocus, emitQueryTooltip, emitRealize, emitShow, emitStateFlagsChanged, emitUnmap, emitUnrealize, errorBell, focus, getAllocatedBaseline, getAllocatedHeight, getAllocatedWidth, getAllocation, getAncestor, getBaseline, getCanFocus, getCanTarget, getChildVisible, getClipboard, getColor, getCssClasses, getCssName, getCursor, getDefaultDirection, getDirection, getDisplay, getFirstChild, getFocusable, getFocusChild, getFocusOnClick, getFontMap, getFontOptions, getFrameClock, getHalign, getHasTooltip, getHeight, getHexpand, getHexpandSet, getLastChild, getLayoutManager, getLimitEvents, getMapped, getMarginBottom, getMarginEnd, getMarginStart, getMarginTop, getName, getNative, getNextSibling, getOpacity, getOverflow, getPangoContext, getParent, getPreferredSize, getPrevSibling, getPrimaryClipboard, getRealized, getReceivesDefault, getRequestMode, getRoot, getScaleFactor, getSensitive, getSettings, getSize, getSizeRequest, getStateFlags, getStyleContext, getTemplateChild, getTooltipMarkup, getTooltipText, getValign, getVexpand, getVexpandSet, getVisible, getWidth, grabFocus, hasCssClass, hasDefault, hasFocus, hasVisibleFocus, hide, inDestruction, initTemplate, insertActionGroup, insertAfter, insertBefore, isAncestor, isDrawable, isFocus, isSensitive, isVisible, keynavFailed, listMnemonicLabels, map, measure, mnemonicActivate, moveFocus, observeChildren, observeControllers, onDestroy, onDirectionChanged, onHide, onKeynavFailed, onMap, onMnemonicActivate, onMoveFocus, onQueryTooltip, onRealize, onShow, onStateFlagsChanged, onUnmap, onUnrealize, pick, pick, queryTooltip, queueAllocate, queueDraw, queueResize, realize, removeController, removeCssClass, removeMnemonicLabel, removeTickCallback, root, setCanFocus, setCanTarget, setChildVisible, setCssClasses, setCursor, setCursorFromName, setDefaultDirection, setDirection, setFocusable, setFocusChild, setFocusOnClick, setFontMap, setFontOptions, setHalign, setHasTooltip, setHexpand, setHexpandSet, setLayoutManager, setLimitEvents, setMarginBottom, setMarginEnd, setMarginStart, setMarginTop, setName, setOpacity, setOverflow, setParent, setReceivesDefault, setSensitive, setSizeRequest, setStateFlags, setStateFlags, setTooltipMarkup, setTooltipText, setValign, setVexpand, setVexpandSet, setVisible, shouldLayout, show, sizeAllocate, sizeAllocate, snapshot, snapshotChild, stateFlagsChanged, systemSettingChanged, translateCoordinates, triggerTooltipQuery, unmap, unparent, unrealize, unroot, unsetStateFlags, unsetStateFlagsMethods inherited from class GObject
addToggleRef, addWeakPointer, bindProperty, bindProperty, bindProperty, bindPropertyFull, bindPropertyFull, bindPropertyWithClosures, bindPropertyWithClosures, compatControl, connect, connect, connect, constructed, disconnect, dispatchPropertiesChanged, dispose, dupData, dupQdata, emit, emitNotify, finalize_, forceFloating, freezeNotify, get, getData, getProperty, getProperty, getProperty, getQdata, getv, interfaceFindProperty, interfaceInstallProperty, interfaceListProperties, isFloating, newInstance, newInstance, newv, notify, notify, notifyByPspec, onNotify, ref, refSink, removeToggleRef, removeWeakPointer, replaceData, replaceQdata, runDispose, set, setData, setDataFull, setProperty, setProperty, setProperty, setQdata, setQdataFull, setv, stealData, stealQdata, takeRef, thawNotify, unref, watchClosure, weakRef, weakUnref, withPropertiesMethods inherited from class TypeInstance
callParent, callParent, cast, getPrivate, readGClass, writeGClassMethods inherited from class ProxyInstance
equals, handle, hashCodeMethods inherited from class Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface Accessible
announce, getAccessibleId, getAccessibleParent, getAccessibleRole, getAtContext, getBounds, getFirstAccessibleChild, getNextAccessibleSibling, getPlatformState, resetProperty, resetRelation, resetState, setAccessibleParent, updateNextAccessibleSibling, updatePlatformState, updateProperty, updateRelation, updateStateMethods inherited from interface Buildable
getBuildableIdMethods inherited from interface FileChooser
addChoice, addFilter, addShortcutFolder, getAction, getChoice, getCreateFolders, getCurrentFolder, getCurrentName, getFile, getFiles, getFilter, getFilters, getSelectMultiple, getShortcutFolders, removeChoice, removeFilter, removeShortcutFolder, setAction, setChoice, setCreateFolders, setCurrentFolder, setCurrentName, setFile, setFilter, setSelectMultipleMethods inherited from interface Native
getRenderer, getSurface, getSurfaceTransform, realize, unrealizeMethods inherited from interface Root
getDisplay, getFocus, setFocus
-
Constructor Details
-
FileChooserDialog
Deprecated.Create a FileChooserDialog instance for the provided memory address.- Parameters:
address- the memory address of the native object
-
FileChooserDialog
@Deprecated public FileChooserDialog(@Nullable String title, @Nullable Window parent, FileChooserAction action, @Nullable String firstButtonText, Object... varargs) Deprecated.UseFileDialoginsteadCreates a new
GtkFileChooserDialog.This function is analogous to
Dialog.withButtons(String, Window, Set, String, Object...).- Parameters:
title- Title of the dialogparent- Transient parent of the dialogaction- Open or save mode for the dialogfirstButtonText- text to go in the first buttonvarargs- response ID for the first button, then additional (button, id) pairs, ending withnull
-
FileChooserDialog
public FileChooserDialog()Deprecated.Create a new FileChooserDialog.
-
-
Method Details
-
getType
Deprecated.Get the GType of the FileChooserDialog class.- Returns:
- the GType
-
getMemoryLayout
Deprecated.The memory layout of the native struct.- Returns:
- the memory layout
-
asParent
Deprecated.Return this instance as if it were its parent type. Comparable to the Javasuperkeyword, but ensures the parent typeclass is also used in native code. -
builder
Deprecated.AFileChooserDialog.Builderobject constructs aFileChooserDialogwith the specified properties. Use the variousset...()methods to set properties, and finish construction withFileChooserDialog.Builder.build().- Returns:
- the builder object
-
FileDialoginstead