
The merge request !5235 switched tests and examples from G_APPLICATION_FLAGS_NONE, which has been deprecated in GLib 2.74, to G_APPLICATION_DEFAULT_FLAGS. Sadly, it was done unconditionally, which means we'd have to bump the required version of GLib. To avoid that, let's just use the numeric value of the enum member.
76 lines
2.2 KiB
C
76 lines
2.2 KiB
C
#include <gtk/gtk.h>
|
|
|
|
static void
|
|
print_hello (GtkWidget *widget,
|
|
gpointer data)
|
|
{
|
|
g_print ("Hello World\n");
|
|
}
|
|
|
|
static void
|
|
activate (GtkApplication *app,
|
|
gpointer user_data)
|
|
{
|
|
GtkWidget *window;
|
|
GtkWidget *grid;
|
|
GtkWidget *button;
|
|
|
|
/* create a new window, and set its title */
|
|
window = gtk_application_window_new (app);
|
|
gtk_window_set_title (GTK_WINDOW (window), "Window");
|
|
gtk_container_set_border_width (GTK_CONTAINER (window), 10);
|
|
|
|
/* Here we construct the container that is going pack our buttons */
|
|
grid = gtk_grid_new ();
|
|
|
|
/* Pack the container in the window */
|
|
gtk_container_add (GTK_CONTAINER (window), grid);
|
|
|
|
button = gtk_button_new_with_label ("Button 1");
|
|
g_signal_connect (button, "clicked", G_CALLBACK (print_hello), NULL);
|
|
|
|
/* Place the first button in the grid cell (0, 0), and make it fill
|
|
* just 1 cell horizontally and vertically (ie no spanning)
|
|
*/
|
|
gtk_grid_attach (GTK_GRID (grid), button, 0, 0, 1, 1);
|
|
|
|
button = gtk_button_new_with_label ("Button 2");
|
|
g_signal_connect (button, "clicked", G_CALLBACK (print_hello), NULL);
|
|
|
|
/* Place the second button in the grid cell (1, 0), and make it fill
|
|
* just 1 cell horizontally and vertically (ie no spanning)
|
|
*/
|
|
gtk_grid_attach (GTK_GRID (grid), button, 1, 0, 1, 1);
|
|
|
|
button = gtk_button_new_with_label ("Quit");
|
|
g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window);
|
|
|
|
/* Place the Quit button in the grid cell (0, 1), and make it
|
|
* span 2 columns.
|
|
*/
|
|
gtk_grid_attach (GTK_GRID (grid), button, 0, 1, 2, 1);
|
|
|
|
/* Now that we are done packing our widgets, we show them all
|
|
* in one go, by calling gtk_widget_show_all() on the window.
|
|
* This call recursively calls gtk_widget_show() on all widgets
|
|
* that are contained in the window, directly or indirectly.
|
|
*/
|
|
gtk_widget_show_all (window);
|
|
|
|
}
|
|
|
|
int
|
|
main (int argc,
|
|
char **argv)
|
|
{
|
|
GtkApplication *app;
|
|
int status;
|
|
|
|
app = gtk_application_new ("org.gtk.example", 0);
|
|
g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
|
|
status = g_application_run (G_APPLICATION (app), argc, argv);
|
|
g_object_unref (app);
|
|
|
|
return status;
|
|
}
|