diff -r 6bd37fe6d905 -r ee4e4742391e ui/gtk/display.c --- a/ui/gtk/display.c Wed Oct 23 21:46:43 2024 +0200 +++ b/ui/gtk/display.c Sun Oct 27 18:24:37 2024 +0100 @@ -35,6 +35,8 @@ #include "../common/object.h" #include "../ui/display.h" +#include + static void set_alignment(GtkWidget *widget, float xalign, float yalign) { #if GTK_MAJOR_VERSION >= 4 || (GTK_MAJOR_VERSION >= 3 && GTK_MINOR_VERSION >= 16) gtk_label_set_xalign(GTK_LABEL(widget), xalign); @@ -47,7 +49,54 @@ UIWIDGET ui_label_create(UiObject *obj, UiLabelArgs args) { UiObject* current = uic_current_obj(obj); + const char *css_class = NULL; + char *markup = NULL; + if(args.label) { + #if GTK_MAJOR_VERSION < 3 + switch(args.style) { + case UI_LABEL_STYLE_DEFAULT: break; + case UI_LABEL_STYLE_TITLE: { + cxmutstr m = cx_asprintf("%s", args.label); + markup = m.ptr; + args.label = NULL; + } + case UI_LABEL_STYLE_SUBTITLE: { + break; + } + case UI_LABEL_STYLE_DIM: { + break; + } + } +# else + switch(args.style) { + case UI_LABEL_STYLE_DEFAULT: break; + case UI_LABEL_STYLE_TITLE: { + css_class = "ui_label_title"; + break; + } + case UI_LABEL_STYLE_SUBTITLE: { + css_class = "subtitle"; + break; + } + case UI_LABEL_STYLE_DIM: { + css_class = "dim-label"; + break; + } + } +# endif + } + + GtkWidget *widget = gtk_label_new(args.label); + if(markup) { + gtk_label_set_markup(GTK_LABEL(widget), markup); + free(markup); + } + + if(css_class) { + WIDGET_ADD_CSS_CLASS(widget, css_class); + } + switch(args.align) { case UI_ALIGN_DEFAULT: break; case UI_ALIGN_LEFT: set_alignment(widget, 0, .5); break; @@ -55,6 +104,7 @@ case UI_ALIGN_CENTER: break; // TODO } + UiVar* var = uic_widget_var(obj->ctx, current->ctx, args.value, args.varname, UI_VAR_STRING); if(var) { UiString* value = (UiString*)var->value;