Crate gtk[−][src]
Expand description
Rust GTK 3 bindings
This library contains safe Rust bindings for GTK 3, a multi-platform GUI toolkit. It is a part of gtk-rs.
GTK 3.18 is the lowest supported version for the underlying library.
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.
See also
“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.
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
Structs
A builder-pattern type to construct AboutDialog
objects.
A builder-pattern type to construct AccelLabel
objects.
A builder-pattern type to construct ActionBar
objects.
A builder-pattern type to construct Adjustment
objects.
A builder-pattern type to construct AppChooserButton
objects.
A builder-pattern type to construct AppChooserDialog
objects.
A builder-pattern type to construct AppChooserWidget
objects.
A builder-pattern type to construct Application
objects.
A builder-pattern type to construct ApplicationWindow
objects.
A builder-pattern type to construct AspectFrame
objects.
A builder-pattern type to construct Assistant
objects.
A builder-pattern type to construct Box
objects.
A builder-pattern type to construct ButtonBox
objects.
A builder-pattern type to construct Button
objects.
A builder-pattern type to construct Calendar
objects.
A builder-pattern type to construct CellAreaBox
objects.
A builder-pattern type to construct CellRendererAccel
objects.
A builder-pattern type to construct CellRendererCombo
objects.
A builder-pattern type to construct CellRendererPixbuf
objects.
A builder-pattern type to construct CellRendererProgress
objects.
A builder-pattern type to construct CellRendererSpin
objects.
A builder-pattern type to construct CellRendererSpinner
objects.
A builder-pattern type to construct CellRendererText
objects.
A builder-pattern type to construct CellRendererToggle
objects.
A builder-pattern type to construct CellView
objects.
A builder-pattern type to construct CheckButton
objects.
A builder-pattern type to construct CheckMenuItem
objects.
A builder-pattern type to construct ColorButton
objects.
A builder-pattern type to construct ColorChooserDialog
objects.
A builder-pattern type to construct ColorChooserWidget
objects.
A builder-pattern type to construct ComboBox
objects.
A builder-pattern type to construct ComboBoxText
objects.
A builder-pattern type to construct Dialog
objects.
A builder-pattern type to construct DrawingArea
objects.
A builder-pattern type to construct Entry
objects.
A builder-pattern type to construct EntryCompletion
objects.
A builder-pattern type to construct EventBox
objects.
A builder-pattern type to construct Expander
objects.
A builder-pattern type to construct FileChooserButton
objects.
A builder-pattern type to construct FileChooserDialog
objects.
A builder-pattern type to construct FileChooserNative
objects.
A builder-pattern type to construct FileChooserWidget
objects.
A builder-pattern type to construct Fixed
objects.
A builder-pattern type to construct FlowBox
objects.
A builder-pattern type to construct FlowBoxChild
objects.
A builder-pattern type to construct FontButton
objects.
A builder-pattern type to construct FontChooserDialog
objects.
A builder-pattern type to construct FontChooserWidget
objects.
A builder-pattern type to construct Frame
objects.
A builder-pattern type to construct GLArea
objects.
A builder-pattern type to construct GestureDrag
objects.
A builder-pattern type to construct GestureLongPress
objects.
A builder-pattern type to construct GestureMultiPress
objects.
A builder-pattern type to construct GesturePan
objects.
A builder-pattern type to construct GestureRotate
objects.
A builder-pattern type to construct GestureSwipe
objects.
A builder-pattern type to construct GestureZoom
objects.
A builder-pattern type to construct Grid
objects.
A builder-pattern type to construct HeaderBar
objects.
A builder-pattern type to construct IMContextSimple
objects.
A builder-pattern type to construct IMMulticontext
objects.
A builder-pattern type to construct IconView
objects.
A builder for generating a Image
.
A builder-pattern type to construct InfoBar
objects.
Whether to propagate the signal to the default handler.
A builder-pattern type to construct Invisible
objects.
A builder-pattern type to construct Label
objects.
A builder-pattern type to construct Layout
objects.
A builder-pattern type to construct LevelBar
objects.
A builder-pattern type to construct LinkButton
objects.
A builder-pattern type to construct ListBox
objects.
A builder-pattern type to construct ListBoxRow
objects.
A builder-pattern type to construct LockButton
objects.
A builder-pattern type to construct MenuBar
objects.
A builder-pattern type to construct Menu
objects.
A builder-pattern type to construct MenuButton
objects.
A builder-pattern type to construct MenuItem
objects.
A builder-pattern type to construct MenuToolButton
objects.
A builder-pattern type to construct MessageDialog
objects.
A builder-pattern type to construct ModelButton
objects.
A builder-pattern type to construct MountOperation
objects.
A builder-pattern type to construct Notebook
objects.
A builder-pattern type to construct OffscreenWindow
objects.
A builder-pattern type to construct Overlay
objects.
A builder-pattern type to construct PadController
objects.
A builder-pattern type to construct Paned
objects.
A builder-pattern type to construct PlacesSidebar
objects.
A builder-pattern type to construct Plug
objects.
A builder-pattern type to construct Popover
objects.
A builder-pattern type to construct PopoverMenu
objects.
A builder-pattern type to construct PrintOperation
objects.
A builder-pattern type to construct ProgressBar
objects.
A builder-pattern type to construct RadioButton
objects.
A builder-pattern type to construct RadioMenuItem
objects.
A builder-pattern type to construct RadioToolButton
objects.
A builder-pattern type to construct RecentChooserDialog
objects.
A builder-pattern type to construct RecentChooserMenu
objects.
A builder-pattern type to construct RecentChooserWidget
objects.
A builder-pattern type to construct RecentManager
objects.
A builder-pattern type to construct Revealer
objects.
A builder-pattern type to construct Scale
objects.
A builder-pattern type to construct ScaleButton
objects.
A builder-pattern type to construct Scrollbar
objects.
A builder-pattern type to construct ScrolledWindow
objects.
A builder-pattern type to construct SearchBar
objects.
A builder-pattern type to construct SearchEntry
objects.
A builder-pattern type to construct Separator
objects.
A builder-pattern type to construct SeparatorMenuItem
objects.
A builder-pattern type to construct SeparatorToolItem
objects.
A builder-pattern type to construct ShortcutLabel
objects.
A builder-pattern type to construct ShortcutsGroup
objects.
A builder-pattern type to construct ShortcutsSection
objects.
A builder-pattern type to construct ShortcutsShortcut
objects.
A builder-pattern type to construct ShortcutsWindow
objects.
A builder-pattern type to construct SizeGroup
objects.
A builder-pattern type to construct Socket
objects.
A builder-pattern type to construct SpinButton
objects.
A builder-pattern type to construct Spinner
objects.
A builder-pattern type to construct Stack
objects.
A builder-pattern type to construct StackSidebar
objects.
A builder for generating a StackSwitcher
.
A builder-pattern type to construct Statusbar
objects.
A builder-pattern type to construct StyleContext
objects.
A builder-pattern type to construct Switch
objects.
A builder-pattern type to construct TextBuffer
objects.
A builder-pattern type to construct TextMark
objects.
A builder-pattern type to construct TextTag
objects.
A builder-pattern type to construct TextView
objects.
A builder-pattern type to construct ToggleButton
objects.
A builder-pattern type to construct ToggleToolButton
objects.
A builder-pattern type to construct ToolButton
objects.
A builder-pattern type to construct ToolItem
objects.
A builder-pattern type to construct ToolItemGroup
objects.
A builder-pattern type to construct ToolPalette
objects.
A builder-pattern type to construct Toolbar
objects.
A builder-pattern type to construct TreeView
objects.
A builder-pattern type to construct TreeViewColumn
objects.
A builder-pattern type to construct Viewport
objects.
A builder-pattern type to construct VolumeButton
objects.
A builder-pattern type to construct Window
objects.
Enums
Constants
Statics
Traits
Functions
Tries to initialize GTK+.
Returns true
if GTK has been initialized.
Returns true
if GTK has been initialized and this is the main thread.
Informs this crate that GTK has been initialized and the current thread is the main one.
v3_22