| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- MODULE test_containers2 ;
- (*
- m2-GTK4 test - the second batch of containers: GtkFrame,
- GtkExpander, GtkPaned, GtkOverlay and GtkListBox/GtkListBoxRow.
- 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, GtkSelectionSingle;
- FROM GtkLabel IMPORT gtk_label_new;
- FROM GtkFrame IMPORT gtk_frame_new, gtk_frame_get_label,
- gtk_frame_set_child, gtk_frame_get_child,
- gtk_frame_set_label_align, gtk_frame_get_label_align,
- gtk_frame_set_label_widget, gtk_frame_get_label_widget;
- FROM GtkExpander IMPORT gtk_expander_new, gtk_expander_get_label,
- gtk_expander_set_expanded, gtk_expander_get_expanded,
- gtk_expander_set_resize_toplevel, gtk_expander_get_resize_toplevel,
- gtk_expander_set_child, gtk_expander_get_child;
- FROM GtkPaned IMPORT gtk_paned_new, gtk_paned_set_start_child,
- gtk_paned_get_start_child, gtk_paned_set_end_child,
- gtk_paned_get_end_child, gtk_paned_set_position, gtk_paned_get_position;
- FROM GtkOverlay IMPORT gtk_overlay_new, gtk_overlay_set_child,
- gtk_overlay_get_child, gtk_overlay_add_overlay,
- gtk_overlay_remove_overlay, gtk_overlay_set_measure_overlay,
- gtk_overlay_get_measure_overlay, gtk_overlay_set_clip_overlay,
- gtk_overlay_get_clip_overlay;
- FROM GtkListBox IMPORT gtk_list_box_new, gtk_list_box_append,
- gtk_list_box_get_row_at_index, gtk_list_box_select_row,
- gtk_list_box_get_selected_row, gtk_list_box_set_selection_mode,
- gtk_list_box_get_selection_mode, gtk_list_box_set_show_separators,
- gtk_list_box_get_show_separators, gtk_list_box_row_new,
- gtk_list_box_row_set_child, gtk_list_box_row_get_child,
- gtk_list_box_row_get_index, gtk_list_box_row_set_activatable,
- gtk_list_box_row_get_activatable, gtk_list_box_row_set_selectable,
- gtk_list_box_row_get_selectable;
- FROM GtkUtils IMPORT Connect, CStrToM2;
- FROM SYSTEM IMPORT ADDRESS, ADR;
- FROM libc IMPORT printf;
- CONST
- AppId = "org.example.m2gtk4.TestContainers2";
- VAR
- app: ADDRESS;
- passed: BOOLEAN;
- PROCEDURE OnActivate (application: ADDRESS; data: ADDRESS);
- VAR
- window, box, frame, expander, paned, overlay, listbox: ADDRESS;
- label, startLabel, stopLabel, over, row, r0, r1, r2: ADDRESS;
- buf: ARRAY [0..63] OF CHAR;
- xalign: SHORTREAL;
- ok: BOOLEAN;
- BEGIN
- ok := TRUE;
- (* --- GtkFrame --- *)
- label := gtk_label_new("child");
- frame := gtk_frame_new("Title");
- gtk_frame_set_child(frame, label);
- IF gtk_frame_get_child(frame) # label THEN
- printf("frame child wrong\n"); ok := FALSE
- END;
- CStrToM2(gtk_frame_get_label(frame), buf);
- IF (buf[0] # 'T') OR (buf[5] # 0C) THEN
- printf("frame label wrong: [%s]\n", buf); ok := FALSE
- END;
- gtk_frame_set_label_align(frame, 0.5);
- xalign := gtk_frame_get_label_align(frame);
- IF ABS(xalign - 0.5) > 0.01 THEN
- printf("frame label align wrong\n"); ok := FALSE
- END;
- gtk_frame_set_label_widget(frame, gtk_label_new("header"));
- IF gtk_frame_get_label_widget(frame) = NIL THEN ok := FALSE END;
- (* --- GtkExpander --- *)
- expander := gtk_expander_new("Section");
- gtk_expander_set_child(expander, gtk_label_new("body"));
- IF gtk_expander_get_child(expander) = NIL THEN ok := FALSE END;
- CStrToM2(gtk_expander_get_label(expander), buf);
- IF (buf[0] # 'S') OR (buf[7] # 0C) THEN
- printf("expander label wrong: [%s]\n", buf); ok := FALSE
- END;
- gtk_expander_set_expanded(expander, 1);
- IF gtk_expander_get_expanded(expander) # 1 THEN ok := FALSE END;
- gtk_expander_set_resize_toplevel(expander, 1);
- IF gtk_expander_get_resize_toplevel(expander) # 1 THEN ok := FALSE END;
- (* --- GtkPaned --- *)
- startLabel := gtk_label_new("start");
- stopLabel := gtk_label_new("end");
- paned := gtk_paned_new(GtkHorizontal);
- gtk_paned_set_start_child(paned, startLabel);
- gtk_paned_set_end_child(paned, stopLabel);
- IF gtk_paned_get_start_child(paned) # startLabel THEN ok := FALSE END;
- IF gtk_paned_get_end_child(paned) # stopLabel THEN ok := FALSE END;
- gtk_paned_set_position(paned, 120);
- IF gtk_paned_get_position(paned) # 120 THEN
- printf("paned position wrong: %d\n", gtk_paned_get_position(paned));
- ok := FALSE
- END;
- (* --- GtkOverlay --- *)
- over := gtk_label_new("overlay");
- overlay := gtk_overlay_new();
- gtk_overlay_set_child(overlay, gtk_label_new("main"));
- IF gtk_overlay_get_child(overlay) = NIL THEN ok := FALSE END;
- gtk_overlay_add_overlay(overlay, over);
- gtk_overlay_set_measure_overlay(overlay, over, 1);
- IF gtk_overlay_get_measure_overlay(overlay, over) # 1 THEN
- printf("overlay measure wrong\n"); ok := FALSE
- END;
- gtk_overlay_set_clip_overlay(overlay, over, 1);
- IF gtk_overlay_get_clip_overlay(overlay, over) # 1 THEN
- printf("overlay clip wrong\n"); ok := FALSE
- END;
- gtk_overlay_remove_overlay(overlay, over);
- (* --- GtkListBox + GtkListBoxRow --- *)
- listbox := gtk_list_box_new();
- gtk_list_box_set_selection_mode(listbox, GtkSelectionSingle);
- IF gtk_list_box_get_selection_mode(listbox) # GtkSelectionSingle THEN
- ok := FALSE
- END;
- r0 := gtk_list_box_row_new();
- gtk_list_box_row_set_child(r0, gtk_label_new("row 0"));
- r1 := gtk_list_box_row_new();
- gtk_list_box_row_set_child(r1, gtk_label_new("row 1"));
- r2 := gtk_list_box_row_new();
- gtk_list_box_row_set_child(r2, gtk_label_new("row 2"));
- gtk_list_box_append(listbox, r0);
- gtk_list_box_append(listbox, r1);
- gtk_list_box_append(listbox, r2);
- row := gtk_list_box_get_row_at_index(listbox, 1);
- IF row # r1 THEN
- printf("listbox row-at-index wrong\n"); ok := FALSE
- END;
- IF gtk_list_box_row_get_index(r1) # 1 THEN
- printf("listbox row index wrong\n"); ok := FALSE
- END;
- gtk_list_box_row_set_selectable(r1, 1);
- IF gtk_list_box_row_get_selectable(r1) # 1 THEN ok := FALSE END;
- gtk_list_box_row_set_activatable(r1, 0);
- IF gtk_list_box_row_get_activatable(r1) # 0 THEN ok := FALSE END;
- gtk_list_box_select_row(listbox, r1);
- IF gtk_list_box_get_selected_row(listbox) # r1 THEN
- printf("listbox selected row wrong\n"); ok := FALSE
- END;
- gtk_list_box_set_show_separators(listbox, 1);
- IF gtk_list_box_get_show_separators(listbox) # 1 THEN ok := FALSE END;
- (* assemble into a window *)
- box := gtk_box_new(GtkVertical, 4);
- gtk_box_append(box, frame);
- gtk_box_append(box, expander);
- gtk_box_append(box, paned);
- gtk_box_append(box, listbox);
- 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_containers2: 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_containers2: PASS\n");
- HALT(0)
- ELSE
- printf("test_containers2: FAIL\n");
- HALT(1)
- END
- END test_containers2.
|