From 1e560833c3c2223d82b9ad79693e914342874e8d Mon Sep 17 00:00:00 2001 From: Rory Fewell Date: Wed, 2 Aug 2023 00:46:41 +0100 Subject: [PATCH] Enhancement: Fixes #131, Implement dialog button box widget in comctl lib - use in run and winver --- shared/comctl/CMakeLists.txt | 77 ++++++++++++++++++++++++++++ shared/comctl/README.MD | 5 ++ shared/comctl/deps | 2 + shared/comctl/public/wintc-comctl.h | 11 ++++ shared/comctl/src/res/default.css | 11 ++++ shared/comctl/src/res/resources.xml | 6 +++ shared/comctl/src/style.c | 33 ++++++++++++ shared/comctl/src/style.h | 8 +++ shell/run/CMakeLists.txt | 4 ++ shell/run/README.MD | 2 +- shell/run/deps | 1 + shell/run/preview.png | Bin 0 -> 14766 bytes shell/run/src/application.c | 72 ++++---------------------- shell/run/src/dialog.c | 7 +++ shell/winver/CMakeLists.txt | 4 ++ shell/winver/deps | 1 + shell/winver/src/winver.c | 13 +++-- tools/bldutils/depmap/archpkg-maps | 1 + tools/bldutils/depmap/deb-maps | 1 + 19 files changed, 191 insertions(+), 68 deletions(-) create mode 100644 shared/comctl/CMakeLists.txt create mode 100644 shared/comctl/README.MD create mode 100644 shared/comctl/deps create mode 100644 shared/comctl/public/wintc-comctl.h create mode 100644 shared/comctl/src/res/default.css create mode 100644 shared/comctl/src/res/resources.xml create mode 100644 shared/comctl/src/style.c create mode 100644 shared/comctl/src/style.h create mode 100644 shell/run/preview.png diff --git a/shared/comctl/CMakeLists.txt b/shared/comctl/CMakeLists.txt new file mode 100644 index 0000000..8d7a44e --- /dev/null +++ b/shared/comctl/CMakeLists.txt @@ -0,0 +1,77 @@ +cmake_minimum_required(VERSION 3.0) + +project( + libwintc-comctl + VERSION 1.0 + DESCRIPTION "Windows Total Conversion common controls library." + LANGUAGES C +) + +set(PROJECT_ANYARCH false) +set(PROJECT_FREESTATUS true) +set(PROJECT_MAINTAINER "Rory Fewell ") + +set(PROJECT_ROOT ${CMAKE_CURRENT_LIST_DIR}) + +include(GNUInstallDirs) + +include(../../packaging/cmake-inc/common/CMakeLists.txt) +include(../../packaging/cmake-inc/libraries/CMakeLists.txt) +include(../../packaging/cmake-inc/linking/CMakeLists.txt) +include(../../packaging/cmake-inc/packaging/CMakeLists.txt) +include(../../packaging/cmake-inc/resources/CMakeLists.txt) + +wintc_resolve_library(glib-2.0 GLIB) +wintc_resolve_library(gtk+-3.0 GTK3) + +wintc_compile_resources() + +add_library( + libwintc-comctl + src/resources.c + src/style.c + src/style.h +) + +set_target_properties( + libwintc-comctl + PROPERTIES + PUBLIC_HEADER public/wintc-comctl.h + SOVERSION 1 + VERSION ${PROJECT_VERSION} +) + +target_compile_options( + libwintc-comctl + PRIVATE ${WINTC_COMPILE_OPTIONS} +) + +target_include_directories( + libwintc-comctl + SYSTEM + PRIVATE ${GLIB_INCLUDE_DIRS} + PRIVATE ${GTK3_INCLUDE_DIRS} +) + +target_link_directories( + libwintc-comctl + PRIVATE ${GLIB_LIBRARY_DIRS} + PRIVATE ${GTK3_LIBRARY_DIRS} +) + +target_link_libraries( + libwintc-comctl + PRIVATE ${GLIB_LIBRARIES} + PRIVATE ${GTK3_LIBRARIES} +) + +# Installation +# +wintc_configure_and_install_packaging() +wintc_add_pkgconfig_install() + +install( + TARGETS libwintc-comctl + LIBRARY DESTINATION ${LIB_DIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} +) diff --git a/shared/comctl/README.MD b/shared/comctl/README.MD new file mode 100644 index 0000000..18e3ac7 --- /dev/null +++ b/shared/comctl/README.MD @@ -0,0 +1,5 @@ +# libwintc-comctl +This directory contains the source code for the Common Controls library. + +## Purpose +This library provides common GTK widgets and widget style classes for use across the WinTC project. diff --git a/shared/comctl/deps b/shared/comctl/deps new file mode 100644 index 0000000..404df23 --- /dev/null +++ b/shared/comctl/deps @@ -0,0 +1,2 @@ +bt,rt:glib2 +bt,rt:gtk3 diff --git a/shared/comctl/public/wintc-comctl.h b/shared/comctl/public/wintc-comctl.h new file mode 100644 index 0000000..236889b --- /dev/null +++ b/shared/comctl/public/wintc-comctl.h @@ -0,0 +1,11 @@ +#ifndef __WINTC_COMCTL_H__ +#define __WINTC_COMCTL_H__ + +// +// Default CSS stuff +// +#define WINTC_COMCTL_BUTTON_BOX_CLASS "wintc-button-box" + +void wintc_comctl_install_default_styles(void); + +#endif diff --git a/shared/comctl/src/res/default.css b/shared/comctl/src/res/default.css new file mode 100644 index 0000000..94615eb --- /dev/null +++ b/shared/comctl/src/res/default.css @@ -0,0 +1,11 @@ +box.wintc-button-box +{ + margin: 0px 8px 10px; +} + +box.wintc-button-box button +{ + margin-left: 8px; + min-height: 15px; + min-width: 51px; +} diff --git a/shared/comctl/src/res/resources.xml b/shared/comctl/src/res/resources.xml new file mode 100644 index 0000000..2166959 --- /dev/null +++ b/shared/comctl/src/res/resources.xml @@ -0,0 +1,6 @@ + + + + default.css + + diff --git a/shared/comctl/src/style.c b/shared/comctl/src/style.c new file mode 100644 index 0000000..b3a34d1 --- /dev/null +++ b/shared/comctl/src/style.c @@ -0,0 +1,33 @@ +#include +#include +#include + +#include "style.h" + +// +// PUBLIC FUNCTIONS +// +void wintc_comctl_install_default_styles(void) +{ + static gboolean already_done = FALSE; + + if (already_done) + { + return; + } + + GtkCssProvider* css_default = gtk_css_provider_new(); + + gtk_css_provider_load_from_resource( + css_default, + "/uk/oddmatics/wintc/comctl/default.css" + ); + + gtk_style_context_add_provider_for_screen( + gdk_screen_get_default(), + GTK_STYLE_PROVIDER(css_default), + GTK_STYLE_PROVIDER_PRIORITY_FALLBACK + ); + + already_done = TRUE; +} diff --git a/shared/comctl/src/style.h b/shared/comctl/src/style.h new file mode 100644 index 0000000..eaad482 --- /dev/null +++ b/shared/comctl/src/style.h @@ -0,0 +1,8 @@ +#ifndef __STYLE_H__ +#define __STYLE_H__ + +#define WINTC_COMCTL_BUTTON_BOX_CSS_CLASS "wintc-button-box" + +void wintc_comctl_install_default_styles(void); + +#endif diff --git a/shell/run/CMakeLists.txt b/shell/run/CMakeLists.txt index 62ff20f..e1b7ad0 100644 --- a/shell/run/CMakeLists.txt +++ b/shell/run/CMakeLists.txt @@ -23,6 +23,7 @@ include(../../packaging/cmake-inc/packaging/CMakeLists.txt) wintc_resolve_library(gdk-3.0 GDK) wintc_resolve_library(glib-2.0 GLIB) wintc_resolve_library(gtk+-3.0 GTK3) +wintc_resolve_library(wintc-comctl WINTC_COMCTL) wintc_resolve_library(wintc-comgtk WINTC_COMGTK) wintc_resolve_library(wintc-exec WINTC_EXEC) wintc_resolve_library(wintc-shllang WINTC_SHLLANG) @@ -58,6 +59,7 @@ target_include_directories( PRIVATE ${GDK_INCLUDE_DIRS} PRIVATE ${GLIB_INCLUDE_DIRS} PRIVATE ${GTK3_INCLUDE_DIRS} + PRIVATE ${WINTC_COMCTL_INCLUDE_DIRS} PRIVATE ${WINTC_COMGTK_INCLUDE_DIRS} PRIVATE ${WINTC_EXEC_INCLUDE_DIRS} PRIVATE ${WINTC_SHLLANG_INCLUDE_DIRS} @@ -68,6 +70,7 @@ target_link_directories( PRIVATE ${GDK_LIBRARY_DIRS} PRIVATE ${GLIB_LIBRARY_DIRS} PRIVATE ${GTK3_LIBRARY_DIRS} + PRIVATE ${WINTC_COMCTL_LIBRARY_DIRS} PRIVATE ${WINTC_COMGTK_LIBRARY_DIRS} PRIVATE ${WINTC_EXEC_LIBRARY_DIRS} PRIVATE ${WINTC_SHLLANG_LIBRARY_DIRS} @@ -78,6 +81,7 @@ target_link_libraries( PRIVATE ${GDK_LIBRARIES} PRIVATE ${GLIB_LIBRARIES} PRIVATE ${GTK3_LIBRARIES} + PRIVATE ${WINTC_COMCTL_LIBRARIES} PRIVATE ${WINTC_COMGTK_LIBRARIES} PRIVATE ${WINTC_EXEC_LIBRARIES} PRIVATE ${WINTC_SHLLANG_LIBRARIES} diff --git a/shell/run/README.MD b/shell/run/README.MD index a877e8d..e65c47c 100644 --- a/shell/run/README.MD +++ b/shell/run/README.MD @@ -1,7 +1,7 @@ # run This directory contains the source code for the *Run* application. -![image](https://user-images.githubusercontent.com/13258281/141702484-5c6698e3-63f2-4f53-a231-6e77aafcc8e0.png) +![Run dialog preview](preview.png) ## Keyboard Shortcut You can add `run` to a keyboard shortcut on `Win`+`R`/`super`+`R` as follows: diff --git a/shell/run/deps b/shell/run/deps index 22ae312..f77af55 100644 --- a/shell/run/deps +++ b/shell/run/deps @@ -1,5 +1,6 @@ bt,rt:glib2 bt,rt:gtk3 +bt,rt:wintc-comctl bt,rt:wintc-comgtk bt,rt:wintc-exec bt,rt:wintc-shllang diff --git a/shell/run/preview.png b/shell/run/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..76ac3a4a57f01e51ea85774db85f9fd0b8d2af93 GIT binary patch literal 14766 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 literal 0 HcmV?d00001 diff --git a/shell/run/src/application.c b/shell/run/src/application.c index 477137b..38013de 100644 --- a/shell/run/src/application.c +++ b/shell/run/src/application.c @@ -1,6 +1,7 @@ #include #include #include +#include #include #include "application.h" @@ -28,25 +29,6 @@ static void wintc_run_application_activate( GApplication* application ); -static void wintc_run_application_finalize( - GObject* object -); - -static void wintc_run_application_open( - GApplication* application, - GFile** files, - int n_files, - const gchar* hint -); - -static void wintc_run_application_startup( - GApplication* application -); - -static void wintc_run_application_shutdown( - GApplication* application -); - // // GTK TYPE DEFINITION & CTORS // @@ -57,30 +39,14 @@ static void wintc_run_application_class_init( ) { GApplicationClass* application_class = G_APPLICATION_CLASS(klass); - GObjectClass* object_class = G_OBJECT_CLASS(klass); application_class->activate = wintc_run_application_activate; - application_class->open = wintc_run_application_open; - application_class->startup = wintc_run_application_startup; - application_class->shutdown = wintc_run_application_shutdown; - - object_class->finalize = wintc_run_application_finalize; } static void wintc_run_application_init( WINTC_UNUSED(WinTCRunApplication* self) ) {} -// -// FINALIZE -// -static void wintc_run_application_finalize( - GObject* object -) -{ - (*G_OBJECT_CLASS(wintc_run_application_parent_class)->finalize) (object); -} - // // PUBLIC FUNCTIONS // @@ -109,32 +75,14 @@ static void wintc_run_application_activate( { WinTCRunApplication* run_app = WINTC_RUN_APPLICATION(application); + wintc_comctl_install_default_styles(); + + if (run_app->main_window == NULL) + { + run_app->main_window = wintc_run_dialog_new(run_app); + + gtk_widget_show_all(run_app->main_window); + } + wintc_focus_window(GTK_WINDOW(run_app->main_window)); } - -static void wintc_run_application_open( - WINTC_UNUSED(GApplication* application), - WINTC_UNUSED(GFile** files), - WINTC_UNUSED(int n_files), - WINTC_UNUSED(const gchar* hint) -) {} - -static void wintc_run_application_startup( - GApplication* application -) -{ - WinTCRunApplication* run_app = WINTC_RUN_APPLICATION(application); - - (G_APPLICATION_CLASS(wintc_run_application_parent_class))->startup(application); - - run_app->main_window = wintc_run_dialog_new(run_app); - - gtk_widget_show_all(run_app->main_window); -} - -static void wintc_run_application_shutdown( - GApplication* application -) -{ - (G_APPLICATION_CLASS(wintc_run_application_parent_class))->shutdown(application); -} diff --git a/shell/run/src/dialog.c b/shell/run/src/dialog.c index 69a83eb..7660a42 100644 --- a/shell/run/src/dialog.c +++ b/shell/run/src/dialog.c @@ -1,6 +1,7 @@ #include #include #include +#include #include #include #include @@ -217,6 +218,11 @@ static void wintc_run_dialog_init( gtk_box_pack_end(GTK_BOX(box_buttons), button_ok, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(box_outer), box_buttons, FALSE, FALSE, 0); + wintc_widget_add_style_class( + box_buttons, + WINTC_COMCTL_BUTTON_BOX_CLASS + ); + // Set OK button as default widget // gtk_window_set_default(GTK_WINDOW(self), button_ok); @@ -225,6 +231,7 @@ static void wintc_run_dialog_init( // // FIXME: This should not be done here, use screen CSS instead! // + wintc_widget_add_css(box_buttons, "box { margin: 0px; }"); wintc_widget_add_css(box_outer, "box { margin: 18px 11px 0px; }"); wintc_widget_add_css(box_instructions, "box { margin-bottom: 13px; }"); wintc_widget_add_css(box_input, "box { margin-bottom: 34px; }"); diff --git a/shell/winver/CMakeLists.txt b/shell/winver/CMakeLists.txt index e96511a..b579eb4 100644 --- a/shell/winver/CMakeLists.txt +++ b/shell/winver/CMakeLists.txt @@ -22,6 +22,7 @@ include(../../packaging/cmake-inc/packaging/CMakeLists.txt) wintc_resolve_library(gdk-pixbuf-2.0 GDK_PIXBUF) wintc_resolve_library(glib-2.0 GLIB) wintc_resolve_library(gtk+-3.0 GTK3) +wintc_resolve_library(wintc-comctl WINTC_COMCTL) wintc_resolve_library(wintc-comgtk WINTC_COMGTK) wintc_resolve_library(wintc-winbrand WINTC_WINBRAND) @@ -47,6 +48,7 @@ target_include_directories( PRIVATE ${GDK_PIXBUF_INCLUDE_DIRS} PRIVATE ${GLIB_INCLUDE_DIRS} PRIVATE ${GTK3_INCLUDE_DIRS} + PRIVATE ${WINTC_COMCTL_INCLUDE_DIRS} PRIVATE ${WINTC_COMGTK_INCLUDE_DIRS} PRIVATE ${WINTC_WINBRAND_INCLUDE_DIRS} ) @@ -56,6 +58,7 @@ target_link_directories( PRIVATE ${GDK_PIXBUF_LIBRARY_DIRS} PRIVATE ${GLIB_LIBRARY_DIRS} PRIVATE ${GTK3_LIBRARY_DIRS} + PRIVATE ${WINTC_COMCTL_LIBRARY_DIRS} PRIVATE ${WINTC_COMGTK_LIBRARY_DIRS} PRIVATE ${WINTC_WINBRAND_LIBRARY_DIRS} ) @@ -65,6 +68,7 @@ target_link_libraries( PRIVATE ${GDK_PIXBUF_LIBRARIES} PRIVATE ${GLIB_LIBRARIES} PRIVATE ${GTK3_LIBRARIES} + PRIVATE ${WINTC_COMCTL_LIBRARIES} PRIVATE ${WINTC_COMGTK_LIBRARIES} PRIVATE ${WINTC_WINBRAND_LIBRARIES} ) diff --git a/shell/winver/deps b/shell/winver/deps index 758d54c..b553690 100644 --- a/shell/winver/deps +++ b/shell/winver/deps @@ -1,5 +1,6 @@ bt,rt:gdk-pixbuf2 bt,rt:glib2 bt,rt:gtk3 +bt,rt:wintc-comctl bt,rt:wintc-comgtk bt,rt:wintc-winbrand diff --git a/shell/winver/src/winver.c b/shell/winver/src/winver.c index 126f423..2ca9b29 100644 --- a/shell/winver/src/winver.c +++ b/shell/winver/src/winver.c @@ -6,6 +6,7 @@ #include #include #include +#include #include #include @@ -60,6 +61,8 @@ int main( gtk_init(&argc, &argv); + wintc_comctl_install_default_styles(); + // Create the window // window = gtk_window_new(GTK_WINDOW_TOPLEVEL); @@ -160,11 +163,6 @@ int main( // button_ok = gtk_button_new_with_label("OK"); - apply_box_model_style(button_ok, "margin", "right", 8); - apply_box_model_style(button_ok, "margin", "bottom", 10); - apply_box_model_style(button_ok, "padding", "left", 26); - apply_box_model_style(button_ok, "padding", "right", 26); - g_signal_connect( button_ok, "clicked", @@ -191,6 +189,11 @@ int main( gtk_box_pack_end(GTK_BOX(box), box_buttons, FALSE, FALSE, 0); gtk_box_pack_end(GTK_BOX(box_buttons), button_ok, FALSE, FALSE, 0); + + wintc_widget_add_style_class( + box_buttons, + WINTC_COMCTL_BUTTON_BOX_CLASS + ); // Clear mem // diff --git a/tools/bldutils/depmap/archpkg-maps b/tools/bldutils/depmap/archpkg-maps index 8b0f50c..834c41e 100644 --- a/tools/bldutils/depmap/archpkg-maps +++ b/tools/bldutils/depmap/archpkg-maps @@ -7,6 +7,7 @@ msgfmt-->bt,rt-->gettext plymouth-->bt,rt-->plymouth python3-venv-->bt,rt-->python3 sass-->bt,rt-->ruby-sass +wintc-comctl-->bt,rt-->wintc-comctl wintc-comgtk-->bt,rt-->wintc-comgtk wintc-exec-->bt,rt-->wintc-exec wintc-shelldpa-->bt,rt-->wintc-shelldpa diff --git a/tools/bldutils/depmap/deb-maps b/tools/bldutils/depmap/deb-maps index f1b759c..82e45d8 100644 --- a/tools/bldutils/depmap/deb-maps +++ b/tools/bldutils/depmap/deb-maps @@ -12,6 +12,7 @@ msgfmt-->bt,rt-->gettext plymouth-->bt,rt-->plymouth python3-venv-->bt,rt-->python3-venv sass-->bt,rt-->ruby-sass +wintc-comctl-->bt,rt-->libwintc-comctl wintc-comgtk-->bt,rt-->libwintc-comgtk wintc-exec-->bt,rt-->libwintc-exec wintc-shelldpa-->bt,rt-->libwintc-shelldpa