ui/gtk/display.c

branch
newapi
changeset 352
1b4aae4e8432
parent 319
050ceb8ecf44
child 358
98b26a19cbeb
equal deleted inserted replaced
351:63db7e35e2e9 352:1b4aae4e8432
33 #include "container.h" 33 #include "container.h"
34 #include "../common/context.h" 34 #include "../common/context.h"
35 #include "../common/object.h" 35 #include "../common/object.h"
36 #include "../ui/display.h" 36 #include "../ui/display.h"
37 37
38 #include <cx/printf.h>
39
38 static void set_alignment(GtkWidget *widget, float xalign, float yalign) { 40 static void set_alignment(GtkWidget *widget, float xalign, float yalign) {
39 #if GTK_MAJOR_VERSION >= 4 || (GTK_MAJOR_VERSION >= 3 && GTK_MINOR_VERSION >= 16) 41 #if GTK_MAJOR_VERSION >= 4 || (GTK_MAJOR_VERSION >= 3 && GTK_MINOR_VERSION >= 16)
40 gtk_label_set_xalign(GTK_LABEL(widget), xalign); 42 gtk_label_set_xalign(GTK_LABEL(widget), xalign);
41 gtk_label_set_yalign(GTK_LABEL(widget), yalign); 43 gtk_label_set_yalign(GTK_LABEL(widget), yalign);
42 #else 44 #else
45 } 47 }
46 48
47 UIWIDGET ui_label_create(UiObject *obj, UiLabelArgs args) { 49 UIWIDGET ui_label_create(UiObject *obj, UiLabelArgs args) {
48 UiObject* current = uic_current_obj(obj); 50 UiObject* current = uic_current_obj(obj);
49 51
52 const char *css_class = NULL;
53 char *markup = NULL;
54 #if GTK_MAJOR_VERSION < 3
55 switch(args.type && args.label) {
56 case UI_LABEL_STYLE_DEFAULT: break;
57 case UI_LABEL_STYLE_HEADING: {
58 cxmutstr m = cx_asprintf("<b>%s</b>", args.label);
59 markup = m.ptr;
60 args.label = NULL;
61 }
62 }
63 #else
64 switch(args.type && args.label) {
65 case UI_LABEL_STYLE_DEFAULT: break;
66 case UI_LABEL_STYLE_HEADING: {
67 css_class = "ui_label_heading";
68 break;
69 }
70 }
71 #endif
72
50 GtkWidget *widget = gtk_label_new(args.label); 73 GtkWidget *widget = gtk_label_new(args.label);
74 if(markup) {
75 gtk_label_set_markup(GTK_LABEL(widget), markup);
76 free(markup);
77 }
78
79 if(css_class) {
80 WIDGET_ADD_CSS_CLASS(widget, css_class);
81 }
82
51 switch(args.align) { 83 switch(args.align) {
52 case UI_ALIGN_DEFAULT: break; 84 case UI_ALIGN_DEFAULT: break;
53 case UI_ALIGN_LEFT: set_alignment(widget, 0, .5); break; 85 case UI_ALIGN_LEFT: set_alignment(widget, 0, .5); break;
54 case UI_ALIGN_RIGHT: set_alignment(widget, 1, .5); break; 86 case UI_ALIGN_RIGHT: set_alignment(widget, 1, .5); break;
55 case UI_ALIGN_CENTER: break; // TODO 87 case UI_ALIGN_CENTER: break; // TODO
56 } 88 }
57 89
90
58 UiVar* var = uic_widget_var(obj->ctx, current->ctx, args.value, args.varname, UI_VAR_STRING); 91 UiVar* var = uic_widget_var(obj->ctx, current->ctx, args.value, args.varname, UI_VAR_STRING);
59 if(var) { 92 if(var) {
60 UiString* value = (UiString*)var->value; 93 UiString* value = (UiString*)var->value;
61 value->obj = widget; 94 value->obj = widget;
62 value->get = ui_label_get; 95 value->get = ui_label_get;

mercurial