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), Module application.c, gl.c, button.c, …
  • Build: cmake -S . -B build && cmake --build build; Einbindung <gui/gui.h>

Verwandte Artikel