Before using GTK+, you need to initialize it; initialization connects
to the window system display, and parses some standard command line
arguments. The gtkInit
function initializes GTK+. gtkInit
exits
the application if errors occur; to avoid this, use gtkInitCheck()
.
gtkInitCheck()
allows you to recover from a failed GTK+
initialization - you might start up your application in text mode instead. Like all GUI toolkits, GTK+ uses an event-driven programming
model. When the user is doing nothing, GTK+ sits in the
main loop and waits for input. If the user
performs some action - say, a mouse click - then the main loop "wakes
up" and delivers an event to GTK+. GTK+ forwards the event to one or
more widgets. When widgets receive an event, they frequently emit one or more
signals. Signals notify your program that
"something interesting happened" by invoking functions you've
connected to the signal with gSignalConnect
. Functions connected
to a signal are often termed callbacks. When your callbacks are invoked, you would typically take some action
- for example, when an Open button is clicked you might display a
GtkFileSelectionDialog
. After a callback finishes, GTK+ will return
to the main loop and await more user input. Typical main
function for a GTK+ applicationint
main (int argc, char **argv)
{
/* Initialize i18n support */
gtk_set_locale ( );
/* Initialize the widget set */
gtk_init (&argc, &argv);
/* Create the main window */
mainwin = gtk_window_new (GTK_WINDOW_TOPLEVEL);
/* Set up our GUI elements */
...
/* Show the application window */
gtk_widget_show_all (mainwin);
/* Enter the main event loop, and wait for user interaction */
gtk_main ( );
/* The user lost interest */
return 0;
}
It's OK to use the GLib main loop directly instead of gtkMain
,
though it involves slightly more typing. See GMainLoop
in the GLib
documentation.