hello.mod 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. MODULE hello ;
  2. (*
  3. m2-GTK4 example - the canonical GTK4 "Hello, world".
  4. A GtkApplication is created, its "activate" signal opens a window
  5. with a label, and g_application_run() drives the main loop until the
  6. window is closed.
  7. Build: make examples
  8. Run: ./build/examples/hello
  9. *)
  10. FROM Gio IMPORT g_application_run;
  11. FROM GtkApplication IMPORT gtk_application_new;
  12. FROM GtkWindow IMPORT gtk_application_window_new, gtk_window_set_title,
  13. gtk_window_set_default_size, gtk_window_set_child, gtk_window_present;
  14. FROM GtkLabel IMPORT gtk_label_new;
  15. FROM GtkUtils IMPORT Connect;
  16. FROM SYSTEM IMPORT ADDRESS, ADR;
  17. FROM libc IMPORT printf;
  18. CONST
  19. AppId = "org.example.m2gtk4.Hello";
  20. PROCEDURE OnActivate (application: ADDRESS; data: ADDRESS);
  21. VAR
  22. window, label: ADDRESS;
  23. BEGIN
  24. window := gtk_application_window_new(application);
  25. gtk_window_set_title(window, "m2-GTK4 Hello");
  26. gtk_window_set_default_size(window, 360, 120);
  27. label := gtk_label_new("Hello, GNU Modula-2 + GTK4!");
  28. gtk_window_set_child(window, label);
  29. gtk_window_present(window)
  30. END OnActivate;
  31. VAR
  32. app: ADDRESS;
  33. BEGIN
  34. app := gtk_application_new(AppId, 0);
  35. IF app = NIL THEN
  36. printf("gtk_application_new failed\n");
  37. HALT(1)
  38. END;
  39. Connect(app, "activate", ADR(OnActivate), NIL);
  40. g_application_run(app, 0, NIL)
  41. END hello.