Package ch.bailu.gtk.gtk
Class FileChooserDialog
- All Implemented Interfaces:
PointerInterface
- Direct Known Subclasses:
FileChooserDialogExtended
`GtkFileChooserDialog` is a dialog suitable for use with
“File Open” or “File Save” commands.
![An example GtkFileChooserDialog](filechooser.png)
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 (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_widget_show (dialog);
g_signal_connect (dialog, "response",
G_CALLBACK (on_open_response),
NULL);
```
To use a dialog for saving, you can use this:
```c
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_widget_show (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 %GTK_FILE_CHOOSER_ACTION_OPEN.
- To save a file for the first time, use %GTK_FILE_CHOOSER_ACTION_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_FILE_CHOOSER_ACTION_SAVE,
and set the existing file with [method@Gtk.FileChooser.set_file].
- To choose a folder instead of a filem use %GTK_FILE_CHOOSER_ACTION_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 as %GTK_RESPONSE_ACCEPT and
%GTK_RESPONSE_CANCEL. For example, you could call
[ctor@Gtk.FileChooserDialog.new] as follows:
```c
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 [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:
- %GTK_RESPONSE_ACCEPT
- %GTK_RESPONSE_OK
- %GTK_RESPONSE_YES
- %GTK_RESPONSE_APPLY
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.
“File Open” or “File Save” commands.
![An example GtkFileChooserDialog](filechooser.png)
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 (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_widget_show (dialog);
g_signal_connect (dialog, "response",
G_CALLBACK (on_open_response),
NULL);
```
To use a dialog for saving, you can use this:
```c
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_widget_show (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 %GTK_FILE_CHOOSER_ACTION_OPEN.
- To save a file for the first time, use %GTK_FILE_CHOOSER_ACTION_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_FILE_CHOOSER_ACTION_SAVE,
and set the existing file with [method@Gtk.FileChooser.set_file].
- To choose a folder instead of a filem use %GTK_FILE_CHOOSER_ACTION_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 as %GTK_RESPONSE_ACCEPT and
%GTK_RESPONSE_CANCEL. For example, you could call
[ctor@Gtk.FileChooserDialog.new] as follows:
```c
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 [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:
- %GTK_RESPONSE_ACCEPT
- %GTK_RESPONSE_OK
- %GTK_RESPONSE_YES
- %GTK_RESPONSE_APPLY
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.
-
Nested Class Summary
Nested classes/interfaces inherited from class ch.bailu.gtk.gtk.Dialog
Dialog.OnClose, Dialog.OnResponse
Nested classes/interfaces inherited from class ch.bailu.gtk.gtk.Window
Window.OnActivateDefault, Window.OnActivateFocus, Window.OnCloseRequest, Window.OnEnableDebugging, Window.OnKeysChanged
Nested classes/interfaces inherited from class ch.bailu.gtk.gtk.Widget
Widget.OnDestroy, Widget.OnDestroyNotify, Widget.OnDirectionChanged, Widget.OnHide, Widget.OnKeynavFailed, Widget.OnMap, Widget.OnMnemonicActivate, Widget.OnMoveFocus, Widget.OnQueryTooltip, Widget.OnRealize, Widget.OnShow, Widget.OnStateFlagsChanged, Widget.OnTickCallback, Widget.OnUnmap, Widget.OnUnrealize
Nested classes/interfaces inherited from class ch.bailu.gtk.gobject.Object
Object.OnBindingTransformFunc, Object.OnDuplicateFunc, Object.OnNotify, Object.OnToggleNotify, Object.OnWeakNotify
-
Field Summary
Fields inherited from class ch.bailu.gtk.gtk.Dialog
SIGNAL_ON_CLOSE, SIGNAL_ON_RESPONSE
Fields inherited from class ch.bailu.gtk.gtk.Window
SIGNAL_ON_ACTIVATE_DEFAULT, SIGNAL_ON_ACTIVATE_FOCUS, SIGNAL_ON_CLOSE_REQUEST, SIGNAL_ON_ENABLE_DEBUGGING, SIGNAL_ON_KEYS_CHANGED
Fields inherited from class ch.bailu.gtk.gtk.Widget
SIGNAL_ON_DESTROY, SIGNAL_ON_DIRECTION_CHANGED, SIGNAL_ON_HIDE, SIGNAL_ON_KEYNAV_FAILED, SIGNAL_ON_MAP, SIGNAL_ON_MNEMONIC_ACTIVATE, SIGNAL_ON_MOVE_FOCUS, SIGNAL_ON_QUERY_TOOLTIP, SIGNAL_ON_REALIZE, SIGNAL_ON_SHOW, SIGNAL_ON_STATE_FLAGS_CHANGED, SIGNAL_ON_UNMAP, SIGNAL_ON_UNREALIZE
Fields inherited from class ch.bailu.gtk.gobject.Object
SIGNAL_ON_NOTIFY
-
Constructor Summary
ConstructorDescriptionFileChooserDialog
(PointerContainer pointer) FileChooserDialog
(Str title, Window parent, int action, Str first_button_text, Object... _elipse) Creates a new `GtkFileChooserDialog`.FileChooserDialog
(String title, Window parent, int action, String first_button_text, Object... _elipse) Creates a new `GtkFileChooserDialog`. -
Method Summary
Modifier and TypeMethodDescriptionImplements interfaceAccessible
.Implements interfaceBuildable
.Implements interfaceConstraintTarget
.Implements interfaceFileChooser
.asNative()
Implements interfaceNative
.asRoot()
Implements interfaceRoot
.Implements interfaceShortcutManager
.static ClassHandler
static int
static long
static TypeSystem.TypeSize
static long
static TypeSystem.TypeSize
Methods inherited from class ch.bailu.gtk.gtk.Dialog
addActionWidget, addButton, addButton, addButtons, addButtons, getContentArea, getHeaderBar, getResponseForWidget, getWidgetForResponse, newWithButtonsDialog, newWithButtonsDialog, onClose, onResponse, response, setDefaultResponse, setResponseSensitive
Methods inherited from class ch.bailu.gtk.gtk.Window
close, destroy, fullscreen, fullscreenOnMonitor, getApplication, getChild, getDecorated, getDefaultIconName, getDefaultSize, getDefaultWidget, getDeletable, getDestroyWithParent, getFocus, getFocusVisible, getGroup, getHandleMenubarAccel, getHideOnClose, getIconName, getMnemonicsVisible, getModal, getResizable, getTitle, getTitlebar, getToplevels, getTransientFor, hasGroup, isActive, isFullscreen, isMaximized, listToplevels, maximize, minimize, onActivateDefault, onActivateFocus, onCloseRequest, onEnableDebugging, onKeysChanged, present, presentWithTime, setApplication, setAutoStartupNotification, setChild, setDecorated, setDefaultIconName, setDefaultSize, setDefaultWidget, setDeletable, setDestroyWithParent, setDisplay, setFocus, setFocusVisible, setHandleMenubarAccel, setHideOnClose, setIconName, setIconName, setInteractiveDebugging, setMnemonicsVisible, setModal, setResizable, setStartupId, setStartupId, setTitle, setTitle, setTitlebar, setTransientFor, unfullscreen, unmaximize, unminimize
Methods inherited from class ch.bailu.gtk.gtk.Widget
actionSetEnabled, actionSetEnabled, activate, activateAction, activateAction, activateActionVariant, activateActionVariant, activateDefault, addController, addCssClass, addCssClass, addMnemonicLabel, addTickCallback, allocate, childFocus, computeBounds, computeExpand, computePoint, computeTransform, contains, createPangoContext, createPangoLayout, createPangoLayout, disposeTemplate, dragCheckThreshold, errorBell, getAllocatedBaseline, getAllocatedHeight, getAllocatedWidth, getAllocation, getAncestor, getCanFocus, getCanTarget, getChildVisible, getClipboard, getCssClasses, getCssName, getCursor, getDefaultDirection, getDirection, getDisplay, getFirstChild, getFocusable, getFocusChild, getFocusOnClick, getFontMap, getFontOptions, getFrameClock, getHalign, getHasTooltip, getHeight, getHexpand, getHexpandSet, getLastChild, getLayoutManager, 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, getTemplateChild, getTooltipMarkup, getTooltipText, getValign, getVexpand, getVexpandSet, getVisible, getWidth, grabFocus, hasCssClass, hasCssClass, hasDefault, hasFocus, hasVisibleFocus, hide, inDestruction, initTemplate, insertActionGroup, insertActionGroup, insertAfter, insertBefore, isAncestor, isDrawable, isFocus, isSensitive, isVisible, keynavFailed, listMnemonicLabels, map, measure, mnemonicActivate, observeChildren, observeControllers, onDestroy, onDirectionChanged, onHide, onKeynavFailed, onMap, onMnemonicActivate, onMoveFocus, onQueryTooltip, onRealize, onShow, onStateFlagsChanged, onUnmap, onUnrealize, pick, queueAllocate, queueDraw, queueResize, realize, removeController, removeCssClass, removeCssClass, removeMnemonicLabel, removeTickCallback, setCanFocus, setCanTarget, setChildVisible, setCssClasses, setCursor, setCursorFromName, setCursorFromName, setDefaultDirection, setDirection, setFocusable, setFocusChild, setFocusOnClick, setFontMap, setFontOptions, setHalign, setHasTooltip, setHexpand, setHexpandSet, setLayoutManager, setMarginBottom, setMarginEnd, setMarginStart, setMarginTop, setName, setName, setOpacity, setOverflow, setParent, setReceivesDefault, setSensitive, setSizeRequest, setStateFlags, setTooltipMarkup, setTooltipMarkup, setTooltipText, setTooltipText, setValign, setVexpand, setVexpandSet, setVisible, shouldLayout, show, sizeAllocate, snapshotChild, triggerTooltipQuery, unmap, unparent, unrealize, unsetStateFlags
Methods inherited from class ch.bailu.gtk.gobject.Object
addToggleRef, bindProperty, bindProperty, bindPropertyFull, bindPropertyFull, bindPropertyWithClosures, bindPropertyWithClosures, compatControl, connect, connect, disconnect, disconnect, dupData, dupData, dupQdata, forceFloating, freezeNotify, get, get, getData, getData, getProperty, getProperty, getQdata, interfaceFindProperty, interfaceInstallProperty, isFloating, notify, notify, notifyByPspec, onNotify, ref, refSink, removeToggleRef, replaceData, replaceData, replaceQdata, runDispose, set, set, setData, setData, setDataFull, setDataFull, setProperty, setProperty, setQdata, setQdataFull, stealData, stealData, stealQdata, takeRef, thawNotify, unref, watchClosure, weakRef, weakUnref
Methods inherited from class ch.bailu.gtk.type.Pointer
asCPointer, cast, connectSignal, disconnectSignals, disconnectSignals, equals, hashCode, throwIfNull, throwNullPointerException, toString, unregisterCallbacks, unregisterCallbacks
Methods inherited from class ch.bailu.gtk.type.Type
asCPointer, asCPointer, asCPointerNotNull, asJnaPointer, asJnaPointer, asPointer, asPointer, cast, cast, throwIfNull
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface ch.bailu.gtk.type.PointerInterface
asCPointerNotNull, asJnaPointer, asPointer, isNotNull, isNull
-
Constructor Details
-
FileChooserDialog
-
FileChooserDialog
public FileChooserDialog(@Nullable Str title, @Nullable Window parent, int action, @Nullable Str first_button_text, Object... _elipse) Creates a new `GtkFileChooserDialog`.
This function is analogous to [ctor@Gtk.Dialog.new_with_buttons].- Parameters:
title
- Title of the dialogparent
- Transient parent of the dialogaction
- Open or save mode for the dialogfirst_button_text
- text to go in the first button_elipse
- response ID for the first button, then additional (button, id) pairs, ending with %NULL
-
FileChooserDialog
public FileChooserDialog(String title, @Nullable Window parent, int action, String first_button_text, Object... _elipse) Creates a new `GtkFileChooserDialog`.
This function is analogous to [ctor@Gtk.Dialog.new_with_buttons].- Parameters:
title
- Title of the dialogparent
- Transient parent of the dialogaction
- Open or save mode for the dialogfirst_button_text
- text to go in the first button_elipse
- response ID for the first button, then additional (button, id) pairs, ending with %NULL
-
-
Method Details
-
getClassHandler
-
asAccessible
Implements interfaceAccessible
. Call this to get access to interface functions.- Overrides:
asAccessible
in classDialog
- Returns:
Accessible
-
asBuildable
Implements interfaceBuildable
. Call this to get access to interface functions.- Overrides:
asBuildable
in classDialog
- Returns:
Buildable
-
asConstraintTarget
Implements interfaceConstraintTarget
. Call this to get access to interface functions.- Overrides:
asConstraintTarget
in classDialog
- Returns:
ConstraintTarget
-
asFileChooser
Implements interfaceFileChooser
. Call this to get access to interface functions.- Returns:
FileChooser
-
asNative
Implements interfaceNative
. Call this to get access to interface functions. -
asRoot
Implements interfaceRoot
. Call this to get access to interface functions. -
asShortcutManager
Implements interfaceShortcutManager
. Call this to get access to interface functions.- Overrides:
asShortcutManager
in classDialog
- Returns:
ShortcutManager
-
getTypeID
public static long getTypeID() -
getParentTypeID
public static long getParentTypeID() -
getTypeSize
-
getParentTypeSize
-
getInstanceSize
public static int getInstanceSize()
-