MODULE test_filedialog ; (* m2-GTK4 test - GtkFileDialog construction and property round-trips. The dialog is not shown (no user interaction); only the getters and setters are exercised. Requires a display. *) FROM Gio IMPORT g_application_run, g_application_quit; FROM GtkApplication IMPORT gtk_application_new; FROM GtkFileDialog IMPORT gtk_file_dialog_new, gtk_file_dialog_set_title, gtk_file_dialog_get_title, gtk_file_dialog_set_modal, gtk_file_dialog_get_modal, gtk_file_dialog_set_initial_name, gtk_file_dialog_get_initial_name, gtk_file_dialog_set_accept_label, gtk_file_dialog_get_accept_label; FROM GObject IMPORT g_object_unref; FROM GtkUtils IMPORT Connect, CStrToM2; FROM SYSTEM IMPORT ADDRESS, ADR; FROM libc IMPORT printf; CONST AppId = "org.example.m2gtk4.TestFileDialog"; VAR app: ADDRESS; passed: BOOLEAN; PROCEDURE OnActivate (application: ADDRESS; data: ADDRESS); VAR dialog: ADDRESS; buf: ARRAY [0..63] OF CHAR; ok: BOOLEAN; BEGIN ok := TRUE; dialog := gtk_file_dialog_new(); IF dialog = NIL THEN printf("file dialog not created\n"); ok := FALSE ELSE gtk_file_dialog_set_title(dialog, "Pick a file"); CStrToM2(gtk_file_dialog_get_title(dialog), buf); IF (buf[0] # 'P') OR (buf[11] # 0C) THEN printf("title wrong: [%s]\n", buf); ok := FALSE END; gtk_file_dialog_set_modal(dialog, 1); IF gtk_file_dialog_get_modal(dialog) # 1 THEN ok := FALSE END; gtk_file_dialog_set_initial_name(dialog, "hello.txt"); CStrToM2(gtk_file_dialog_get_initial_name(dialog), buf); IF (buf[0] # 'h') OR (buf[9] # 0C) THEN printf("initial name wrong: [%s]\n", buf); ok := FALSE END; gtk_file_dialog_set_accept_label(dialog, "Open"); CStrToM2(gtk_file_dialog_get_accept_label(dialog), buf); IF (buf[0] # 'O') OR (buf[4] # 0C) THEN printf("accept label wrong: [%s]\n", buf); ok := FALSE END; g_object_unref(dialog) END; 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_filedialog: 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_filedialog: PASS\n"); HALT(0) ELSE printf("test_filedialog: FAIL\n"); HALT(1) END END test_filedialog.