| 1 | #include <gtk/gtk.h> |
| 2 | |
| 3 | static void |
| 4 | print_hello (GtkWidget *widget, |
| 5 | gpointer data) |
| 6 | { |
| 7 | g_print (format: "Hello World\n" ); |
| 8 | } |
| 9 | |
| 10 | static void |
| 11 | activate (GtkApplication *app, |
| 12 | gpointer user_data) |
| 13 | { |
| 14 | GtkWidget *window; |
| 15 | GtkWidget *grid; |
| 16 | GtkWidget *button; |
| 17 | |
| 18 | /* create a new window, and set its title */ |
| 19 | window = gtk_application_window_new (application: app); |
| 20 | gtk_window_set_title (GTK_WINDOW (window), title: "Window" ); |
| 21 | |
| 22 | /* Here we construct the container that is going pack our buttons */ |
| 23 | grid = gtk_grid_new (); |
| 24 | |
| 25 | /* Pack the container in the window */ |
| 26 | gtk_window_set_child (GTK_WINDOW (window), child: grid); |
| 27 | |
| 28 | button = gtk_button_new_with_label (label: "Button 1" ); |
| 29 | g_signal_connect (button, "clicked" , G_CALLBACK (print_hello), NULL); |
| 30 | |
| 31 | /* Place the first button in the grid cell (0, 0), and make it fill |
| 32 | * just 1 cell horizontally and vertically (ie no spanning) |
| 33 | */ |
| 34 | gtk_grid_attach (GTK_GRID (grid), child: button, column: 0, row: 0, width: 1, height: 1); |
| 35 | |
| 36 | button = gtk_button_new_with_label (label: "Button 2" ); |
| 37 | g_signal_connect (button, "clicked" , G_CALLBACK (print_hello), NULL); |
| 38 | |
| 39 | /* Place the second button in the grid cell (1, 0), and make it fill |
| 40 | * just 1 cell horizontally and vertically (ie no spanning) |
| 41 | */ |
| 42 | gtk_grid_attach (GTK_GRID (grid), child: button, column: 1, row: 0, width: 1, height: 1); |
| 43 | |
| 44 | button = gtk_button_new_with_label (label: "Quit" ); |
| 45 | g_signal_connect_swapped (button, "clicked" , G_CALLBACK (gtk_window_destroy), window); |
| 46 | |
| 47 | /* Place the Quit button in the grid cell (0, 1), and make it |
| 48 | * span 2 columns. |
| 49 | */ |
| 50 | gtk_grid_attach (GTK_GRID (grid), child: button, column: 0, row: 1, width: 2, height: 1); |
| 51 | |
| 52 | gtk_widget_show (widget: window); |
| 53 | |
| 54 | } |
| 55 | |
| 56 | int |
| 57 | main (int argc, |
| 58 | char **argv) |
| 59 | { |
| 60 | GtkApplication *app; |
| 61 | int status; |
| 62 | |
| 63 | app = gtk_application_new (application_id: "org.gtk.example" , flags: G_APPLICATION_FLAGS_NONE); |
| 64 | g_signal_connect (app, "activate" , G_CALLBACK (activate), NULL); |
| 65 | status = g_application_run (G_APPLICATION (app), argc, argv); |
| 66 | g_object_unref (object: app); |
| 67 | |
| 68 | return status; |
| 69 | } |
| 70 | |