From 019c52ed1177dbfc93620331103b8f74a1b72e43 Mon Sep 17 00:00:00 2001 From: ObeseTermite Date: Mon, 30 Jun 2025 13:03:43 -0700 Subject: [PATCH] Changed CMake structure to be a little more sensible --- calculator/CMakeLists.txt | 10 ++--- calculator/calc.c | 25 ------------ calculator/src/CMakeLists.txt | 2 + calculator/src/calc.c | 76 +++++++++++++++++++++++++++++++++++ 4 files changed, 82 insertions(+), 31 deletions(-) delete mode 100644 calculator/calc.c create mode 100644 calculator/src/CMakeLists.txt create mode 100644 calculator/src/calc.c diff --git a/calculator/CMakeLists.txt b/calculator/CMakeLists.txt index 59042d1..a698f77 100644 --- a/calculator/CMakeLists.txt +++ b/calculator/CMakeLists.txt @@ -1,10 +1,8 @@ -cmake_minimum_required(VERSION 3.5) +cmake_minimum_required(VERSION 4.0) project(calculator) -set(CMAKE_BINARY_DIR ${CMAKE_SOURCE_DIR}/bin) -set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}) -set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}) +set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) find_package(PkgConfig REQUIRED) pkg_check_modules(GTK3 REQUIRED gtk+-3.0) @@ -13,5 +11,5 @@ include_directories(${GTK3_INCLUDE_DIRS}) link_directories(${GTK3_LIBRARY_DIRS}) add_definitions(${GTK3_CFLAGS_OTHER}) -add_executable(wieve-calc ${PROJECT_SOURCE_DIR}/calc.c) -target_link_libraries(wieve-calc ${GTK3_LIBRARIES}) +add_subdirectory(src) + diff --git a/calculator/calc.c b/calculator/calc.c deleted file mode 100644 index 14ba77c..0000000 --- a/calculator/calc.c +++ /dev/null @@ -1,25 +0,0 @@ -#include - -static void activate (GtkApplication* app, gpointer user_data) -{ - GtkWidget *window; - - window = gtk_application_window_new (app); - gtk_window_set_title (GTK_WINDOW (window), "Calculator"); - gtk_window_set_default_size (GTK_WINDOW (window), 500, 800); - 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; -} - diff --git a/calculator/src/CMakeLists.txt b/calculator/src/CMakeLists.txt new file mode 100644 index 0000000..17fec91 --- /dev/null +++ b/calculator/src/CMakeLists.txt @@ -0,0 +1,2 @@ +add_executable(wieve-calc calc.c) +target_link_libraries(wieve-calc ${GTK3_LIBRARIES}) diff --git a/calculator/src/calc.c b/calculator/src/calc.c new file mode 100644 index 0000000..2e45308 --- /dev/null +++ b/calculator/src/calc.c @@ -0,0 +1,76 @@ +#include + +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.wieve.calculator", 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 status; +} +