Crate gtk

source · []
Expand description

Rust GTK 3 bindings

Project site

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.22.30 is the lowest supported version for the underlying library.

Minimum supported Rust version

Currently, the minimum supported Rust version is 1.57.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.22.30 APIs. You can access additional functionality by selecting one of the v3_24, etc. features.

Cargo.toml example:

[dependencies.gtk]
version = "0.x.y"
features = ["v3_24"]

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.

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.

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

Calendar is a widget that displays a Gregorian calendar, one month at a time. It can be created with new().

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.

The EventBox widget is a subclass of Bin which also has its own window. It is useful since it allows you to catch events for widgets which do not have their own window.

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.

A Expander allows the user to hide or show its child by clicking on an expander triangle similar to the triangles used in a TreeView.

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.

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 add_custom()).

These flags indicate what parts of a FileFilterInfo struct are filled or need to be filled.

A FileFilterInfo-struct is used to pass information about the tested file to FileFilter::filter().

The Fixed widget is a container which can place child widgets at fixed positions and with fixed sizes, given in pixels. Fixed performs no automatic layout management.

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.

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().

GLArea is a widget that allows drawing with OpenGL.

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().

IMContext defines the interface for GTK+ input methods. An input method is used by GTK+ text input widgets like Entry to map from key events to Unicode character strings.

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:

InfoBar is a widget that can be used to show messages to the user without showing a dialog. It is often temporarily shown at the top or bottom of a document. In contrast to Dialog, which has a action area at the bottom, InfoBar has an action area at the side.

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.

The Label widget displays a small amount of text. As the name implies, most labels are used to label another widget such as a Button, a MenuItem, or a ComboBox.

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().

A Menu is a MenuShell that implements a drop down menu consisting of a list of MenuItem objects which can be navigated and activated by the user to perform application functions.

The MenuBar is a subclass of MenuShell which contains one or more GtkMenuItems. The result is a standard menu bar which can hold many menu items.

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 MenuShell is the abstract base class used to derive the Menu and MenuBar subclasses.

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.

Native dialogs are platform dialogs that don’t use Dialog or Window. They are used in order to integrate better with a platform, by looking the same as other native applications and supporting platform specific features.

The Notebook widget is a Container whose children are pages that can be switched between using tab labels along one edge.

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.

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.

Range is the common base class for widgets which visualize an adjustment, e.g Scale or Scrollbar.

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.

SizeGroup provides a mechanism for grouping a number of widgets together so they all request the same amount of space. This is typically useful when you want a column of widgets to have the same size, but you can’t use a Grid widget.

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.

The ToolShell interface allows container widgets to provide additional information when embedding ToolItem widgets.

A toolbar is created with a call to new().

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 TreeIter is the primary structure for accessing a TreeModel. Models are expected to put a unique integer in the stamp member, and put model-specific data in the three user_data members.

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.

A GtkTreeRowReference tracks model changes so that it always refers to the same row (a TreePath refers to a position, not a fixed row). Create a new GtkTreeRowReference with new().

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.

Widget that displays any object that implements the TreeModel interface.

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.

The Viewport widget acts as an adaptor class, implementing scrollability for child widgets that lack their own scrolling capabilities. Use GtkViewport to scroll child widgets such as Grid, Box, and so on.

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.

Represents the packing location Box children. (See: GtkVBox, GtkHBox, and ButtonBox).

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.

Describes constraints to positioning of popovers. More values may be added to this enumeration in the future.

Describes which edge of a widget a certain feature is positioned at, e.g. the tabs of a Notebook, the handle of a GtkHandleBox or the label of a Scale.

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()

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.

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.

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 scale widgets with marks attached, all the marks are above for horizontal Scale. left for vertical Scale.

A CSS class to match scale widgets with marks attached, all the marks are below for horizontal Scale, right for vertical Scale.

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 margin as a Border. The margin is defined as the spacing between the border of the element and its surrounding elements. It is external to Widget’s size allocations, and the most external spacing property of the padding/border/margin series.

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.

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 state field, place that state field in state and return true, otherwise return false.

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.

If event is None or the event was not associated with any widget, returns None, otherwise returns the widget that received the event originally.

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 a handle (as in GtkHandleBox, Paned and Window’s resize grip), in the rectangle determined by x, y, width, height.

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.

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.

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 gtk_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.

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.