From 85dffabdd42f8e1e402b057ba337f1e57a869b3a Mon Sep 17 00:00:00 2001 From: Michael Rasmussen Date: Mon, 9 Oct 2023 23:52:08 +0200 Subject: [PATCH] Basic Signed-off-by: Michael Rasmussen --- .gitignore | 9 +++--- src/Makefile.am | 3 +- src/main.c | 78 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 84 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index c2e604a..47e704e 100644 --- a/.gitignore +++ b/.gitignore @@ -14,8 +14,9 @@ config.h *~ libtool stamp-h1 -src/Makefile -src/*.in -src/.deps - +Makefile +*.in +.deps +*.o +enfusegtk diff --git a/src/Makefile.am b/src/Makefile.am index 9a60e7d..3e65208 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -13,5 +13,4 @@ enfusegtk_SOURCES = \ enfusegtk_LDADD = \ @GLIB_LIBS@ \ - @GTK_LIBS@ \ - @JSON_LIBS@ + @GTK_LIBS@ diff --git a/src/main.c b/src/main.c index e69de29..c0c79c9 100644 --- a/src/main.c +++ b/src/main.c @@ -0,0 +1,78 @@ +#include + +static void +print_hello (GtkWidget *widget, + gpointer data) +{ + gchar* msg = (gchar*) data; + + g_print ("%s\n", msg); +} + +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), "Hello World #1"); + + /* 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), "Hello World #2"); + + /* 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", G_APPLICATION_DEFAULT_FLAGS); + g_signal_connect (app, "activate", G_CALLBACK (activate), NULL); + status = g_application_run (G_APPLICATION (app), argc, argv); + g_object_unref (app); + + return status; +} + -- 2.39.5