diff options
author | Bastian Ilsø <bastianilso@src.gnome.org> | 2015-02-10 16:55:30 +0100 |
---|---|---|
committer | Bastian Ilsø <bastianilso@src.gnome.org> | 2015-03-09 12:17:31 +0100 |
commit | 52f5a78c6daeaf0eec9b014d9cfefb6d844a4f6a (patch) | |
tree | 16cb69de1174119eb3fc7470fdbc108f7b8cf1a8 /examples | |
parent | 01d76b7701f6b8d3e5654d679fb291826cf970bf (diff) | |
download | gtk+-52f5a78c6daeaf0eec9b014d9cfefb6d844a4f6a.tar.gz |
Update hello-world.c to GtkApplication, document
Diffstat (limited to 'examples')
-rw-r--r-- | examples/hello-world.c | 104 |
1 files changed, 23 insertions, 81 deletions
diff --git a/examples/hello-world.c b/examples/hello-world.c index 204b46eb4d..843b9b2d85 100644 --- a/examples/hello-world.c +++ b/examples/hello-world.c @@ -1,8 +1,5 @@ #include <gtk/gtk.h> -/* This is a callback function. The data arguments are ignored - * in this example. More on callbacks below. - */ static void print_hello (GtkWidget *widget, gpointer data) @@ -10,95 +7,40 @@ print_hello (GtkWidget *widget, g_print ("Hello World\n"); } -static gboolean -on_delete_event (GtkWidget *widget, - GdkEvent *event, - gpointer data) -{ - /* If you return FALSE in the "delete_event" signal handler, - * GTK will emit the "destroy" signal. Returning TRUE means - * you don't want the window to be destroyed. - * - * This is useful for popping up 'are you sure you want to quit?' - * type dialogs. - */ - - g_print ("delete event occurred\n"); - - return TRUE; -} - -int -main (int argc, - char *argv[]) +static void +activate (GtkApplication *app, + gpointer user_data) { - /* GtkWidget is the storage type for widgets */ GtkWidget *window; GtkWidget *button; + GtkWidget *button_box; - /* This is called in all GTK applications. Arguments are parsed - * from the command line and are returned to the application. - */ - gtk_init (&argc, &argv); - - /* create a new window, and set its title */ - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_window_set_title (GTK_WINDOW (window), "Hello"); + window = gtk_application_window_new (app); + gtk_window_set_title (GTK_WINDOW (window), "Window"); + gtk_window_set_default_size (GTK_WINDOW (window), 200, 200); - /* When the window emits the "delete-event" signal (which is emitted - * by GTK+ in response to an event coming from the window manager, - * usually as a result of clicking the "close" window control), we - * ask it to call the on_delete_event() function as defined above. - * - * The data passed to the callback function is NULL and is ignored - * in the callback function. - */ - g_signal_connect (window, "delete-event", G_CALLBACK (on_delete_event), NULL); + button_box = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL); + gtk_container_add (GTK_CONTAINER (window), button_box); - /* Here we connect the "destroy" event to the gtk_main_quit() function. - * - * This signal is emitted when we call gtk_widget_destroy() on the window, - * or if we return FALSE in the "delete_event" callback. - */ - g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); - - /* Sets the border width of the window. */ - gtk_container_set_border_width (GTK_CONTAINER (window), 10); - - /* Creates a new button with the label "Hello World". */ button = gtk_button_new_with_label ("Hello World"); - - /* When the button receives the "clicked" signal, it will call the - * function print_hello() passing it NULL as its argument. - * - * The print_hello() function is defined above. - */ g_signal_connect (button, "clicked", G_CALLBACK (print_hello), NULL); - - /* The g_signal_connect_swapped() function will connect the "clicked" signal - * of the button to the gtk_widget_destroy() function; instead of calling it - * using the button as its argument, it will swap it with the user data - * argument. This will cause the window to be destroyed by calling - * gtk_widget_destroy() on the window. - */ g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window); + gtk_container_add (GTK_CONTAINER (button_box), button); - /* This packs the button into the window. A GtkWindow inherits from GtkBin, - * which is a special container that can only have one child - */ - gtk_container_add (GTK_CONTAINER (window), button); - - /* The final step is to display this newly created widget... */ - gtk_widget_show (button); + gtk_widget_show_all (window); +} - /* ... and the window */ - gtk_widget_show (window); +int +main (int argc, + char **argv) +{ + GtkApplication *app; + int status; - /* All GTK applications must have a gtk_main(). Control ends here - * and waits for an event to occur (like a key press or a mouse event), - * until gtk_main_quit() is called. - */ - gtk_main (); + app = gtk_application_new ("org.gtk.example", G_APPLICATION_FLAGS_NONE); + g_signal_connect (app, "activate", G_CALLBACK (activate), NULL); + status = g_application_run (G_APPLICATION (app), argc, argv); + g_object_unref (app); - return 0; + return status; } |