gui – GTK-Widget-Bibliothek mit App-Hooks
Zusammenfassung
Wiederverwendbare GTK-UI-Bibliothek: Der Ablauf (GTK-Signale,
Event-Dispatcher, Rendering-Pipeline) liegt als Skelett in der
Bibliothek, die Anwendung implementiert nur die überschreibbaren
Weak-Callbacks (Muster aus api). Ergebnis: C++-artige „virtuelle” Hooks
ohne OOP.
Umfang
- Widgets/Komponenten:
gui_application,gui_main_window,gui_gl(GLArea/OpenGL),gui_drawing_area(Cairo),gui_frame,gui_box,gui_text,gui_button,gui_notebook. - Zentrales Event-Modell
struct gui_event+gui_event_type_t(Startup/Activate/Shutdown, Key, Draw, Click/Toggle, GL-Render/Realize). - Widgets intern registriert (
_gui_add_widget_to_internal_list) und Core-referenziert (_gui_get_core) –protected-Interna der Bibliothek.
Callback-Muster (via api)
Die Anwendung definiert die weak-Defaults der Bibliothek stark:
/* Bibliothek: weak-Default per callback_declaration */
callback_declaration(bool, gui_application(gui_event_type_t event, gui_application_t core));
/* Anwendung: starke Definition überschreibt das weak-Symbol */
callback bool gui_application(gui_event_type_t event, gui_application_t core) { /* ... */ return true; }Abhängigkeiten
api(Callback-/Sichtbarkeits-Makros),threading,string,logging- System: GTK3 (
gtk+-3.0), OpenGL/epoxy
Quellen
- Repo: https://github.com/deppenkaiser/gui (public, Apache-2.0)
libraries/gui/gui/gui.h(Umbrella), Moduleapplication.c,gl.c,button.c, …- Build:
cmake -S . -B build && cmake --build build; Einbindung<gui/gui.h>
Verwandte Artikel
- api – C++-ähnliche Lesbarkeit in C – die Makros, die
guiproduktiv nutzt - iwt – Referenzprojekt der Modul-Architektur –
gui-Hooks stark definiert (gui_application, gui_main_window, gui_button, gui_gl)