| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- MODULE test_print ;
- (*
- m2-GTK4 test - printing objects: GtkPageSetup, GtkPrintSettings and
- GtkPrintOperation property round-trips (the print dialog is not
- shown). Requires a display (GTK initialised).
- *)
- FROM Gio IMPORT g_application_run, g_application_quit;
- FROM GtkApplication IMPORT gtk_application_new;
- FROM GtkPageSetup IMPORT gtk_page_setup_new, gtk_page_setup_set_orientation,
- gtk_page_setup_get_orientation, gtk_page_setup_get_page_width,
- GtkPageLandscape, GtkUnitPoints;
- FROM GtkPrintSettings IMPORT gtk_print_settings_new, gtk_print_settings_set,
- gtk_print_settings_get, gtk_print_settings_set_printer;
- FROM GtkPrintOperation IMPORT gtk_print_operation_new,
- gtk_print_operation_set_n_pages,
- gtk_print_operation_set_default_page_setup,
- gtk_print_operation_get_default_page_setup,
- gtk_print_operation_set_print_settings,
- gtk_print_operation_get_print_settings;
- 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.TestPrint";
- VAR
- app: ADDRESS;
- passed: BOOLEAN;
- PROCEDURE OnActivate (application: ADDRESS; data: ADDRESS);
- VAR
- setup, settings, op: ADDRESS;
- buf: ARRAY [0..63] OF CHAR;
- width: REAL;
- ok: BOOLEAN;
- BEGIN
- ok := TRUE;
- setup := gtk_page_setup_new();
- gtk_page_setup_set_orientation(setup, GtkPageLandscape);
- IF gtk_page_setup_get_orientation(setup) # GtkPageLandscape THEN
- printf("orientation wrong\n"); ok := FALSE
- END;
- width := gtk_page_setup_get_page_width(setup, GtkUnitPoints);
- IF width <= 0.0 THEN printf("page width wrong\n"); ok := FALSE END;
- settings := gtk_print_settings_new();
- gtk_print_settings_set(settings, "test-key", "test-value");
- CStrToM2(gtk_print_settings_get(settings, "test-key"), buf);
- IF (buf[0] # 't') OR (buf[10] # 0C) THEN
- printf("settings value wrong: [%s]\n", buf); ok := FALSE
- END;
- gtk_print_settings_set_printer(settings, "MyPrinter");
- op := gtk_print_operation_new();
- gtk_print_operation_set_n_pages(op, 3);
- gtk_print_operation_set_default_page_setup(op, setup);
- IF gtk_print_operation_get_default_page_setup(op) # setup THEN
- printf("page setup round-trip wrong\n"); ok := FALSE
- END;
- gtk_print_operation_set_print_settings(op, settings);
- IF gtk_print_operation_get_print_settings(op) # settings THEN
- printf("settings round-trip wrong\n"); ok := FALSE
- END;
- g_object_unref(op);
- 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_print: 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_print: PASS\n");
- HALT(0)
- ELSE
- printf("test_print: FAIL\n");
- HALT(1)
- END
- END test_print.
|