ui/gtk/display.c

branch
newapi
changeset 352
1b4aae4e8432
parent 319
050ceb8ecf44
child 358
98b26a19cbeb
--- a/ui/gtk/display.c	Fri Oct 25 15:44:39 2024 +0200
+++ b/ui/gtk/display.c	Sun Oct 27 08:25:15 2024 +0100
@@ -35,6 +35,8 @@
 #include "../common/object.h"
 #include "../ui/display.h"
 
+#include <cx/printf.h>
+
 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,37 @@
 UIWIDGET ui_label_create(UiObject *obj, UiLabelArgs args) {
     UiObject* current = uic_current_obj(obj);
     
+    const char *css_class = NULL;
+    char *markup = NULL;
+#if GTK_MAJOR_VERSION < 3
+    switch(args.type && args.label) {
+        case UI_LABEL_STYLE_DEFAULT: break;
+        case UI_LABEL_STYLE_HEADING: {
+            cxmutstr m = cx_asprintf("<b>%s</b>", args.label);
+            markup = m.ptr;
+            args.label = NULL;
+        }
+    }
+#else
+    switch(args.type && args.label) {
+        case UI_LABEL_STYLE_DEFAULT: break;
+        case UI_LABEL_STYLE_HEADING: {
+            css_class = "ui_label_heading";
+            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 +87,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;

mercurial