| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- MODULE test_widgets3 ;
- (*
- m2-GTK4 test - common widgets: GtkFlowBox, GtkFixed, GtkPicture,
- GtkToggleButton, GtkLinkButton, GtkCalendar, GtkLevelBar and
- GtkScrollbar. 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 GtkLabel IMPORT gtk_label_new;
- FROM GtkEnums IMPORT GtkVertical, GtkHorizontal, GtkSelectionSingle;
- FROM GtkFlowBox IMPORT gtk_flow_box_new, gtk_flow_box_append,
- gtk_flow_box_set_max_children_per_line, gtk_flow_box_set_selection_mode,
- gtk_flow_box_child_new, gtk_flow_box_child_set_child;
- FROM GtkFixed IMPORT gtk_fixed_new, gtk_fixed_put;
- FROM GtkPicture IMPORT gtk_picture_new, gtk_picture_set_can_shrink,
- gtk_picture_set_content_fit, GtkContentFitContain;
- FROM GtkToggleButton IMPORT gtk_toggle_button_new_with_label,
- gtk_toggle_button_set_active, gtk_toggle_button_get_active;
- FROM GtkLinkButton IMPORT gtk_link_button_new, gtk_link_button_get_uri;
- FROM GtkCalendar IMPORT gtk_calendar_new;
- FROM GtkLevelBar IMPORT gtk_level_bar_new, gtk_level_bar_set_value,
- gtk_level_bar_get_value;
- FROM GtkScrollbar IMPORT gtk_scrollbar_new;
- FROM GtkUtils IMPORT Connect, CStrToM2;
- FROM SYSTEM IMPORT ADDRESS, ADR;
- FROM libc IMPORT printf;
- CONST
- AppId = "org.example.m2gtk4.TestWidgets3";
- VAR
- app: ADDRESS;
- passed: BOOLEAN;
- PROCEDURE OnActivate (application: ADDRESS; data: ADDRESS);
- VAR
- window, box, flow, child, fixed, picture, toggle, link, calendar,
- level, scrollbar: ADDRESS;
- buf: ARRAY [0..63] OF CHAR;
- ok: BOOLEAN;
- BEGIN
- ok := TRUE;
- flow := gtk_flow_box_new();
- gtk_flow_box_append(flow, gtk_label_new("a"));
- gtk_flow_box_append(flow, gtk_label_new("b"));
- child := gtk_flow_box_child_new();
- gtk_flow_box_child_set_child(child, gtk_label_new("c"));
- gtk_flow_box_append(flow, child);
- gtk_flow_box_set_max_children_per_line(flow, 3);
- gtk_flow_box_set_selection_mode(flow, GtkSelectionSingle);
- fixed := gtk_fixed_new();
- gtk_fixed_put(fixed, gtk_label_new("at 10,20"), 10.0, 20.0);
- picture := gtk_picture_new();
- gtk_picture_set_can_shrink(picture, 1);
- gtk_picture_set_content_fit(picture, GtkContentFitContain);
- toggle := gtk_toggle_button_new_with_label("Toggle");
- gtk_toggle_button_set_active(toggle, 1);
- IF gtk_toggle_button_get_active(toggle) # 1 THEN
- printf("toggle active wrong\n"); ok := FALSE
- END;
- link := gtk_link_button_new("https://example.org");
- CStrToM2(gtk_link_button_get_uri(link), buf);
- IF (buf[0] # 'h') OR (buf[4] # 's') OR (buf[19] # 0C) THEN
- printf("link uri wrong: [%s]\n", buf); ok := FALSE
- END;
- calendar := gtk_calendar_new();
- IF calendar = NIL THEN printf("calendar NIL\n"); ok := FALSE END;
- level := gtk_level_bar_new();
- gtk_level_bar_set_value(level, 0.5);
- IF ABS(gtk_level_bar_get_value(level) - 0.5) > 0.001 THEN
- printf("level value wrong\n"); ok := FALSE
- END;
- scrollbar := gtk_scrollbar_new(GtkHorizontal, NIL);
- IF scrollbar = NIL THEN printf("scrollbar NIL\n"); ok := FALSE END;
- box := gtk_box_new(GtkVertical, 6);
- gtk_box_append(box, flow);
- gtk_box_append(box, fixed);
- gtk_box_append(box, picture);
- gtk_box_append(box, toggle);
- gtk_box_append(box, link);
- gtk_box_append(box, calendar);
- gtk_box_append(box, level);
- gtk_box_append(box, scrollbar);
- 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_widgets3: 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_widgets3: PASS\n");
- HALT(0)
- ELSE
- printf("test_widgets3: FAIL\n");
- HALT(1)
- END
- END test_widgets3.
|