Class Dialog
- All Implemented Interfaces:
Proxy
,Accessible
,Buildable
,ConstraintTarget
,Native
,Root
,ShortcutManager
- Direct Known Subclasses:
AppChooserDialog
,ColorChooserDialog
,FileChooserDialog
,FontChooserDialog
,MessageDialog
,PageSetupUnixDialog
,PrintUnixDialog
Typical uses are to display a message, ask a question, or anything else that does not require extensive effort on the user’s part.
The main area of a GtkDialog
is called the "content area", and is yours
to populate with widgets such a GtkLabel
or GtkEntry
, to present
your information, questions, or tasks to the user.
In addition, dialogs allow you to add "action widgets". Most commonly,
action widgets are buttons. Depending on the platform, action widgets may
be presented in the header bar at the top of the window, or at the bottom
of the window. To add action widgets, create your GtkDialog
using
withButtons(java.lang.String, org.gnome.gtk.Window, java.util.Set<org.gnome.gtk.DialogFlags>, java.lang.String, java.lang.Object...)
, or use
addButton(java.lang.String, int)
, addButtons(java.lang.String, java.lang.Object...)
,
or addActionWidget(org.gnome.gtk.Widget, int)
.
GtkDialogs
uses some heuristics to decide whether to add a close
button to the window decorations. If any of the action buttons use
the response ID ResponseType.CLOSE
or ResponseType.CANCEL
, the
close button is omitted.
Clicking a button that was added as an action widget will emit the
Gtk.Dialog::response
signal with a response ID that you specified.
GTK will never assign a meaning to positive response IDs; these are
entirely user-defined. But for convenience, you can use the response
IDs in the Gtk.ResponseType
enumeration (these all have values
less than zero). If a dialog receives a delete event, the
Gtk.Dialog::response
signal will be emitted with the
ResponseType.DELETE_EVENT
response ID.
Dialogs are created with a call to Dialog()
or
withButtons(java.lang.String, org.gnome.gtk.Window, java.util.Set<org.gnome.gtk.DialogFlags>, java.lang.String, java.lang.Object...)
. The latter is recommended; it allows
you to set the dialog title, some convenient flags, and add buttons.
A “modal” dialog (that is, one which freezes the rest of the application
from user input), can be created by calling Window.setModal(boolean)
on the dialog. When using withButtons(java.lang.String, org.gnome.gtk.Window, java.util.Set<org.gnome.gtk.DialogFlags>, java.lang.String, java.lang.Object...)
, you can also
pass the DialogFlags.MODAL
flag to make a dialog modal.
For the simple dialog in the following example, a MessageDialog
would save some effort. But you’d need to create the dialog contents manually
if you had more than a simple message in the dialog.
An example for simple GtkDialog
usage:
// Function to open a dialog box with a message
void
quick_message (GtkWindow *parent, char *message)
{
GtkWidget *dialog, *label, *content_area;
GtkDialogFlags flags;
// Create the widgets
flags = GTK_DIALOG_DESTROY_WITH_PARENT;
dialog = gtk_dialog_new_with_buttons ("Message",
parent,
flags,
_("_OK"),
GTK_RESPONSE_NONE,
NULL);
content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
label = gtk_label_new (message);
// Ensure that the dialog box is destroyed when the user responds
g_signal_connect_swapped (dialog,
"response",
G_CALLBACK (gtk_window_destroy),
dialog);
// Add the label, and show everything we’ve added
gtk_box_append (GTK_BOX (content_area), label);
gtk_widget_show (dialog);
}
GtkDialog as GtkBuildable
The GtkDialog
implementation of the GtkBuildable
interface exposes the
contentArea
as an internal child with the name “content_area”.
GtkDialog
supports a custom <action-widgets>
element, which can contain
multiple <action-widget>
elements. The “response” attribute specifies a
numeric response, and the content of the element is the id of widget
(which should be a child of the dialogs actionArea
). To mark a response
as default, set the “default” attribute of the <action-widget>
element
to true.
GtkDialog
supports adding action widgets by specifying “action” as
the “type” attribute of a <child>
element. The widget will be added
either to the action area or the headerbar of the dialog, depending
on the “use-header-bar” property. The response id has to be associated
with the action widget using the <action-widgets>
element.
An example of a GtkDialog
UI definition fragment:
<object class="GtkDialog" id="dialog1">
<child type="action">
<object class="GtkButton" id="button_cancel"/>
</child>
<child type="action">
<object class="GtkButton" id="button_ok">
</object>
</child>
<action-widgets>
<action-widget response="cancel">button_cancel</action-widget>
<action-widget response="ok" default="true">button_ok</action-widget>
</action-widgets>
</object>
Accessibility
GtkDialog
uses the AccessibleRole.DIALOG
role.
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
Dialog.Builder<B extends Dialog.Builder<B>>
Deprecated.Inner class implementing a builder pattern to construct a GObject with properties.static interface
Deprecated.static class
Deprecated.static interface
Deprecated.Nested classes/interfaces inherited from class org.gnome.gtk.Window
Window.ActivateDefaultCallback, Window.ActivateFocusCallback, Window.CloseRequestCallback, Window.EnableDebuggingCallback, Window.KeysChangedCallback, Window.WindowClass
Nested classes/interfaces inherited from class org.gnome.gtk.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.WidgetClass, Widget.WidgetImpl
Nested classes/interfaces inherited from class org.gnome.gobject.InitiallyUnowned
InitiallyUnowned.InitiallyUnownedClass
Nested classes/interfaces inherited from class org.gnome.gobject.GObject
GObject.NotifyCallback, GObject.ObjectClass
Nested classes/interfaces inherited from interface org.gnome.gtk.Accessible
Accessible.AccessibleImpl, Accessible.AccessibleInterface
Nested classes/interfaces inherited from interface org.gnome.gtk.Buildable
Buildable.BuildableIface, Buildable.BuildableImpl
Nested classes/interfaces inherited from interface org.gnome.gtk.ConstraintTarget
ConstraintTarget.ConstraintTargetImpl, ConstraintTarget.ConstraintTargetInterface
Nested classes/interfaces inherited from interface org.gnome.gtk.Native
Native.NativeImpl, Native.NativeInterface
Nested classes/interfaces inherited from interface org.gnome.gtk.Root
Root.RootImpl, Root.RootInterface
Nested classes/interfaces inherited from interface org.gnome.gtk.ShortcutManager
ShortcutManager.ShortcutManagerImpl, ShortcutManager.ShortcutManagerInterface
-
Constructor Summary
ConstructorDescriptionDialog()
Deprecated.Dialog
(MemorySegment address) Deprecated.Create a Dialog proxy instance for the provided memory address. -
Method Summary
Modifier and TypeMethodDescriptionvoid
addActionWidget
(Widget child, int responseId) Deprecated.UseWindow
insteadDeprecated.UseWindow
insteadvoid
addButtons
(String firstButtonText, Object... varargs) Deprecated.UseWindow
insteadprotected Dialog
asParent()
Deprecated.Returns this instance as if it were its parent type.static Dialog.Builder
<? extends Dialog.Builder> builder()
Deprecated.ADialog.Builder
object constructs aDialog
with the specified properties.void
close()
Deprecated.Signal emitted when the user uses a keybinding to close the dialog.void
Deprecated.void
emitResponse
(int responseId) Deprecated.Deprecated.UseWindow
insteadDeprecated.UseWindow
insteadstatic MemoryLayout
Deprecated.The memory layout of the native struct.int
getResponseForWidget
(Widget widget) Deprecated.UseWindow
insteadstatic Type
getType()
Deprecated.Get the GType of the Dialog classgetWidgetForResponse
(int responseId) Deprecated.UseWindow
insteadonClose
(Dialog.CloseCallback handler) Deprecated.UseWindow
insteadonResponse
(Dialog.ResponseCallback handler) Deprecated.UseWindow
insteadvoid
response
(int responseId) Deprecated.UseWindow
insteadvoid
setDefaultResponse
(int responseId) Deprecated.UseWindow
insteadvoid
setResponseSensitive
(int responseId, boolean setting) Deprecated.UseWindow
insteadstatic Dialog
withButtons
(@Nullable String title, @Nullable Window parent, Set<DialogFlags> flags, @Nullable String firstButtonText, Object... varargs) Deprecated.UseWindow
insteadstatic Widget
withButtons
(@Nullable String title, @Nullable Window parent, DialogFlags flags, @Nullable String firstButtonText, Object... varargs) Deprecated.UseWindow
insteadMethods inherited from class org.gnome.gtk.Window
activateDefault, activateFocus, closeRequest, destroy, emitActivateDefault, emitActivateFocus, emitCloseRequest, emitEnableDebugging, emitKeysChanged, enableDebugging, 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, isSuspended, keysChanged, 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, setInteractiveDebugging, setMnemonicsVisible, setModal, setResizable, setStartupId, setTitle, setTitlebar, setTransientFor, unfullscreen, unmaximize, unminimize
Methods inherited from class org.gnome.gtk.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, 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, 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, unsetStateFlags
Methods inherited from class org.gnome.gobject.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, 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, withProperties
Methods inherited from class org.gnome.gobject.TypeInstance
callParent, callParent, getPrivate, readGClass, writeGClass
Methods inherited from class io.github.jwharm.javagi.base.ProxyInstance
equals, handle, hashCode
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.gnome.gtk.Accessible
announce, getAccessibleParent, getAccessibleRole, getAtContext, getBounds, getFirstAccessibleChild, getNextAccessibleSibling, getPlatformState, resetProperty, resetRelation, resetState, setAccessibleParent, updateNextAccessibleSibling, updateProperty, updateRelation, updateState
Methods inherited from interface org.gnome.gtk.Buildable
getBuildableId
Methods inherited from interface org.gnome.gtk.Native
getRenderer, getSurface, getSurfaceTransform, realize, unrealize
Methods inherited from interface org.gnome.gtk.Root
getDisplay, getFocus, setFocus
-
Constructor Details
-
Dialog
Deprecated.Create a Dialog proxy instance for the provided memory address.- Parameters:
address
- the memory address of the native object
-
Dialog
Deprecated.UseWindow
insteadCreates a new dialog box.Widgets should not be packed into the
GtkWindow
directly, but into thecontentArea
andactionArea
, as described above.
-
-
Method Details
-
getType
-
getMemoryLayout
Deprecated.The memory layout of the native struct.- Returns:
- the memory layout
-
asParent
Deprecated.Returns this instance as if it were its parent type. This is mostly synonymous to the Javasuper
keyword, but will set the native typeclass function pointers to the parent type. When overriding a native virtual method in Java, "chaining up" withsuper.methodName()
doesn't work, because it invokes the overridden function pointer again. To chain up, callasParent().methodName()
. This will call the native function pointer of this virtual method in the typeclass of the parent type. -
withButtons
@Deprecated public static Dialog withButtons(@Nullable @Nullable String title, @Nullable @Nullable Window parent, Set<DialogFlags> flags, @Nullable @Nullable String firstButtonText, Object... varargs) Deprecated.UseWindow
insteadCreates a newGtkDialog
with the given title and transient parent.The
flags
argument can be used to make the dialog modal, have it destroyed along with its transient parent, or make it use a headerbar.Button text/response ID pairs should be listed in pairs, with a
null
pointer ending the list. Button text can be arbitrary text. A response ID can be any positive number, or one of the values in theGtk.ResponseType
enumeration. If the user clicks one of these buttons,GtkDialog
will emit theGtk.Dialog::response
signal with the corresponding response ID.If a
GtkDialog
receives a delete event, it will emit ::response with a response ID ofResponseType.DELETE_EVENT
.However, destroying a dialog does not emit the ::response signal; so be careful relying on ::response when using the
DialogFlags.DESTROY_WITH_PARENT
flag.Here’s a simple example:
GtkWindow *main_app_window; // Window the dialog should show up on GtkWidget *dialog; GtkDialogFlags flags = GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT; dialog = gtk_dialog_new_with_buttons ("My dialog", main_app_window, flags, _("_OK"), GTK_RESPONSE_ACCEPT, _("_Cancel"), GTK_RESPONSE_REJECT, NULL);
- Parameters:
title
- Title of the dialogparent
- Transient parent of the dialogflags
- fromGtkDialogFlags
firstButtonText
- text to go in first buttonvarargs
- response ID for first button, then additional buttons, ending withnull
- Returns:
- a new
GtkDialog
-
withButtons
@Deprecated public static Widget withButtons(@Nullable @Nullable String title, @Nullable @Nullable Window parent, DialogFlags flags, @Nullable @Nullable String firstButtonText, Object... varargs) Deprecated.UseWindow
insteadCreates a newGtkDialog
with the given title and transient parent.The
flags
argument can be used to make the dialog modal, have it destroyed along with its transient parent, or make it use a headerbar.Button text/response ID pairs should be listed in pairs, with a
null
pointer ending the list. Button text can be arbitrary text. A response ID can be any positive number, or one of the values in theGtk.ResponseType
enumeration. If the user clicks one of these buttons,GtkDialog
will emit theGtk.Dialog::response
signal with the corresponding response ID.If a
GtkDialog
receives a delete event, it will emit ::response with a response ID ofResponseType.DELETE_EVENT
.However, destroying a dialog does not emit the ::response signal; so be careful relying on ::response when using the
DialogFlags.DESTROY_WITH_PARENT
flag.Here’s a simple example:
GtkWindow *main_app_window; // Window the dialog should show up on GtkWidget *dialog; GtkDialogFlags flags = GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT; dialog = gtk_dialog_new_with_buttons ("My dialog", main_app_window, flags, _("_OK"), GTK_RESPONSE_ACCEPT, _("_Cancel"), GTK_RESPONSE_REJECT, NULL);
- Parameters:
title
- Title of the dialogparent
- Transient parent of the dialogflags
- fromGtkDialogFlags
firstButtonText
- text to go in first buttonvarargs
- response ID for first button, then additional buttons, ending withnull
- Returns:
- a new
GtkDialog
-
addActionWidget
Deprecated.UseWindow
insteadAdds an activatable widget to the action area of aGtkDialog
.GTK connects a signal handler that will emit the
Gtk.Dialog::response
signal on the dialog when the widget is activated. The widget is appended to the end of the dialog’s action area.If you want to add a non-activatable widget, simply pack it into the
actionArea
field of theGtkDialog
struct.- Parameters:
child
- an activatable widgetresponseId
- response ID forchild
-
addButton
Deprecated.UseWindow
insteadAdds a button with the given text.GTK arranges things so that clicking the button will emit the
Gtk.Dialog::response
signal with the givenresponseId
. The button is appended to the end of the dialog’s action area. The button widget is returned, but usually you don’t need it.- Parameters:
buttonText
- text of buttonresponseId
- response ID for the button- Returns:
- the
GtkButton
widget that was added
-
addButtons
Deprecated.UseWindow
insteadAdds multiple buttons.This is the same as calling
addButton(java.lang.String, int)
repeatedly. The variable argument list should benull
-terminated as withwithButtons(java.lang.String, org.gnome.gtk.Window, java.util.Set<org.gnome.gtk.DialogFlags>, java.lang.String, java.lang.Object...)
. Each button must have both text and response ID.- Parameters:
firstButtonText
- button textvarargs
- response ID for first button, then more text-response_id pairs
-
getContentArea
Deprecated.UseWindow
insteadReturns the content area of this Dialog.- Returns:
- the content area
GtkBox
.
-
getHeaderBar
Deprecated.UseWindow
insteadReturns the header bar of this Dialog.Note that the headerbar is only used by the dialog if the
Gtk.Dialog:use-header-bar
property istrue
.- Returns:
- the header bar
-
getResponseForWidget
Deprecated.UseWindow
insteadGets the response id of a widget in the action area of a dialog.- Parameters:
widget
- a widget in the action area of this Dialog- Returns:
- the response id of
widget
, orResponseType.NONE
ifwidget
doesn’t have a response id set.
-
getWidgetForResponse
Deprecated.UseWindow
insteadGets the widget button that uses the given response ID in the action area of a dialog.- Parameters:
responseId
- the response ID used by the this Dialog widget- Returns:
- the
widget
button that uses the givenresponseId
-
response
Deprecated.UseWindow
insteadEmits the ::response signal with the given response ID.Used to indicate that the user has responded to the dialog in some way.
- Parameters:
responseId
- response ID
-
setDefaultResponse
Deprecated.UseWindow
insteadSets the default widget for the dialog based on the response ID.Pressing “Enter” normally activates the default widget.
- Parameters:
responseId
- a response ID
-
setResponseSensitive
Deprecated.UseWindow
insteadA convenient way to sensitize/desensitize dialog buttons.Calls
gtk_widget_set_sensitive (widget, @setting)
for each widget in the dialog’s action area with the givenresponseId
.- Parameters:
responseId
- a response IDsetting
-true
for sensitive
-
close
-
onClose
Deprecated.UseWindow
insteadEmitted when the user uses a keybinding to close the dialog.This is a keybinding signal.
The default binding for this signal is the Escape key.
- Parameters:
handler
- the signal handler- Returns:
- a signal handler ID to keep track of the signal connection
- See Also:
-
emitClose
Deprecated.Emits the "close" signal. SeeonClose(org.gnome.gtk.Dialog.CloseCallback)
. -
onResponse
@Deprecated public SignalConnection<Dialog.ResponseCallback> onResponse(Dialog.ResponseCallback handler) Deprecated.UseWindow
insteadEmitted when an action widget is clicked.The signal is also emitted when the dialog receives a delete event, and when
response(int)
is called. On a delete event, the response ID isResponseType.DELETE_EVENT
. Otherwise, it depends on which action widget was clicked.- Parameters:
handler
- the signal handler- Returns:
- a signal handler ID to keep track of the signal connection
- See Also:
-
emitResponse
Deprecated.Emits the "response" signal. SeeonResponse(org.gnome.gtk.Dialog.ResponseCallback)
. -
builder
Deprecated.ADialog.Builder
object constructs aDialog
with the specified properties. Use the variousset...()
methods to set properties, and finish construction withDialog.Builder.build()
.
-
Window
instead