| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- MODULE test_css ;
- (*
- m2-GTK4 test - CSS styling: GtkCssProvider + provider-for-display +
- per-widget CSS classes. 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 GtkWidget IMPORT gtk_widget_add_css_class, gtk_widget_remove_css_class,
- gtk_widget_has_css_class;
- FROM GtkLabel IMPORT gtk_label_new;
- FROM GtkCssProvider IMPORT gtk_css_provider_new,
- gtk_css_provider_load_from_string;
- FROM GtkStyleContext IMPORT gtk_style_context_add_provider_for_display,
- gtk_style_context_remove_provider_for_display,
- GtkStyleProviderPriorityApplication;
- FROM Gdk IMPORT gdk_display_get_default;
- FROM GtkUtils IMPORT Connect, Unref;
- FROM SYSTEM IMPORT ADDRESS, ADR;
- FROM libc IMPORT printf;
- CONST
- AppId = "org.example.m2gtk4.TestCss";
- VAR
- app: ADDRESS;
- passed: BOOLEAN;
- PROCEDURE OnActivate (application: ADDRESS; data: ADDRESS);
- VAR
- window, label, provider, display: ADDRESS;
- ok: BOOLEAN;
- BEGIN
- ok := TRUE;
- provider := gtk_css_provider_new();
- gtk_css_provider_load_from_string (provider,
- ".m2card { color: red; }");
- display := gdk_display_get_default();
- gtk_style_context_add_provider_for_display (display, provider,
- GtkStyleProviderPriorityApplication);
- label := gtk_label_new("styled");
- gtk_widget_add_css_class(label, "m2card");
- IF gtk_widget_has_css_class(label, "m2card") = 0 THEN
- printf("css class not applied\n");
- ok := FALSE
- END;
- gtk_widget_remove_css_class(label, "m2card");
- IF gtk_widget_has_css_class(label, "m2card") # 0 THEN
- printf("css class not removed\n");
- ok := FALSE
- END;
- gtk_style_context_remove_provider_for_display (display, provider);
- Unref(provider);
- window := gtk_application_window_new(application);
- gtk_window_set_child(window, label);
- 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_css: 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_css: PASS\n");
- HALT(0)
- ELSE
- printf("test_css: FAIL\n");
- HALT(1)
- END
- END test_css.
|