| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- MODULE test_shortcuts ;
- (*
- m2-GTK4 test - shortcuts: trigger/action parsing, GtkShortcut and
- GtkShortcutController. Requires a display.
- *)
- FROM Gio IMPORT g_application_run, g_application_quit;
- FROM GtkApplication IMPORT gtk_application_new;
- FROM GtkWindow IMPORT gtk_application_window_new, gtk_window_set_child,
- gtk_window_present;
- FROM GtkLabel IMPORT gtk_label_new;
- FROM GtkWidget IMPORT gtk_widget_add_controller;
- FROM GtkShortcut IMPORT gtk_shortcut_new, gtk_shortcut_get_trigger,
- gtk_shortcut_get_action, gtk_shortcut_trigger_parse_string,
- gtk_named_action_new;
- FROM GtkShortcutController IMPORT gtk_shortcut_controller_new,
- gtk_shortcut_controller_add_shortcut,
- gtk_shortcut_controller_remove_shortcut,
- gtk_shortcut_controller_set_scope, GtkShortcutScopeLocal;
- FROM GtkUtils IMPORT Connect;
- FROM SYSTEM IMPORT ADDRESS, ADR;
- FROM libc IMPORT printf;
- CONST
- AppId = "org.example.m2gtk4.TestShortcuts";
- VAR
- app: ADDRESS;
- passed: BOOLEAN;
- PROCEDURE OnActivate (application: ADDRESS; data: ADDRESS);
- VAR
- window, label, controller, trigger, action, shortcut: ADDRESS;
- ok: BOOLEAN;
- BEGIN
- ok := TRUE;
- controller := gtk_shortcut_controller_new();
- IF controller = NIL THEN printf("controller NIL\n"); ok := FALSE END;
- gtk_shortcut_controller_set_scope(controller, GtkShortcutScopeLocal);
- trigger := gtk_shortcut_trigger_parse_string("<Control>q");
- IF trigger = NIL THEN printf("trigger NIL\n"); ok := FALSE END;
- action := gtk_named_action_new("app.quit");
- IF action = NIL THEN printf("action NIL\n"); ok := FALSE END;
- shortcut := gtk_shortcut_new(trigger, action);
- IF shortcut = NIL THEN printf("shortcut NIL\n"); ok := FALSE END;
- IF gtk_shortcut_get_trigger(shortcut) # trigger THEN
- printf("shortcut trigger wrong\n"); ok := FALSE
- END;
- IF gtk_shortcut_get_action(shortcut) # action THEN
- printf("shortcut action wrong\n"); ok := FALSE
- END;
- gtk_shortcut_controller_add_shortcut(controller, shortcut);
- gtk_shortcut_controller_remove_shortcut(controller, shortcut);
- label := gtk_label_new("press Ctrl+Q");
- gtk_widget_add_controller(label, controller);
- window := gtk_application_window_new(application);
- gtk_window_set_child(window, label);
- gtk_window_present(window);
- passed := ok;
- g_application_quit(application)
- END OnActivate;
- VAR
- rc: INTEGER;
- BEGIN
- passed := FALSE;
- app := gtk_application_new(AppId, 0);
- IF app = NIL THEN
- printf("test_shortcuts: FAIL (no app)\n");
- HALT(1)
- END;
- Connect(app, "activate", ADR(OnActivate), NIL);
- rc := g_application_run(app, 0, NIL);
- IF passed THEN
- printf("test_shortcuts: PASS\n");
- HALT(0)
- ELSE
- printf("test_shortcuts: FAIL\n");
- HALT(1)
- END
- END test_shortcuts.
|