Expand description
Rust GTK 3 bindings
Rust bindings and wrappers for GTK 3, part of gtk3-rs, a multi-platform GUI toolkit. It is a part of gtk-rs.
GTK 3.18 is the lowest supported version for the underlying library.
Minimum supported Rust version
Currently, the minimum supported Rust version is 1.56.0
.
Building
gtk expects GTK, GLib and Cairo development files to be installed on your system. See the GTK installation page.
Using
We recommend using crates from crates.io, as demonstrated here.
If you want to track the bleeding edge, use the git dependency instead:
[dependencies]
gtk = { git = "https://github.com/gtk-rs/gtk3-rs.git" }
Avoid mixing versioned and git crates like this:
[dependencies]
gtk = "0.13"
gtk = { git = "https://github.com/gtk-rs/gtk3-rs.git" }
“Hello, World!” example program
//!
GTK needs to be initialized before use by calling init
. Creating an
Application
will call init
for you.
use gtk::prelude::*;
use gtk::{Application, ApplicationWindow};
fn main() {
let app = Application::builder()
.application_id("org.example.HelloWorld")
.build();
app.connect_activate(|app| {
// We create the main window.
let win = ApplicationWindow::builder()
.application(app)
.default_width(320)
.default_height(200)
.title("Hello, World!")
.build();
// Don't forget to make all widgets visible.
win.show_all();
});
app.run();
}
The main loop
In a typical GTK application you set up the UI, assign signal handlers and run the main event loop.
use gtk::prelude::*;
use gtk::{Application, ApplicationWindow, Button};
fn main() {
let application = Application::builder()
.application_id("com.example.FirstGtkApp")
.build();
application.connect_activate(|app| {
let window = ApplicationWindow::builder()
.application(app)
.title("First GTK Program")
.default_width(350)
.default_height(70)
.build();
let button = Button::with_label("Click me!");
button.connect_clicked(|_| {
eprintln!("Clicked!");
});
window.add(&button);
window.show_all();
});
application.run();
}
Threads
GTK is not thread-safe. Accordingly, none of this crate’s structs implement
Send
or Sync
.
The thread where init
was called is considered the main thread. OS X has
its own notion of the main thread and init
must be called on that thread.
After successful initialization, calling any gtk
or gdk
functions
(including init
) from other threads will panic
.
Any thread can schedule a closure to be run by the main loop on the main
thread via glib::idle_add
or glib::timeout_add
. While
working with GTK you might need the glib::idle_add_local
or glib::timeout_add_local
version without the
Send
bound. Those may only be called from the main thread.
Panics
The gtk
and gdk
crates have some run-time safety and contract checks.
-
Any constructor or free function will panic if called before
init
or on a non-main thread. -
Any
&str
or&Path
parameter with an interior null (\0
) character will cause a panic. -
Some functions will panic if supplied out-of-range integer parameters. All such cases will be documented individually but they are not yet.
-
A panic in a closure that handles signals or in any other closure passed to a
gtk
function will abort the process.
Features
Library versions
By default this crate provides only GTK 3.18 APIs. You can access additional
functionality by selecting one of the v3_20
, v3_24
, etc. features.
Cargo.toml
example:
[dependencies.gtk]
version = "0.x.y"
features = ["v3_20"]
Take care when choosing the version to target: some of your users might not have easy access to the latest ones. The higher the version, the fewer users will have it installed.
Documentation
Most of this documentation is generated from the C API.
Until all parts of the documentation have been reviewed there will be incongruities with the actual Rust API.
Generate the docs:
> cargo doc --features dox
(if the installed GTK+ version is lower than 3.16, adjust the feature name accordingly).
Contribute
Contributor you’re welcome!
See the general bindings documentation.
Most of the bindings (src/auto
) are generated by gir using this configuration file. After editing Gir.toml
the sources can be regenerated with
> make gir
When opening a PR please put the changes to the src/auto
directory in a separate commit.
You may also wish to run cargo clippy -- -D warnings
and check that you’re clean because
otherwise you may be surprised when CI fails.
See Also
But also:
License
gtk is available under the MIT License, please refer to it.
Re-exports
pub use ffi;
pub use atk;
pub use cairo;
pub use gdk;
pub use gdk_pixbuf;
pub use gio;
pub use glib;
pub use pango;
Modules
Builder pattern types.
Traits and essential types intended for blanket imports.
Structs
The GtkAboutDialog offers a simple way to display information about
a program like its logo, name, copyright, website and license. It is
also possible to give credits to the authors, documenters, translators
and artists who have worked on the program. An about dialog is typically
opened when the user selects the About
option from the Help
menu.
All parts of the dialog are optional.
Accelerator flags used with AccelGroupExtManual::connect_accel_group()
.
A AccelGroup
represents a group of keyboard accelerators,
typically attached to a toplevel Window
(with
GtkWindowExt::add_accel_group()
). Usually you won’t need to create a
AccelGroup
directly; instead, when using GtkUIManager
, GTK+
automatically sets up the accelerators for your menus in the ui
manager’s AccelGroup
.
The AccelLabel
widget is a subclass of Label
that also displays an
accelerator key on the right of the label text, e.g. “Ctrl+S”.
It is commonly used in menus to show the keyboard short-cuts for commands.
GtkActionBar is designed to present contextual actions. It is expected to be displayed below the content and expand horizontally to fill the area.
This interface provides a convenient way of associating widgets with
actions on a ApplicationWindow
or Application
.
The Adjustment
object represents a value which has an associated lower
and upper bound, together with step and page increments, and a page size.
It is used within several GTK+ widgets, including SpinButton
, Viewport
,
and Range
(which is a base class for Scrollbar
and Scale
).
Defines the position and size of a rectangle. It is identical to
cairo_rectangle_int_t
.
AppChooser
is an interface that can be implemented by widgets which
allow the user to choose an application (typically for the purpose of
opening a file). The main objects that implement this interface are
AppChooserWidget
, AppChooserDialog
and AppChooserButton
.
The AppChooserButton
is a widget that lets the user select
an application. It implements the AppChooser
interface.
AppChooserDialog
shows a AppChooserWidget
inside a Dialog
.
AppChooserWidget
is a widget for selecting applications.
It is the main building block for AppChooserDialog
. Most
applications only need to use the latter; but you can use
this widget as part of a larger widget if you have special needs.
Application
is a class that handles many important aspects
of a GTK+ application in a convenient fashion, without enforcing
a one-size-fits-all application model.
Types of user actions that may be blocked by GtkApplicationExt::inhibit()
.
ApplicationWindow
is a Window
subclass that offers some
extra functionality for better integration with Application
features. Notably, it can handle both the application menu as well
as the menubar. See GtkApplicationExt::set_app_menu()
and
GtkApplicationExt::set_menubar()
.
The AspectFrame
is useful when you want
pack a widget so that it can resize but always retains
the same aspect ratio. For instance, one might be
drawing a small preview of a larger image. AspectFrame
derives from Frame
, so it can draw a label and
a frame around the child. The frame will be
“shrink-wrapped” to the size of the child.
A Assistant
is a widget used to represent a generally complex
operation splitted in several steps, guiding the user through its
pages and controlling the page flow to collect the necessary data.
The Bin
widget is a container with just one child.
It is not very useful itself, but it is useful for deriving subclasses,
since it provides common code needed for handling a single child widget.
A struct that specifies a border around a rectangular area that can be of different width on each side.
The GtkBox widget arranges child widgets into a single row or column,
depending upon the value of its property::Orientable::orientation
property. Within
the other dimension, all children are allocated the same size. Of course,
the property::Widget::halign
and property::Widget::valign
properties can be used on
the children to influence their allocation.
GtkBuildable allows objects to extend and customize their deserialization from [GtkBuilder UI descriptions][BUILDER-UI]. The interface includes methods for setting names and properties of objects, parsing custom tags and constructing child objects.
A GtkBuilder is an auxiliary object that reads textual descriptions
of a user interface and instantiates the described objects. To create
a GtkBuilder from a user interface description, call
gtk_builder_new_from_file()
, from_resource()
or
from_string()
.
The Button
widget is generally used to trigger a callback function that is
called when the button is pressed. The various signals and how to use them
are outlined below.
Implements
These options can be used to influence the display and behaviour of a Calendar
.
The CellArea
is an abstract class for CellLayout
widgets
(also referred to as “layouting widgets”) to interface with an
arbitrary number of GtkCellRenderers
and interact with the user
for a given TreeModel
row.
The CellAreaBox
renders cell renderers into a row or a column
depending on its Orientation
.
The CellAreaContext
object is created by a given CellArea
implementation via its GtkCellAreaClass.create_context()
virtual
method and is used to store cell sizes and alignments for a series of
TreeModel
rows that are requested and rendered in the same context.
The CellEditable
interface must be implemented for widgets to be usable
to edit the contents of a TreeView
cell. It provides a way to specify how
temporary widgets should be configured for editing, get the new value, etc.
CellLayout
is an interface to be implemented by all objects which
want to provide a TreeViewColumn
like API for packing cells,
setting attributes and data funcs.
The CellRenderer
is a base class of a set of objects used for
rendering a cell to a cairo::Context
. These objects are used primarily by
the TreeView
widget, though they aren’t tied to them in any
specific way. It is worth noting that CellRenderer
is not a
Widget
and cannot be treated as such.
CellRendererAccel
displays a keyboard accelerator (i.e. a key
combination like Control + a
). If the cell renderer is editable,
the accelerator can be changed by simply typing the new combination.
CellRendererCombo
renders text in a cell like CellRendererText
from
which it is derived. But while CellRendererText
offers a simple entry to
edit the text, CellRendererCombo
offers a ComboBox
widget to edit the text. The values to display in the combo box are taken from
the tree model specified in the property::CellRendererCombo::model
property.
A CellRendererPixbuf
can be used to render an image in a cell. It allows
to render either a given gdk_pixbuf::Pixbuf
(set via the
property::CellRendererPixbuf::pixbuf
property) or a named icon (set via the
property::CellRendererPixbuf::icon-name
property).
CellRendererProgress
renders a numeric value as a progress par in a cell.
Additionally, it can display a text on top of the progress bar.
CellRendererSpin
renders text in a cell like CellRendererText
from
which it is derived. But while CellRendererText
offers a simple entry to
edit the text, CellRendererSpin
offers a SpinButton
widget. Of course,
that means that the text has to be parseable as a floating point number.
GtkCellRendererSpinner renders a spinning animation in a cell, very
similar to Spinner
. It can often be used as an alternative
to a CellRendererProgress
for displaying indefinite activity,
instead of actual progress.
Tells how a cell is to be rendered.
A CellRendererText
renders a given text in its cell, using the font, color and
style information provided by its properties. The text will be ellipsized if it is
too long and the property::CellRendererText::ellipsize
property allows it.
CellRendererToggle
renders a toggle button in a cell. The
button is drawn as a radio or a checkbutton, depending on the
property::CellRendererToggle::radio
property.
When activated, it emits the signal::CellRendererToggle::toggled
signal.
A CellView
displays a single row of a TreeModel
using a CellArea
and CellAreaContext
. A CellAreaContext
can be provided to the
CellView
at construction time in order to keep the cellview in context
of a group of cell views, this ensures that the renderers displayed will
be properly aligned with eachother (like the aligned cells in the menus
of ComboBox
).
A CheckButton
places a discrete ToggleButton
next to a widget,
(usually a Label
). See the section on ToggleButton
widgets for
more information about toggle/check buttons.
A CheckMenuItem
is a menu item that maintains the state of a boolean
value in addition to a MenuItem
usual role in activating application
code.
The Clipboard
object represents a clipboard of data shared
between different processes or between different widgets in
the same process. Each clipboard is identified by a name encoded as a
gdk::Atom
. (Conversion to and from strings can be done with
gdk::Atom::intern()
and gdk::Atom::name()
.) The default clipboard
corresponds to the “CLIPBOARD” atom; another commonly used clipboard
is the “PRIMARY” clipboard, which, in X, traditionally contains
the currently selected text.
The ColorButton
is a button which displays the currently selected
color and allows to open a color selection dialog to change the color.
It is suitable widget for selecting a color in a preference dialog.
ColorChooser
is an interface that is implemented by widgets
for choosing colors. Depending on the situation, colors may be
allowed to have alpha (translucency).
The ColorChooserDialog
widget is a dialog for choosing
a color. It implements the ColorChooser
interface.
The ColorChooserWidget
widget lets the user select a
color. By default, the chooser presents a predefined palette
of colors, plus a small number of settable custom colors.
It is also possible to select a different color with the
single-color editor. To enter the single-color editing mode,
use the context menu of any color of the palette, or use the
‘+’ button to add a new custom color.
A GtkComboBox is a widget that allows the user to choose from a list of valid choices. The GtkComboBox displays the selected choice. When activated, the GtkComboBox displays a popup which allows the user to make a new choice. The style in which the selected value is displayed, and the style of the popup is determined by the current theme. It may be similar to a Windows-style combo box.
A GtkComboBoxText is a simple variant of ComboBox
that hides
the model-view complexity for simple text-only use cases.
A GTK+ user interface is constructed by nesting widgets inside widgets.
Container widgets are the inner nodes in the resulting tree of widgets:
they contain other widgets. So, for example, you might have a Window
containing a Frame
containing a Label
. If you wanted an image instead
of a textual label inside the frame, you might replace the Label
widget
with a Image
widget.
GtkCssProvider is an object implementing the StyleProvider
interface.
It is able to parse [CSS-like][css-overview] input in order to style widgets.
Defines a part of a CSS document. Because sections are nested into
one another, you can use parent()
to get the
containing region.
The DestDefaults
enumeration specifies the various
types of action that will be taken on behalf
of the user for a drag destination site.
Dialog boxes are a convenient way to prompt the user for a small amount of input, e.g. to display a message, ask a question, or anything else that does not require extensive effort on the user’s part.
Flags used to influence dialog construction.
The DrawingArea
widget is used for creating custom user interface
elements. It’s essentially a blank widget; you can draw on it. After
creating a drawing area, the application may want to connect to:
The Editable
interface is an interface which should be implemented by
text editing widgets, such as Entry
and SpinButton
. It contains functions
for generically manipulating an editable widget, a large number of action
signals used for key bindings, and several signals that an application can
connect to to modify the behavior of a widget.
The Entry
widget is a single line text entry
widget. A fairly large set of key bindings are supported
by default. If the entered text is longer than the allocation
of the widget, the widget will scroll so that the cursor
position is visible.
The EntryBuffer
class contains the actual text displayed in a
Entry
widget.
EntryCompletion
is an auxiliary object to be used in conjunction with
Entry
to provide the completion functionality. It implements the
CellLayout
interface, to allow the user to add extra cells to the
TreeView
with completion matches.
EventController
is a base, low-level implementation for event
controllers. Those react to a series of GdkEvents
, and possibly trigger
actions as a consequence of those.
EventControllerKey
is an event controller meant for situations
where you need access to key events.
EventControllerMotion
is an event controller meant for situations
where you need to track the position of the pointer.
EventControllerScroll
is an event controller meant to handle
scroll events from mice and touchpads. It is capable of handling
both discrete and continuous scroll events, abstracting them both
on the signal::EventControllerScroll::scroll
signal (deltas in the
discrete case are multiples of 1).
Describes the behavior of a EventControllerScroll
.
FileChooser
is an interface that can be implemented by file
selection widgets. In GTK+, the main objects that implement this
interface are FileChooserWidget
, FileChooserDialog
, and
FileChooserButton
. You do not need to write an object that
implements the FileChooser
interface unless you are trying to
adapt an existing file selector to expose a standard programming
interface.
The FileChooserButton
is a widget that lets the user select a
file. It implements the FileChooser
interface. Visually, it is a
file name with a button to bring up a FileChooserDialog
.
The user can then use that dialog to change the file associated with
that button. This widget does not support setting the
property::FileChooser::select-multiple
property to true
.
FileChooserDialog
is a dialog box suitable for use with
“File/Open” or “File/Save as” 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
.
FileChooserNative
is an abstraction of a dialog box suitable
for use with “File/Open” or “File/Save as” commands. By default, this
just uses a FileChooserDialog
to implement the actual dialog.
However, on certain 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),
FileChooserNative
may call the proper APIs (portals) to let the user
choose a file and make it available to the application.
FileChooserWidget
is a widget for choosing files.
It exposes the FileChooser
interface, and you should
use the methods of this interface to interact with the
widget.
Implements
A GtkFileFilter can be used to restrict the files being shown in a
FileChooser
. Files can be filtered based on their name (with
add_pattern()
), on their mime type (with
add_mime_type()
), or by a custom filter function
(with gtk_file_filter_add_custom()
).
These flags indicate what parts of a GtkFileFilterInfo
struct
are filled or need to be filled.
A GtkFlowBox positions child widgets in sequence according to its orientation.
Implements
The FontButton
is a button which displays the currently selected
font an allows to open a font chooser dialog to change the font.
It is suitable widget for selecting a font in a preference dialog.
FontChooser
is an interface that can be implemented by widgets
displaying the list of fonts. In GTK+, the main objects
that implement this interface are FontChooserWidget
,
FontChooserDialog
and FontButton
. The GtkFontChooser interface
has been introducted in GTK+ 3.2.
The FontChooserDialog
widget is a dialog for selecting a font.
It implements the FontChooser
interface.
v3_24
This enumeration specifies the granularity of font selection that is desired in a font chooser.
The FontChooserWidget
widget lists the available fonts,
styles and sizes, allowing the user to select a font. It is
used in the FontChooserDialog
widget to provide a
dialog box for selecting fonts.
The frame widget is a bin that surrounds its child with a decorative
frame and an optional label. If present, the label is drawn in a gap
in the top side of the frame. The position of the label can be
controlled with FrameExt::set_label_align()
.
Gesture
is the base object for gesture recognition, although this
object is quite generalized to serve as a base for multi-touch gestures,
it is suitable to implement single-touch and pointer-based gestures (using
the special None
gdk::EventSequence
value for these).
GestureDrag
is a Gesture
implementation that recognizes drag
operations. The drag operation itself can be tracked throught the
signal::GestureDrag::drag-begin
, signal::GestureDrag::drag-update
and
signal::GestureDrag::drag-end
signals, or the relevant coordinates be
extracted through GestureDragExt::offset()
and
GestureDragExt::start_point()
.
GestureLongPress
is a Gesture
implementation able to recognize
long presses, triggering the signal::GestureLongPress::pressed
after the
timeout is exceeded.
GestureMultiPress
is a Gesture
implementation able to recognize
multiple clicks on a nearby zone, which can be listened for through the
signal::GestureMultiPress::pressed
signal. Whenever time or distance between
clicks exceed the GTK+ defaults, signal::GestureMultiPress::stopped
is emitted,
and the click counter is reset.
GesturePan
is a Gesture
implementation able to recognize
pan gestures, those are drags that are locked to happen along one
axis. The axis that a GesturePan
handles is defined at
construct time, and can be changed through
set_orientation()
.
GestureRotate
is a Gesture
implementation able to recognize
2-finger rotations, whenever the angle between both handled sequences
changes, the signal::GestureRotate::angle-changed
signal is emitted.
GestureSingle
is a subclass of Gesture
, optimized (although
not restricted) for dealing with mouse and single-touch gestures. Under
interaction, these gestures stick to the first interacting sequence, which
is accessible through GestureSingleExt::current_sequence()
while the
gesture is being interacted with.
GestureStylus
is a Gesture
implementation specific to stylus
input. The provided signals just provide the basic information
GestureSwipe
is a Gesture
implementation able to recognize
swipes, after a press/move/…/move/release sequence happens, the
signal::GestureSwipe::swipe
signal will be emitted, providing the velocity
and directionality of the sequence at the time it was lifted.
GestureZoom
is a Gesture
implementation able to recognize
pinch/zoom gestures, whenever the distance between both tracked
sequences changes, the signal::GestureZoom::scale-changed
signal is
emitted to report the scale factor.
GtkGrid is a container which arranges its child widgets in rows and columns, with arbitrary positions and horizontal/vertical spans.
GtkHeaderBar is similar to a horizontal Box
. It allows children to
be placed at the start or the end. In addition, it allows a title and
subtitle to be displayed. The title will be centered with respect to
the width of the box, even if the children at either side take up
different amounts of space. The height of the titlebar will be
set to provide sufficient space for the subtitle, even if none is
currently set. If a subtitle is not needed, the space reservation
can be turned off with HeaderBarExt::set_has_subtitle()
.
Implements
GtkIMContextSimple is a simple input method context supporting table-based input methods. It has a built-in table of compose sequences that is derived from the X11 Compose files.
Implements
Contains information found when looking up an icon in an icon theme.
Used to specify options for IconThemeExt::lookup_icon()
IconTheme
provides a facility for looking up icons by name
and size. The main reason for using a name rather than simply
providing a filename is to allow different icons to be used
depending on what “icon theme” is selected
by the user. The operation of icon themes on Linux and Unix
follows the Icon Theme Specification
There is a fallback icon theme, named hicolor
, where applications
should install their icons, but additional icon themes can be installed
as operating system vendors and users choose.
IconView
provides an alternative view on a TreeModel
.
It displays the model as a grid of icons with labels. Like
TreeView
, it allows to select one or multiple items
(depending on the selection mode, see IconViewExt::set_selection_mode()
).
In addition to selection with the arrow keys, IconView
supports
rubberband selection, which is controlled by dragging the pointer.
The Image
widget displays an image. Various kinds of object
can be displayed as an image; most typically, you would load a
gdk_pixbuf::Pixbuf
(“pixel buffer”) from a file, and then display that.
There’s a convenience function to do this, from_file()
,
used as follows:
Whether to propagate the signal to the default handler.
Describes hints that might be taken into account by input methods
or applications. Note that input methods may already tailor their
behaviour according to the InputPurpose
of the entry.
The Invisible
widget is used internally in GTK+, and is probably not
very useful for application developers.
Describes how a rendered element connects to adjacent elements.
Layout
is similar to DrawingArea
in that it’s a “blank slate” and
doesn’t do anything except paint a blank background by default. It’s
different in that it supports scrolling natively due to implementing
Scrollable
, and can contain child widgets since it’s a Container
.
The LevelBar
is a bar widget that can be used
as a level indicator. Typical use cases are displaying the strength
of a password, or showing the charge level of a battery.
A GtkLinkButton is a Button
with a hyperlink, similar to the one
used by web browsers, which triggers an action when clicked. It is useful
to show quick links to resources.
A GtkListBox is a vertical container that contains GtkListBoxRow children. These rows can be dynamically sorted and filtered, and headers can be added dynamically depending on the row content. It also allows keyboard and mouse navigation and selection like a typical list.
Implements
The ListStore
object is a list model for use with a TreeView
widget. It implements the TreeModel
interface, and consequentialy,
can use all of the methods available there. It also implements the
TreeSortable
interface so it can be sorted by the view.
Finally, it also implements the tree
[drag and drop][gtk3-GtkTreeView-drag-and-drop]
interfaces.
GtkLockButton is a widget that can be used in control panels or
preference dialogs to allow users to obtain and revoke authorizations
needed to operate the controls. The required authorization is represented
by a gio::Permission
object. Concrete implementations of gio::Permission
may use
PolicyKit or some other authorization framework. To obtain a PolicyKit-based
gio::Permission
, use polkit_permission_new()
.
The MenuButton
widget is used to display a popup when clicked on.
This popup can be provided either as a Menu
, a Popover
or an
abstract gio::MenuModel
.
The MenuItem
widget and the derived widgets are the only valid
children for menus. Their function is to correctly handle highlighting,
alignment, events and submenus.
A MenuToolButton
is a ToolItem
that contains a button and
a small additional button with an arrow. When clicked, the arrow
button pops up a dropdown menu.
MessageDialog
presents a dialog with some message text. It’s simply a
convenience widget; you could construct the equivalent of MessageDialog
from Dialog
without too much effort, but MessageDialog
saves typing.
The Misc
widget is an abstract widget which is not useful itself, but
is used to derive subclasses which have alignment and padding attributes.
GtkModelButton is a button class that can use a GAction
as its model.
In contrast to ToggleButton
or RadioButton
, which can also
be backed by a GAction
via the property::Actionable::action-name
property,
GtkModelButton will adapt its appearance according to the kind of
action it is backed by, and appear either as a plain, check or
radio button.
This should not be accessed directly. Use the accessor functions below.
GtkOffscreenWindow is strictly intended to be used for obtaining
snapshots of widgets that are not part of a normal widget hierarchy.
Since OffscreenWindow
is a toplevel widget you cannot obtain
snapshots of a full window with it since you cannot pack a toplevel
widget in another toplevel.
The Orientable
interface is implemented by all widgets that can be
oriented horizontally or vertically. Historically, such widgets have been
realized as subclasses of a common base class (e.g Box
/GtkHBox
/GtkVBox
or Scale
/GtkHScale
/GtkVScale
). Orientable
is more flexible in that
it allows the orientation to be changed at runtime, allowing the widgets
to “flip”.
GtkOverlay is a container which contains a single main child, on top
of which it can place “overlay” widgets. The position of each overlay
widget is determined by its property::Widget::halign
and property::Widget::valign
properties. E.g. a widget with both alignments set to Align::Start
will be placed at the top left corner of the GtkOverlay container,
whereas an overlay with halign set to Align::Center
and valign set
to Align::End
will be placed a the bottom edge of the GtkOverlay,
horizontally centered. The position can be adjusted by setting the margin
properties of the child to non-zero values.
Struct defining a pad action entry.
PadController
is an event controller for the pads found in drawing
tablets (The collection of buttons and tactile sensors often found around
the stylus-sensitive area).
A GtkPageSetup object stores the page size, orientation and margins.
The idea is that you can get one of these from the page setup dialog
and then pass it to the PrintOperation
when printing.
The benefit of splitting this out of the PrintSettings
is that
these affect the actual layout of the page, and thus need to be set
long before user prints.
Paned
has two panes, arranged either
horizontally or vertically. The division between
the two panes is adjustable by the user by dragging
a handle.
GtkPaperSize handles paper sizes. It uses the standard called PWG 5101.1-2002 PWG: Standard for Media Standardized Names to name the paper sizes (and to get the data for the page sizes). In addition to standard paper sizes, GtkPaperSize allows to construct custom paper sizes with arbitrary dimensions.
These flags serve two purposes. First, the application can call PlacesSidebar::set_open_flags()
using these flags as a bitmask. This tells the sidebar that the application is able to open
folders selected from the sidebar in various ways, for example, in new tabs or in new windows in
addition to the normal mode.
PlacesSidebar
is a widget that displays a list of frequently-used places in the
file system: the user’s home directory, the user’s bookmarks, and volumes and drives.
This widget is used as a sidebar in FileChooser
and may be used by file managers
and similar programs.
Together with Socket
, Plug
provides the ability to embed
widgets from one process into another process in a fashion that is
transparent to the user. One process creates a Socket
widget
and passes the ID of that widget’s window to the other process,
which then creates a Plug
with that window ID. Any widgets
contained in the Plug
then will appear inside the first
application’s window.
Implements
GtkPopover is a bubble-like context window, primarily meant to
provide context-dependent information or options. Popovers are
attached to a widget, passed at construction time on new()
,
or updated afterwards through PopoverExt::set_relative_to()
, by
default they will point to the whole widget area, although this
behavior can be changed through PopoverExt::set_pointing_to()
.
GtkPopoverMenu is a subclass of Popover
that treats its
children like menus and allows switching between them. It is
meant to be used primarily together with ModelButton
, but
any widget can be used, such as SpinButton
or Scale
.
In this respect, GtkPopoverMenu is more flexible than popovers
that are created from a gio::MenuModel
with Popover::from_model()
.
A GtkPrintContext encapsulates context information that is required when
drawing pages for printing, such as the cairo context and important
parameters like page size and resolution. It also lets you easily
create pango::Layout
and pango::Context
objects that match the font metrics
of the cairo surface.
GtkPrintOperation is the high-level, portable printing API.
It looks a bit different than other GTK+ dialogs such as the
FileChooser
, since some platforms don’t expose enough
infrastructure to implement a good print dialog. On such
platforms, GtkPrintOperation uses the native print dialog.
On platforms which do not provide a native print dialog, GTK+
uses its own, see GtkPrintUnixDialog
.
Implements
A GtkPrintSettings object represents the settings of a print dialog in a system-independent way. The main use for this object is that once you’ve printed you can get a settings object that represents the settings the user chose, and the next time you print you can pass that object in so that the user doesn’t have to re-set all his settings.
The ProgressBar
is typically used to display the progress of a long
running operation. It provides a visual clue that processing is underway.
The GtkProgressBar can be used in two different modes: percentage mode
and activity mode.
A single radio button performs the same basic function as a CheckButton
,
as its position in the object hierarchy reflects. It is only when multiple
radio buttons are grouped together that they become a different user
interface component in their own right.
A radio menu item is a check menu item that belongs to a group. At each instant exactly one of the radio menu items from a group is selected.
A RadioToolButton
is a ToolItem
that contains a radio button,
that is, a button that is part of a group of toggle buttons where only
one button can be active at a time.
RecentChooser
is an interface that can be implemented by widgets
displaying the list of recently used files. In GTK+, the main objects
that implement this interface are RecentChooserWidget
,
RecentChooserDialog
and RecentChooserMenu
.
RecentChooserDialog
is a dialog box suitable for displaying the recently
used documents. This widgets works by putting a RecentChooserWidget
inside
a Dialog
. It exposes the GtkRecentChooserIface
interface, so you can use
all the RecentChooser
functions on the recent chooser dialog as well as
those for Dialog
.
RecentChooserMenu
is a widget suitable for displaying recently used files
inside a menu. It can be used to set a sub-menu of a MenuItem
using
GtkMenuItemExt::set_submenu()
, or as the menu of a MenuToolButton
.
RecentChooserWidget
is a widget suitable for selecting recently used
files. It is the main building block of a RecentChooserDialog
. Most
applications will only need to use the latter; you can use
RecentChooserWidget
as part of a larger window if you have special needs.
Meta-data to be passed to RecentManagerExt::add_full()
when
registering a recently used resource.
A RecentFilter
can be used to restrict the files being shown
in a RecentChooser
. Files can be filtered based on their name
(with add_pattern()
), on their mime type (with
FileFilter::add_mime_type()
), on the application that has
registered them (with add_application()
), or by
a custom filter function (with gtk_recent_filter_add_custom()
).
These flags indicate what parts of a GtkRecentFilterInfo
struct
are filled or need to be filled.
RecentInfo
-struct contains private data only, and should
be accessed using the provided API.
RecentManager
provides a facility for adding, removing and
looking up recently used files. Each recently used file is
identified by its URI, and has meta-data associated to it, like
the names and command lines of the applications that have
registered it, the number of time each application has registered
the same file, the mime type of the file and whether the file
should be displayed only by the applications that have
registered it.
Defines the position and size of a rectangle. It is identical to
cairo_rectangle_int_t
.
Describes a region within a widget.
A Requisition
-struct represents the desired size of a widget. See
[GtkWidget’s geometry management section][geometry-management] for
more information.
The GtkRevealer widget is a container which animates the transition of its child from invisible to visible.
A GtkScale is a slider control used to select a numeric value.
To use it, you’ll probably want to investigate the methods on
its base class, Range
, in addition to the methods for GtkScale itself.
To set the value of a scale, you would normally use RangeExt::set_value()
.
To detect changes to the value, you would normally use the
signal::Range::value-changed
signal.
ScaleButton
provides a button which pops up a scale widget.
This kind of widget is commonly used for volume controls in multimedia
applications, and GTK+ provides a VolumeButton
subclass that
is tailored for this use case.
Scrollable
is an interface that is implemented by widgets with native
scrolling ability.
The Scrollbar
widget is a horizontal or vertical scrollbar,
depending on the value of the property::Orientable::orientation
property.
GtkScrolledWindow is a container that accepts a single child widget, makes that child scrollable using either internally added scrollbars or externally associated adjustments, and optionally draws a frame around the child.
SearchBar
is a container made to have a search entry (possibly
with additional connex widgets, such as drop-down menus, or buttons)
built-in. The search bar would appear when a search is started through
typing on the keyboard, or the application’s search mode is toggled on.
SearchEntry
is a subclass of Entry
that has been
tailored for use as a search entry.
GtkSeparator is a horizontal or vertical separator widget, depending on the
value of the property::Orientable::orientation
property, used to group the widgets
within a window. It displays a line with a shadow to make it appear sunken
into the interface.
The SeparatorMenuItem
is a separator used to group
items within a menu. It displays a horizontal line with a shadow to
make it appear sunken into the interface.
A SeparatorToolItem
is a ToolItem
that separates groups of other
GtkToolItems
. Depending on the theme, a SeparatorToolItem
will
often look like a vertical line on horizontally docked toolbars.
GtkSettings provide a mechanism to share global settings between applications.
ShortcutLabel
is a widget that represents a single keyboard shortcut or gesture
in the user interface.
A GtkShortcutsGroup represents a group of related keyboard shortcuts or gestures. The group has a title. It may optionally be associated with a view of the application, which can be used to show only relevant shortcuts depending on the application context.
A GtkShortcutsSection collects all the keyboard shortcuts and gestures
for a major application mode. If your application needs multiple sections,
you should give each section a unique property::ShortcutsSection::section-name
and
a property::ShortcutsSection::title
that can be shown in the section selector of
the GtkShortcutsWindow.
A GtkShortcutsShortcut represents a single keyboard shortcut or gesture
with a short text. This widget is only meant to be used with ShortcutsWindow
.
A GtkShortcutsWindow shows brief information about the keyboard shortcuts and gestures of an application. The shortcuts can be grouped, and you can have multiple sections in this window, corresponding to the major modes of your application.
Together with Plug
, Socket
provides the ability to embed
widgets from one process into another process in a fashion that
is transparent to the user. One process creates a Socket
widget
and passes that widget’s window ID to the other process, which then
creates a Plug
with that window ID. Any widgets contained in the
Plug
then will appear inside the first application’s window.
Implements
A SpinButton
is an ideal way to allow the user to set the value of
some attribute. Rather than having to directly type a number into a
Entry
, GtkSpinButton allows the user to click on one of two arrows
to increment or decrement the displayed value. A value can still be
typed in, with the bonus that it can be checked to ensure it is in a
given range.
A GtkSpinner widget displays an icon-size spinning animation.
It is often used as an alternative to a ProgressBar
for
displaying indefinite activity, instead of actual progress.
The GtkStack widget is a container which only shows
one of its children at a time. In contrast to GtkNotebook,
GtkStack does not provide a means for users to change the
visible child. Instead, the StackSwitcher
widget can be
used with GtkStack to provide this functionality.
A GtkStackSidebar enables you to quickly and easily provide a consistent “sidebar” object for your user interface.
The GtkStackSwitcher widget acts as a controller for a
Stack
; it shows a row of buttons to switch between
the various pages of the associated stack widget.
Describes a widget state. Widget states are used to match the widget against CSS pseudo-classes. Note that GTK extends the regular CSS classes and sometimes uses different names.
A Statusbar
is usually placed along the bottom of an application’s
main Window
. It may provide a regular commentary of the application’s
status (as is usually the case in a web browser, for example), or may be
used to simply output a message when the status changes, (when an upload
is complete in an FTP client, for example).
StyleContext
is an object that stores styling information affecting
a widget defined by WidgetPath
.
Flags that modify the behavior of StyleContextExt::to_string()
.
New values may be added to this enumeration.
GtkStyleProperties provides the storage for style information
that is used by StyleContext
and other StyleProvider
implementations.
GtkStyleProvider is an interface used to provide style information to a StyleContext
.
See StyleContextExt::add_provider()
and StyleContext::add_provider_for_screen()
.
Switch
is a widget that has two states: on or off. The user can control
which state should be active by clicking the empty area, or by dragging the
handle.
A TargetEntry
represents a single type of
data than can be supplied for by a widget for a selection
or for supplied or received during drag-and-drop.
The TargetFlags
enumeration is used to specify
constraints on a TargetEntry
.
A TargetList
-struct is a reference counted list
of GtkTargetPair
and should be treated as
opaque.
Using TextAttributes
directly should rarely be necessary.
It’s primarily useful with TextIter::is_attributes()
.
As with most GTK+ structs, the fields in this struct should only
be read, never modified directly.
You may wish to begin by reading the [text widget conceptual overview][TextWidget] which gives an overview of all the objects and data types related to the text widget and how they work together.
A TextChildAnchor
is a spot in the buffer where child widgets can
be “anchored” (inserted inline, as if they were characters). The anchor
can have multiple widgets anchored, to allow for multiple views.
You may wish to begin by reading the [text widget conceptual overview][TextWidget] which gives an overview of all the objects and data types related to the text widget and how they work together.
You may wish to begin by reading the [text widget conceptual overview][TextWidget] which gives an overview of all the objects and data types related to the text widget and how they work together.
Flags affecting how a search is done.
You may wish to begin by reading the [text widget conceptual overview][TextWidget] which gives an overview of all the objects and data types related to the text widget and how they work together.
You may wish to begin by reading the [text widget conceptual overview][TextWidget] which gives an overview of all the objects and data types related to the text widget and how they work together.
You may wish to begin by reading the [text widget conceptual overview][TextWidget] which gives an overview of all the objects and data types related to the text widget and how they work together.
A ToggleButton
is a Button
which will remain “pressed-in” when
clicked. Clicking again will cause the toggle button to return to its
normal state.
A ToggleToolButton
is a ToolItem
that contains a toggle
button.
GtkToolButtons
are GtkToolItems
containing buttons.
GtkToolItems
are widgets that can appear on a toolbar. To
create a toolbar item that contain something else than a button, use
new()
. Use ContainerExt::add()
to add a child
widget to the tool item.
A ToolItemGroup
is used together with ToolPalette
to add
GtkToolItems
to a palette like container with different
categories and drag and drop support.
A ToolPalette
allows you to add GtkToolItems
to a palette-like
container with different categories and drag and drop support.
Flags used to specify the supported drag targets.
Basic tooltips can be realized simply by using WidgetExt::set_tooltip_text()
or WidgetExt::set_tooltip_markup()
without any explicit tooltip object.
Implements
Implements
The TreeModel
interface defines a generic tree interface for
use by the TreeView
widget. It is an abstract interface, and
is designed to be usable with any appropriate data structure. The
programmer just has to implement this interface on their own data
type for it to be viewable by a TreeView
widget.
A TreeModelFilter
is a tree model which wraps another tree model,
and can do the following things:
These flags indicate various properties of a TreeModel
.
The TreeModelSort
is a model which implements the TreeSortable
interface. It does not hold any data itself, but rather is created with
a child model and proxies its data. It has identical column types to
this child model, and the changes in the child are propagated. The
primary purpose of this model is to provide a way to sort a different
model without modifying it. Note that the sort function used by
TreeModelSort
is not guaranteed to be stable.
The TreeSelection
object is a helper object to manage the selection
for a TreeView
widget. The TreeSelection
object is
automatically created when a new TreeView
widget is created, and
cannot exist independently of this widget. The primary reason the
TreeSelection
objects exists is for cleanliness of code and API.
That is, there is no conceptual reason all these functions could not be
methods on the TreeView
widget instead of a separate function.
TreeSortable
is an interface to be implemented by tree models which
support sorting. The TreeView
uses the methods provided by this interface
to sort the model.
The TreeStore
object is a list model for use with a TreeView
widget. It implements the TreeModel
interface, and consequentially,
can use all of the methods available there. It also implements the
TreeSortable
interface so it can be sorted by the view. Finally,
it also implements the tree
[drag and drop][gtk3-GtkTreeView-drag-and-drop]
interfaces.
The GtkTreeViewColumn object represents a visible column in a TreeView
widget.
It allows to set properties of the column header, and functions as a holding pen for
the cell renderers which determine how the data in the column is displayed.
VolumeButton
is a subclass of ScaleButton
that has
been tailored for use as a volume control widget with suitable
icons, tooltips and accessible labels.
GtkWidget is the base class all widgets in GTK+ derive from. It manages the widget lifecycle, states and style.
GtkWidgetPath is a boxed type that represents a widget hierarchy from
the topmost widget, typically a toplevel, to any child. This widget
path abstraction is used in StyleContext
on behalf of the real
widget in order to query style information.
A GtkWindow is a toplevel window which can contain other widgets. Windows normally have decorations that are under the control of the windowing system and allow the user to manipulate the window (resize it, move it, close it,…).
A WindowGroup
restricts the effect of grabs to windows
in the same group, thereby making window groups almost behave
like separate applications.
Enums
Controls how a widget deals with extra space in a single (x or y) dimension.
Used to indicate the direction in which an arrow should point.
An enum for determining the page role inside the Assistant
. It’s
used to handle buttons sensitivity and visibility.
Whenever a container has some form of natural row it may align
children in that row along a common typographical baseline. If
the amount of verical space in the row is taller than the total
requested height of the baseline-aligned children then it can use a
BaselinePosition
to select where to put the baseline inside the
extra availible space.
Describes how the border of a UI element should be rendered.
Error codes that identify various errors that can occur while using
Builder
.
Used to dictate the style that a ButtonBox
uses to layout the buttons it
contains.
The role specifies the desired appearance of a ModelButton
.
Prebuilt sets of buttons for the dialog. If
none of these choices are appropriate, simply use None
then call DialogExtManual::add_buttons()
.
Determines if the edited accelerators are GTK+ accelerators. If they are, consumed modifiers are suppressed, only accelerators accepted by GTK+ are allowed, and the accelerators are rendered in the same way as they are in menus.
Identifies how the user can interact with a particular cell.
Specifies which corner a child widget should be placed in when packed into
a ScrolledWindow
. This is effectively the opposite of where the scroll
bars are placed.
Error codes for GTK_CSS_PROVIDER_ERROR
.
The different types of sections indicate parts of a CSS document as parsed by GTK’s CSS parser. They are oriented towards the CSS Grammar, but may contain extensions.
See also: signal::Entry::delete-from-cursor
.
Focus movement types.
Gives an indication why a drag operation failed.
The value can by obtained by connecting to the
signal::Widget::drag-failed
signal.
Specifies the side of the entry at which an icon is placed.
Describes the state of a gdk::EventSequence
in a Gesture
.
Describes whether a FileChooser
is being used to open existing files
or to save to a possibly new file.
Used as a return value of handlers for the
signal::FileChooser::confirm-overwrite
signal of a FileChooser
. This
value determines whether the file chooser will present the stock
confirmation dialog, accept the user’s choice of a filename, or
let the user choose another filename.
These identify the various errors that can occur while calling
FileChooser
functions.
Built-in stock icon sizes.
Error codes for GtkIconTheme operations.
An enum for determining where a dropped item goes.
Describes the image data representation used by a Image
. If you
want to get the image from the widget, you can only get the
currently-stored representation. e.g. if the
ImageExt::storage_type()
returns Pixbuf
, then you can
call ImageExt::pixbuf()
but not gtk_image_get_stock()
. For empty
images, you can request any storage type (call any of the “get”
functions), but they will all return None
values.
Describes primary purpose of the input widget. This information is useful for on-screen keyboards and similar input methods to decide which keys should be presented to the user.
Used for justifying the text inside a Label
widget. (See also
GtkAlignment
).
Describes how LevelBar
contents should be rendered.
Note that this enumeration could be extended with additional modes
in the future.
The type of license for an application.
An enumeration representing directional movements within a menu.
The type of message being displayed in the dialog.
Used to determine the layout of pages on a sheet when printing multiple pages per sheet.
Represents the orientation of widgets and other objects which can be switched
between horizontal and vertical orientation on the fly, like Toolbar
or
GesturePan
.
Determines how widgets should be packed inside menubars and menuitems contained in menubars.
v3_22
The type of a pad action.
See also gtk_print_job_set_page_set()
.
Describes the panning direction of a GesturePan
Determines how the size should be computed to achieve the one of the visibility mode for the scrollbars.
v3_20
Describes constraints to positioning of popovers. More values may be added to this enumeration in the future.
See also PrintSettings::set_duplex()
.
Error codes that identify various errors that can occur while using the GTK+ printing support.
The action
parameter to PrintOperationExt::run()
determines what action the print operation should perform.
A value of this type is returned by PrintOperationExt::run()
.
See also gtk_print_job_set_pages()
See also PrintSettings::set_quality()
.
The status gives a rough indication of the completion of a running print operation.
Describes the stage at which events are fed into a EventController
.
These identify the various errors that can occur while calling
RecentChooser
functions.
Error codes for RecentManager
operations
Used to specify the sorting method to be applyed to the recently used resource list.
Indicated the relief to be drawn around a Button
.
Predefined values for use as response ids in DialogExt::add_button()
.
All predefined values are negative; GTK+ leaves values of 0 or greater for
application-defined response ids.
These enumeration values describe the possible transitions
when the child of a Revealer
widget is shown or hidden.
Scrolling types.
Defines the policy to be used in a scrollable widget when updating the scrolled window adjustments in a given orientation.
Used to control what selections users are allowed to make.
Determines how GTK+ handles the sensitivity of stepper arrows at the end of range widgets.
Used to change the appearance of an outline typically provided by a Frame
.
v3_20
GtkShortcutType specifies the kind of shortcut that is being described. More values may be added to this enumeration over time.
The mode of the size group determines the directions in which the size group affects the requested sizes of its component widgets.
Specifies a preference for height-for-width or width-for-height geometry management.
Determines the direction of a sort.
The spin button update policy determines whether the spin button displays
values even if they are outside the bounds of its adjustment.
See SpinButtonExt::set_update_policy()
.
The values of the GtkSpinType enumeration are used to specify the
change to make in SpinButtonExt::spin()
.
These enumeration values describe the possible transitions
between pages in a Stack
widget.
Reading directions for text.
Granularity types that extend the text selection. Use the
signal::TextView::extend-selection
signal to customize the selection.
Used to reference the layers of TextView
for the purpose of customized
drawing with the ::draw_layer vfunc.
Used to reference the parts of TextView
.
Used to customize the appearance of a Toolbar
. Note that
setting the toolbar style overrides the user’s preferences
for the default toolbar style. Note that if the button has only
a label set and GTK_TOOLBAR_ICONS is used, the label will be
visible, and vice versa.
The sizing method the column uses to determine its width. Please note
that Autosize
are inefficient for large views, and
can make columns appear choppy.
An enum for determining where a dropped row goes.
Used to indicate which grid lines to draw in a tree view.
See also PrintSettings::set_paper_width()
.
Kinds of widget-specific help. Used by the ::show-help signal.
Window placement can be influenced using this enumeration. Note that
using CenterAlways
is almost always a bad idea.
It won’t necessarily work well with all window managers or on all windowing systems.
A Window
can be one of these types. Most things you’d consider a
“window” should have type Toplevel
; windows with this type
are managed by the window manager and have a frame by default (call
GtkWindowExt::set_decorated()
to toggle the frame). Windows with type
Popup
are ignored by the window manager; window manager
keybindings won’t work on them, the window manager won’t decorate the
window with a frame, many GTK+ features that rely on the window
manager will not work (e.g. resize grips and
maximization/minimization). Popup
is used to implement
widgets such as Menu
or tooltips that you normally don’t think of
as windows per se. Nearly all windows should be Toplevel
.
In particular, do not use Popup
just to turn off
the window borders; use GtkWindowExt::set_decorated()
for that.
Describes a type of line wrapping.
Constants
A priority that can be used when adding a StyleProvider
for application-specific style information.
The priority used for default style information that is used in the absence of themes.
The priority used for style information provided
via Settings
.
The priority used for style information provided by themes.
The priority used for the style information from
XDG_CONFIG_HOME/gtk-3.0/gtk.css
.
Statics
The name used for the stock full offset included by LevelBar
.
The name used for the stock high offset included by LevelBar
.
The name used for the stock low offset included by LevelBar
.
Name for the A3 paper size.
Name for the A4 paper size.
Name for the A5 paper size.
Name for the B5 paper size.
Name for the Executive paper size.
Name for the Legal paper size.
Name for the Letter paper size.
The key used by the “Print to file” printer to store the file name of the output without the path to the directory and the file extension.
The key used by the “Print to file” printer to store the directory to which the output should be written.
The key used by the “Print to file” printer to store the format of the output. The supported values are “PS” and “PDF”.
The key used by the “Print to file” printer to store the URI to which the output should be written. GTK+ itself supports only “file://” URIs.
A CSS class to match an accelerator.
A CSS class used when rendering an arrow element.
A CSS class to match the window background.
A CSS class to indicate an area at the bottom of a widget.
A CSS class to match buttons.
A CSS class to match calendars.
A CSS class to match content rendered in cell views.
A CSS class to match check boxes.
A CSS class to match combobox entries.
A CSS class to match context menus.
A CSS class that gets added to windows which have client-side decorations.
A CSS class used when rendering a drag handle for text selection.
A CSS class to match the default widget.
A CSS class used when an action (usually a button) is one that is expected to remove or destroy something visible to the user.
A CSS class to match dimmed labels.
A CSS class for a drag-and-drop indicator.
A CSS class defining a dock area.
A CSS class to match text entries.
A CSS class for an area displaying an error message, such as those in infobars.
A CSS class defining an expander, such as those in treeviews.
A CSS class that is added when widgets that usually have a frame or border (like buttons or entries) should appear without it.
A CSS class defining a frame delimiting content, such as
Frame
or the scrolled window frame around the
scrollable area.
A CSS class defining a resize grip.
A CSS class to match a header element.
A CSS class defining a highlighted area, such as headings in assistants and calendars.
A CSS class for horizontally layered widgets.
A CSS class defining an image, such as the icon in an entry.
A CSS class for an area displaying an informational message, such as those in infobars.
A CSS class to match inline toolbars.
A CSS class used when rendering a drag handle for the insertion cursor position.
A CSS class to match labels.
A CSS class to indicate an area at the left of a widget.
A CSS class used when rendering a level indicator, such as a battery charge level, or a password strength.
A CSS class to match a linked area, such as a box containing buttons belonging to the same control.
A CSS class to match lists.
A CSS class to match list rows.
A CSS class defining marks in a widget, such as in scales.
A CSS class to match menus.
A CSS class to menubars.
A CSS class to match menu items.
A CSS class that is added to message dialogs.
A CSS class that is added to text view that should use a monospace font.
A CSS class used when an element needs the user attention, for instance a button in a stack switcher corresponding to a hidden page that changed state.
A CSS class defining a notebook.
A CSS class used when rendering an OSD (On Screen Display) element, on top of another container.
A CSS class that is added on the visual hints that happen when scrolling is attempted past the limits of a scrollable area.
A CSS class for a pane separator, such as those in Paned
.
A CSS class that is added to areas that should look like paper.
A CSS class that matches popovers.
A CSS class that is added to the toplevel windows used for menus.
A CSS class to match primary toolbars.
A CSS class to use when rendering activity as a progressbar.
A CSS class to use when rendering a pulse in an indeterminate progress bar.
A CSS class for an area displaying a question to the user, such as those in infobars.
A CSS class to match radio buttons.
A CSS class to match a raised control, such as a raised button on a toolbar.
A CSS class used to indicate a read-only state.
A CSS class to indicate an area at the right of a widget.
A CSS class to match the rubberband selection rectangle.
A CSS class to match scale widgets.
A CSS class to match scrollbars.
A CSS class to match the junction area between an horizontal and vertical scrollbar, when they’re both shown.
A CSS class for a separator.
A CSS class defining a sidebar, such as the left side in a file chooser.
A CSS class to match sliders.
A CSS class defining an spinbutton.
A CSS class to use when rendering activity as a “spinner”.
A CSS class to match statusbars.
A CSS class used for the subtitle label in a titlebar in a toplevel window.
A CSS class used when an action (usually a button) is the primary suggested action in a specific context.
A CSS class used for the title label in a titlebar in a toplevel window.
A CSS class used when rendering a titlebar in a toplevel window.
A CSS class to match toolbars.
A CSS class to match tooltip windows.
A CSS class to indicate an area at the top of a widget.
A CSS class for touch selection popups on entries and text views.
A CSS class to match troughs, as in scrollbars and progressbars.
A CSS class that is added on the visual hints that happen where content is ‘scrolled off’ and can be made visible by scrolling.
A CSS class for vertically layered widgets.
A CSS class defining a view, such as iconviews or treeviews.
A CSS class for an area displaying a warning message, such as those in infobars.
A CSS class to indicate that a UI element should be ‘wide’.
Used by Paned
.
A property holding the background color of rendered elements as a gdk::RGBA
.
A property holding the element’s background as a cairo_pattern_t
.
A property holding the element’s border color as a gdk::RGBA
.
A property holding the rendered element’s border radius in pixels as a gint
.
A property holding the element’s border style as a BorderStyle
.
A property holding the rendered element’s border width in pixels as
a Border
. The border is the intermediary spacing property of the
padding/border/margin series.
A property holding the foreground color of rendered elements as a gdk::RGBA
.
A property holding the font properties used when rendering text
as a pango::FontDescription
.
A property holding the rendered element’s padding as a Border
. The
padding is defined as the spacing between the inner part of the element border
and its child. It’s the innermost spacing property of the padding/border/margin
series.
A widget region name to define a treeview column.
A widget region name to define a treeview column header.
A widget region name to define a treeview row.
A widget region name to define a notebook tab.
Traits
Functions
Finds the first accelerator in any AccelGroup
attached
to object
that matches accel_key
and accel_mods
, and
activates that accelerator.
Gets a list of all accel groups which are attached to object
.
Gets the modifier mask.
Converts an accelerator keyval and modifier mask into a string which can be used to represent the accelerator to the user.
Converts an accelerator keyval and modifier mask
into a (possibly translated) string that can be displayed to
a user, similarly to accelerator_get_label()
, but handling
keycodes.
Converts an accelerator keyval and modifier mask into a string
parseable by accelerator_parse()
. For example, if you pass in
GDK_KEY_q
and gdk::ModifierType::CONTROL_MASK
, this function returns “<Control>
q”.
Converts an accelerator keyval and modifier mask
into a string parseable by accelerator_parse_with_keycode()
,
similarly to accelerator_name()
but handling keycodes.
This is only useful for system-level components, applications
should use accelerator_parse()
instead.
Parses a string representing an accelerator. The format looks like
“<Control>
a” or “<Shift>``<Alt>
F1” or “<Release>
z” (the last one is
for key release).
Parses a string representing an accelerator, similarly to
accelerator_parse()
but handles keycodes as well. This is only
useful for system-level components, applications should use
accelerator_parse()
instead.
Sets the modifiers that will be considered significant for keyboard
accelerators. The default mod mask depends on the GDK backend in use,
but will typically include gdk::ModifierType::CONTROL_MASK
| gdk::ModifierType::SHIFT_MASK
|
gdk::ModifierType::MOD1_MASK
| gdk::ModifierType::SUPER_MASK
| gdk::ModifierType::HYPER_MASK
| gdk::ModifierType::META_MASK
.
In other words, Control, Shift, Alt, Super, Hyper and Meta. Other
modifiers will by default be ignored by AccelGroup
.
Determines whether a given keyval and modifier mask constitute
a valid keyboard accelerator. For example, the GDK_KEY_a
keyval
plus gdk::ModifierType::CONTROL_MASK
is valid - this is a “Ctrl+a” accelerator.
But, you can’t, for instance, use the GDK_KEY_Control_L
keyval
as an accelerator.
Returns the binary age as passed to libtool
when building the GTK+ library the process is running against.
If libtool
means nothing to you, don’t
worry about it.
Find a key binding matching keyval
and modifiers
and activate the
binding on object
.
Looks up key bindings for object
to find one matching
event
, and if one was found, activate it.
This function is supposed to be called in signal::Widget::draw
implementations for widgets that support multiple windows.
cr
must be untransformed from invoking of the draw function.
This function will return true
if the contents of the given
window
are supposed to be drawn and false
otherwise. Note
that when the drawing was not initiated by the windowing
system this function will return true
for all windows, so
you need to draw the bottommost window first. Also, do not
use “else if” statements to check which window should be drawn.
Transforms the given cairo context cr
that from widget
-relative
coordinates to window
-relative coordinates.
If the widget
’s window is not an ancestor of window
, no
modification will be applied.
Checks that the GTK+ library in use is compatible with the
given version. Generally you would pass in the constants
GTK_MAJOR_VERSION
, GTK_MINOR_VERSION
, GTK_MICRO_VERSION
as the three arguments to this function; that produces
a check that the library in use is compatible with
the version of GTK+ the application or module was compiled
against.
Obtains a copy of the event currently being processed by GTK+.
If there is a current event and it has a device, return that
device, otherwise return None
.
If there is a current event and it has a timestamp,
return that timestamp, otherwise return GDK_CURRENT_TIME
.
Returns the GTK+ debug flags.
Returns the pango::Language
for the default language currently in
effect. (Note that this can change over the life of an
application.) The default language is derived from the current
locale. It determines, for example, whether GTK+ uses the
right-to-left or left-to-right text direction.
Adds a GTK+ grab on device
, so all the events on device
and its
associated pointer or keyboard (if any) are delivered to widget
.
If the block_others
parameter is true
, any other devices will be
unable to interact with widget
during the grab.
Removes a device grab from the given widget.
Prevents gtk_init()
, gtk_init_check()
, gtk_init_with_args()
and
gtk_parse_args()
from automatically
calling setlocale (LC_ALL, "")
. You would
want to use this function if you wanted to set the locale for
your program to something other than the user’s locale, or if
you wanted to set different values for different locale categories.
Checks if any events are pending.
Queries the current grab of the default window group.
Tries to initialize GTK+.
Returns the interface age as passed to libtool
when building the GTK+ library the process is running against.
If libtool
means nothing to you, don’t
worry about it.
Returns true
if GTK has been initialized.
Returns true
if GTK has been initialized and this is the main thread.
Get the direction of the current locale. This is the expected reading direction for text and UI.
Runs the main loop until gtk_main_quit()
is called.
Processes a single GDK event.
Runs a single iteration of the mainloop.
Runs a single iteration of the mainloop.
If no events are available either return or block depending on
the value of blocking
.
Asks for the current nesting level of the main loop.
Returns the major version number of the GTK+ library. (e.g. in GTK+ version 3.1.5 this is 3.)
Returns the micro version number of the GTK+ library. (e.g. in GTK+ version 3.1.5 this is 5.)
Returns the minor version number of the GTK+ library. (e.g. in GTK+ version 3.1.5 this is 1.)
Runs a page setup dialog, letting the user modify the values from
page_setup
. If the user cancels the dialog, the returned PageSetup
is identical to the passed in page_setup
, otherwise it contains the
modifications done in the dialog.
Runs a page setup dialog, letting the user modify the values from page_setup
.
Sends an event to a widget, propagating the event to parent widgets if the event remains unhandled.
Renders an activity indicator (such as in Spinner
).
The state StateFlags::CHECKED
determines whether there is
activity going on.
Renders an arrow pointing to angle
.
Renders the background of an element.
Returns the area that will be affected (i.e. drawn to) when
calling render_background()
for the given context
and
rectangle.
Renders a checkmark (as in a CheckButton
).
Renders an expander (as used in TreeView
and Expander
) in the area
defined by x
, y
, width
, height
. The state StateFlags::CHECKED
determines whether the expander is collapsed or expanded.
Renders a extension (as in a Notebook
tab) in the rectangle
defined by x
, y
, width
, height
. The side where the extension
connects to is defined by gap_side
.
Renders a focus indicator on the rectangle determined by x
, y
, width
, height
.
Renders a frame around the rectangle defined by x
, y
, width
, height
.
Renders a frame around the rectangle defined by (x
, y
, width
, height
),
leaving a gap on one side. xy0_gap
and xy1_gap
will mean X coordinates
for PositionType::Top
and PositionType::Bottom
gap sides, and Y coordinates for
PositionType::Left
and PositionType::Right
.
Renders the icon in pixbuf
at the specified x
and y
coordinates.
Renders the icon in surface
at the specified x
and y
coordinates.
Draws a text caret on cr
at the specified index of layout
.
Renders layout
on the coordinates x
, y
Renders a line from (x0, y0) to (x1, y1).
Renders an option mark (as in a RadioButton
), the StateFlags::CHECKED
state will determine whether the option is on or off, and
StateFlags::INCONSISTENT
whether it should be marked as undefined.
Renders a slider (as in Scale
) in the rectangle defined by x
, y
,
width
, height
. orientation
defines whether the slider is vertical
or horizontal.
Converts a color from RGB space to HSV.
Appends a specified target to the list of supported targets for a given widget and selection.
Remove all targets registered for the given selection for the widget.
Requests the contents of a selection. When received, a “selection-received” signal will be generated.
Claims ownership of a given selection for a particular widget,
or, if widget
is None
, release ownership of the selection.
Claim ownership of a given selection for a particular widget, or,
if widget
is None
, release ownership of the selection.
Removes all handlers and unsets ownership of all selections for a widget. Called when widget is being destroyed. This function will not generally be called by applications.
Sets the GTK+ debug flags.
Informs this crate that GTK has been initialized and the current thread is the main one.
A convenience function for launching the default application
to show the uri. Like show_uri_on_window()
, but takes a screen
as transient parent instead of a window.
v3_22
This is a convenience function for launching the default application to show the uri. The uri must be of a form understood by GIO (i.e. you need to install gvfs to get support for uri schemes such as http:// or ftp://, as only local files are handled by GIO itself). Typical examples are
Determines if any of the targets in targets
can be used to
provide a gdk_pixbuf::Pixbuf
.
Determines if any of the targets in targets
can be used to
provide rich text.
Determines if any of the targets in targets
can be used to
provide text.
Determines if any of the targets in targets
can be used to
provide an uri list.
Create a simple window with window title window_title
and
text contents dialog_text
.
The window will quit any running main()
-loop when destroyed, and it
will automatically be destroyed upon test function teardown.
This function will search widget
and all its descendants for a GtkLabel
widget with a text string matching label_pattern
.
The label_pattern
may contain asterisks “*” and question marks “?” as
placeholders, g_pattern_match()
is used for the matching.
Note that locales other than “C“ tend to alter (translate” label strings,
so this function is genrally only useful in test programs with
predetermined locales, see gtk_test_init()
for more details.
This function will search siblings of base_widget
and siblings of its
ancestors for all widgets matching widget_type
.
Of the matching widgets, the one that is geometrically closest to
base_widget
will be returned.
The general purpose of this function is to find the most likely “action”
widget, relative to another labeling widget. Such as finding a
button or text entry widget, given its corresponding label widget.
This function will search the descendants of widget
for a widget
of type widget_type
that has a label matching label_pattern
next
to it. This is most useful for automated GUI testing, e.g. to find
the “OK” button in a dialog and synthesize clicks on it.
However see test_find_label()
, test_find_sibling()
and
test_widget_click()
for possible caveats involving the search of
such widgets and synthesizing widget events.
Force registration of all core Gtk+ and Gdk object types.
This allowes to refer to any of those object types via
g_type_from_name()
after calling this function.
Retrive the literal adjustment value for GtkRange based
widgets and spin buttons. Note that the value returned by
this function is anything between the lower and upper bounds
of the adjustment belonging to widget
, and is not a percentage
as passed in to test_slider_set_perc()
.
This function will adjust the slider position of all GtkRange
based widgets, such as scrollbars or scales, it’ll also adjust
spin buttons. The adjustment value of these widgets is set to
a value between the lower and upper limits, according to the
percentage
argument.
This function will generate a button
click in the upwards or downwards
spin button arrow areas, usually leading to an increase or decrease of
spin button’s value.
Retrive the text string of widget
if it is a GtkLabel,
GtkEditable (entry and text widgets) or GtkTextView.
Set the text string of widget
to string
if it is a GtkLabel,
GtkEditable (entry and text widgets) or GtkTextView.
This function will generate a button
click (button press and button
release event) in the middle of the first GdkWindow found that belongs
to widget
.
For windowless widgets like Button
(which returns false
from
WidgetExt::has_window()
), this will often be an
input-only event window. For other widgets, this is usually widget->window.
Certain caveats should be considered when using this function, in
particular because the mouse pointer is warped to the button click
location, see gdk_test_simulate_button()
for details.
This function will generate keyboard press and release events in
the middle of the first GdkWindow found that belongs to widget
.
For windowless widgets like Button
(which returns false
from
WidgetExt::has_window()
), this will often be an
input-only event window. For other widgets, this is usually widget->window.
Certain caveats should be considered when using this function, in
particular because the mouse pointer is warped to the key press
location, see gdk_test_simulate_key()
for details.
Enters the main loop and waits for widget
to be “drawn”. In this
context that means it waits for the frame clock of widget
to have
run a full styling, layout and drawing cycle.
Obtains a tree_model
and path
from selection data of target type
GTK_TREE_MODEL_ROW
. Normally called from a drag_data_received handler.
This function can only be used if selection_data
originates from the same
process that’s calling this function, because a pointer to the tree model
is being passed around. If you aren’t in the same process, then you’ll
get memory corruption. In the TreeDragDest
drag_data_received handler,
you can assume that selection data of type GTK_TREE_MODEL_ROW
is
in from the current process. The returned path must be freed with
gtk_tree_path_free()
.
Sets selection data of target type GTK_TREE_MODEL_ROW
. Normally used
in a drag_data_get handler.