| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- MODULE test_dialogs ;
- (*
- m2-GTK4 test - modern dialogs: GtkAlertDialog and GtkColorDialog
- property round-trips (dialogues are not shown). Requires a display.
- *)
- FROM Gio IMPORT g_application_run, g_application_quit;
- FROM GtkApplication IMPORT gtk_application_new;
- FROM GtkAlertDialog IMPORT gtk_alert_dialog_new,
- gtk_alert_dialog_set_message, gtk_alert_dialog_get_message,
- gtk_alert_dialog_set_detail, gtk_alert_dialog_get_detail,
- gtk_alert_dialog_set_buttons, gtk_alert_dialog_get_buttons,
- gtk_alert_dialog_set_cancel_button, gtk_alert_dialog_get_cancel_button,
- gtk_alert_dialog_set_default_button, gtk_alert_dialog_get_default_button,
- gtk_alert_dialog_set_modal, gtk_alert_dialog_get_modal;
- FROM GtkColorDialog IMPORT gtk_color_dialog_new,
- gtk_color_dialog_set_title, gtk_color_dialog_get_title,
- gtk_color_dialog_set_modal, gtk_color_dialog_set_with_alpha;
- FROM GtkUtils IMPORT Connect, CStrToM2, Unref;
- FROM SYSTEM IMPORT ADDRESS, ADR;
- FROM libc IMPORT printf;
- CONST
- AppId = "org.example.m2gtk4.TestDialogs";
- VAR
- app: ADDRESS;
- passed: BOOLEAN;
- PROCEDURE OnActivate (application: ADDRESS; data: ADDRESS);
- VAR
- alert, color: ADDRESS;
- buf: ARRAY [0..63] OF CHAR;
- s0, s1: ARRAY [0..7] OF CHAR;
- buttons: ARRAY [0..2] OF ADDRESS;
- ok: BOOLEAN;
- BEGIN
- ok := TRUE;
- (* --- GtkAlertDialog --- *)
- alert := gtk_alert_dialog_new("Heads up");
- CStrToM2(gtk_alert_dialog_get_message(alert), buf);
- IF (buf[0] # 'H') OR (buf[8] # 0C) THEN
- printf("alert message wrong: [%s]\n", buf); ok := FALSE
- END;
- gtk_alert_dialog_set_message(alert, "Changed");
- CStrToM2(gtk_alert_dialog_get_message(alert), buf);
- IF (buf[0] # 'C') OR (buf[7] # 0C) THEN ok := FALSE END;
- gtk_alert_dialog_set_detail(alert, "More info");
- CStrToM2(gtk_alert_dialog_get_detail(alert), buf);
- IF (buf[0] # 'M') OR (buf[9] # 0C) THEN ok := FALSE END;
- s0 := "OK";
- s1 := "Cancel";
- buttons[0] := ADR(s0);
- buttons[1] := ADR(s1);
- buttons[2] := NIL;
- gtk_alert_dialog_set_buttons(alert, ADR(buttons));
- IF gtk_alert_dialog_get_buttons(alert) = NIL THEN
- printf("alert buttons not set\n"); ok := FALSE
- END;
- gtk_alert_dialog_set_default_button(alert, 0);
- IF gtk_alert_dialog_get_default_button(alert) # 0 THEN ok := FALSE END;
- gtk_alert_dialog_set_cancel_button(alert, 1);
- IF gtk_alert_dialog_get_cancel_button(alert) # 1 THEN ok := FALSE END;
- gtk_alert_dialog_set_modal(alert, 1);
- IF gtk_alert_dialog_get_modal(alert) # 1 THEN ok := FALSE END;
- (* --- GtkColorDialog --- *)
- color := gtk_color_dialog_new();
- gtk_color_dialog_set_title(color, "Pick a colour");
- CStrToM2(gtk_color_dialog_get_title(color), buf);
- IF (buf[0] # 'P') OR (buf[13] # 0C) THEN
- printf("color title wrong: [%s]\n", buf); ok := FALSE
- END;
- gtk_color_dialog_set_modal(color, 1);
- gtk_color_dialog_set_with_alpha(color, 1);
- Unref(alert);
- Unref(color);
- 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_dialogs: 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_dialogs: PASS\n");
- HALT(0)
- ELSE
- printf("test_dialogs: FAIL\n");
- HALT(1)
- END
- END test_dialogs.
|