test_filedialog.mod 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. MODULE test_filedialog ;
  2. (*
  3. m2-GTK4 test - GtkFileDialog construction and property round-trips.
  4. The dialog is not shown (no user interaction); only the getters and
  5. setters are exercised. Requires a display.
  6. *)
  7. FROM Gio IMPORT g_application_run, g_application_quit;
  8. FROM GtkApplication IMPORT gtk_application_new;
  9. FROM GtkFileDialog IMPORT gtk_file_dialog_new, gtk_file_dialog_set_title,
  10. gtk_file_dialog_get_title, gtk_file_dialog_set_modal,
  11. gtk_file_dialog_get_modal, gtk_file_dialog_set_initial_name,
  12. gtk_file_dialog_get_initial_name, gtk_file_dialog_set_accept_label,
  13. gtk_file_dialog_get_accept_label;
  14. FROM GObject IMPORT g_object_unref;
  15. FROM GtkUtils IMPORT Connect, CStrToM2;
  16. FROM SYSTEM IMPORT ADDRESS, ADR;
  17. FROM libc IMPORT printf;
  18. CONST
  19. AppId = "org.example.m2gtk4.TestFileDialog";
  20. VAR
  21. app: ADDRESS;
  22. passed: BOOLEAN;
  23. PROCEDURE OnActivate (application: ADDRESS; data: ADDRESS);
  24. VAR
  25. dialog: ADDRESS;
  26. buf: ARRAY [0..63] OF CHAR;
  27. ok: BOOLEAN;
  28. BEGIN
  29. ok := TRUE;
  30. dialog := gtk_file_dialog_new();
  31. IF dialog = NIL THEN
  32. printf("file dialog not created\n");
  33. ok := FALSE
  34. ELSE
  35. gtk_file_dialog_set_title(dialog, "Pick a file");
  36. CStrToM2(gtk_file_dialog_get_title(dialog), buf);
  37. IF (buf[0] # 'P') OR (buf[11] # 0C) THEN
  38. printf("title wrong: [%s]\n", buf);
  39. ok := FALSE
  40. END;
  41. gtk_file_dialog_set_modal(dialog, 1);
  42. IF gtk_file_dialog_get_modal(dialog) # 1 THEN ok := FALSE END;
  43. gtk_file_dialog_set_initial_name(dialog, "hello.txt");
  44. CStrToM2(gtk_file_dialog_get_initial_name(dialog), buf);
  45. IF (buf[0] # 'h') OR (buf[9] # 0C) THEN
  46. printf("initial name wrong: [%s]\n", buf);
  47. ok := FALSE
  48. END;
  49. gtk_file_dialog_set_accept_label(dialog, "Open");
  50. CStrToM2(gtk_file_dialog_get_accept_label(dialog), buf);
  51. IF (buf[0] # 'O') OR (buf[4] # 0C) THEN
  52. printf("accept label wrong: [%s]\n", buf);
  53. ok := FALSE
  54. END;
  55. g_object_unref(dialog)
  56. END;
  57. passed := ok;
  58. g_application_quit(application)
  59. END OnActivate;
  60. VAR
  61. rc: INTEGER;
  62. BEGIN
  63. passed := FALSE;
  64. app := gtk_application_new(AppId, 0);
  65. IF app = NIL THEN
  66. printf("test_filedialog: FAIL (no app)\n");
  67. HALT(1)
  68. END;
  69. Connect(app, "activate", ADR(OnActivate), NIL);
  70. rc := g_application_run(app, 0, NIL);
  71. IF passed THEN
  72. printf("test_filedialog: PASS\n");
  73. HALT(0)
  74. ELSE
  75. printf("test_filedialog: FAIL\n");
  76. HALT(1)
  77. END
  78. END test_filedialog.