| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- MODULE test_utility ;
- (*
- m2-GTK4 test - small utility/feedback widgets: GtkAdjustment,
- GtkProgressBar, GtkSpinner, GtkSeparator and GtkImage.
- 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;
- FROM GtkBox IMPORT gtk_box_new, gtk_box_append;
- FROM GtkEnums IMPORT GtkVertical, GtkHorizontal;
- FROM GtkAdjustment IMPORT gtk_adjustment_new, gtk_adjustment_get_value,
- gtk_adjustment_set_value, gtk_adjustment_get_lower, gtk_adjustment_get_upper,
- gtk_adjustment_set_upper, gtk_adjustment_get_step_increment,
- gtk_adjustment_get_page_increment, gtk_adjustment_get_page_size,
- gtk_adjustment_clamp_page;
- FROM GtkProgressBar IMPORT gtk_progress_bar_new, gtk_progress_bar_set_fraction,
- gtk_progress_bar_get_fraction, gtk_progress_bar_set_show_text,
- gtk_progress_bar_get_show_text, gtk_progress_bar_set_text,
- gtk_progress_bar_get_text, gtk_progress_bar_pulse;
- FROM GtkSpinner IMPORT gtk_spinner_new, gtk_spinner_start, gtk_spinner_stop,
- gtk_spinner_set_spinning, gtk_spinner_get_spinning;
- FROM GtkSeparator IMPORT gtk_separator_new;
- FROM GtkImage IMPORT gtk_image_new_from_icon_name, gtk_image_get_icon_name;
- FROM GtkUtils IMPORT Connect, CStrToM2;
- FROM SYSTEM IMPORT ADDRESS, ADR;
- FROM libc IMPORT printf;
- CONST
- AppId = "org.example.m2gtk4.TestUtility";
- VAR
- app: ADDRESS;
- passed: BOOLEAN;
- PROCEDURE OnActivate (application: ADDRESS; data: ADDRESS);
- VAR
- window, box, adj, pbar, spinner, sep, image: ADDRESS;
- buf: ARRAY [0..63] OF CHAR;
- ok: BOOLEAN;
- BEGIN
- ok := TRUE;
- (* --- GtkAdjustment --- *)
- adj := gtk_adjustment_new(5.0, 0.0, 100.0, 1.0, 10.0, 20.0);
- IF ABS(gtk_adjustment_get_value(adj) - 5.0) > 0.001 THEN ok := FALSE END;
- IF ABS(gtk_adjustment_get_lower(adj) - 0.0) > 0.001 THEN ok := FALSE END;
- IF ABS(gtk_adjustment_get_upper(adj) - 100.0) > 0.001 THEN ok := FALSE END;
- IF ABS(gtk_adjustment_get_step_increment(adj) - 1.0) > 0.001 THEN ok := FALSE END;
- IF ABS(gtk_adjustment_get_page_increment(adj) - 10.0) > 0.001 THEN ok := FALSE END;
- IF ABS(gtk_adjustment_get_page_size(adj) - 20.0) > 0.001 THEN ok := FALSE END;
- gtk_adjustment_set_value(adj, 50.0);
- IF ABS(gtk_adjustment_get_value(adj) - 50.0) > 0.001 THEN
- printf("adjustment value wrong\n"); ok := FALSE
- END;
- gtk_adjustment_set_upper(adj, 200.0);
- IF ABS(gtk_adjustment_get_upper(adj) - 200.0) > 0.001 THEN ok := FALSE END;
- gtk_adjustment_clamp_page(adj, 0.0, 30.0);
- (* --- GtkProgressBar --- *)
- pbar := gtk_progress_bar_new();
- gtk_progress_bar_set_fraction(pbar, 0.25);
- IF ABS(gtk_progress_bar_get_fraction(pbar) - 0.25) > 0.001 THEN
- printf("progress fraction wrong\n"); ok := FALSE
- END;
- gtk_progress_bar_set_show_text(pbar, 1);
- IF gtk_progress_bar_get_show_text(pbar) # 1 THEN ok := FALSE END;
- gtk_progress_bar_set_text(pbar, "25 percent");
- CStrToM2(gtk_progress_bar_get_text(pbar), buf);
- IF (buf[0] # '2') OR (buf[10] # 0C) THEN
- printf("progress text wrong: [%s]\n", buf); ok := FALSE
- END;
- gtk_progress_bar_pulse(pbar);
- (* --- GtkSpinner --- *)
- spinner := gtk_spinner_new();
- gtk_spinner_start(spinner);
- IF gtk_spinner_get_spinning(spinner) # 1 THEN ok := FALSE END;
- gtk_spinner_stop(spinner);
- IF gtk_spinner_get_spinning(spinner) # 0 THEN ok := FALSE END;
- gtk_spinner_set_spinning(spinner, 1);
- IF gtk_spinner_get_spinning(spinner) # 1 THEN ok := FALSE END;
- (* --- GtkSeparator / GtkImage --- *)
- sep := gtk_separator_new(GtkHorizontal);
- IF sep = NIL THEN printf("separator NIL\n"); ok := FALSE END;
- image := gtk_image_new_from_icon_name("open-menu-symbolic");
- CStrToM2(gtk_image_get_icon_name(image), buf);
- IF (buf[0] # 'o') OR (buf[18] # 0C) THEN
- printf("image icon name wrong: [%s]\n", buf); ok := FALSE
- END;
- box := gtk_box_new(GtkVertical, 6);
- gtk_box_append(box, pbar);
- gtk_box_append(box, spinner);
- gtk_box_append(box, sep);
- gtk_box_append(box, image);
- window := gtk_application_window_new(application);
- gtk_window_set_child(window, box);
- 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_utility: 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_utility: PASS\n");
- HALT(0)
- ELSE
- printf("test_utility: FAIL\n");
- HALT(1)
- END
- END test_utility.
|