MODULE hello ; (* m2-GTK4 example - the canonical GTK4 "Hello, world". A GtkApplication is created, its "activate" signal opens a window with a label, and g_application_run() drives the main loop until the window is closed. Build: make examples Run: ./build/examples/hello *) FROM Gio IMPORT g_application_run; FROM GtkApplication IMPORT gtk_application_new; FROM GtkWindow IMPORT gtk_application_window_new, gtk_window_set_title, gtk_window_set_default_size, gtk_window_set_child, gtk_window_present; FROM GtkLabel IMPORT gtk_label_new; FROM GtkUtils IMPORT Connect; FROM SYSTEM IMPORT ADDRESS, ADR; FROM libc IMPORT printf; CONST AppId = "org.example.m2gtk4.Hello"; PROCEDURE OnActivate (application: ADDRESS; data: ADDRESS); VAR window, label: ADDRESS; BEGIN window := gtk_application_window_new(application); gtk_window_set_title(window, "m2-GTK4 Hello"); gtk_window_set_default_size(window, 360, 120); label := gtk_label_new("Hello, GNU Modula-2 + GTK4!"); gtk_window_set_child(window, label); gtk_window_present(window) END OnActivate; VAR app: ADDRESS; BEGIN app := gtk_application_new(AppId, 0); IF app = NIL THEN printf("gtk_application_new failed\n"); HALT(1) END; Connect(app, "activate", ADR(OnActivate), NIL); g_application_run(app, 0, NIL) END hello.