ui/gtk/display.c

Wed, 10 Jun 2026 18:04:30 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Wed, 10 Jun 2026 18:04:30 +0200
changeset 1188
92841501de20
parent 1063
e0251f6e15f7
permissions
-rw-r--r--

add separate app init func, that is called before startup, to improve menu initialization order on some platforms

65
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
1 /*
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
3 *
140
c03c338a7dcf refactors value binding system
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
4 * Copyright 2017 Olaf Wintermann. All rights reserved.
65
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
5 *
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
6 * Redistribution and use in source and binary forms, with or without
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
7 * modification, are permitted provided that the following conditions are met:
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
8 *
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
9 * 1. Redistributions of source code must retain the above copyright
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
10 * notice, this list of conditions and the following disclaimer.
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
11 *
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
12 * 2. Redistributions in binary form must reproduce the above copyright
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
13 * notice, this list of conditions and the following disclaimer in the
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
14 * documentation and/or other materials provided with the distribution.
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
15 *
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
26 * POSSIBILITY OF SUCH DAMAGE.
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
27 */
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
28
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
29 #include <stdio.h>
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
30 #include <stdlib.h>
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
31
149
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
32 #include "display.h"
65
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
33 #include "container.h"
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
34 #include "../common/context.h"
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
35 #include "../common/object.h"
261
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
36 #include "../ui/display.h"
65
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
37
352
1b4aae4e8432 add label style option (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 319
diff changeset
38 #include <cx/printf.h>
1b4aae4e8432 add label style option (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 319
diff changeset
39
148
4e0b38bbd6c4 replaces usage of some deprecated functions (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 140
diff changeset
40 static void set_alignment(GtkWidget *widget, float xalign, float yalign) {
298
c5e207d01ff2 port button, text to gtk4
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 272
diff changeset
41 #if GTK_MAJOR_VERSION >= 4 || (GTK_MAJOR_VERSION >= 3 && GTK_MINOR_VERSION >= 16)
148
4e0b38bbd6c4 replaces usage of some deprecated functions (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 140
diff changeset
42 gtk_label_set_xalign(GTK_LABEL(widget), xalign);
4e0b38bbd6c4 replaces usage of some deprecated functions (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 140
diff changeset
43 gtk_label_set_yalign(GTK_LABEL(widget), yalign);
4e0b38bbd6c4 replaces usage of some deprecated functions (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 140
diff changeset
44 #else
4e0b38bbd6c4 replaces usage of some deprecated functions (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 140
diff changeset
45 gtk_misc_set_alignment(GTK_MISC(widget), xalign, yalign);
4e0b38bbd6c4 replaces usage of some deprecated functions (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 140
diff changeset
46 #endif
4e0b38bbd6c4 replaces usage of some deprecated functions (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 140
diff changeset
47 }
4e0b38bbd6c4 replaces usage of some deprecated functions (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 140
diff changeset
48
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 358
diff changeset
49 UIWIDGET ui_label_create(UiObject *obj, UiLabelArgs *args) {
352
1b4aae4e8432 add label style option (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 319
diff changeset
50 const char *css_class = NULL;
1b4aae4e8432 add label style option (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 319
diff changeset
51 char *markup = NULL;
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 358
diff changeset
52 if(args->label) {
358
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
53 #if GTK_MAJOR_VERSION < 3
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 358
diff changeset
54 switch(args->style) {
358
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
55 case UI_LABEL_STYLE_DEFAULT: break;
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
56 case UI_LABEL_STYLE_TITLE: {
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 358
diff changeset
57 cxmutstr m = cx_asprintf("<b>%s</b>", args->label);
358
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
58 markup = m.ptr;
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 358
diff changeset
59 args->label = NULL;
358
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
60 }
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
61 case UI_LABEL_STYLE_SUBTITLE: {
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
62 break;
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
63 }
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
64 case UI_LABEL_STYLE_DIM: {
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
65 break;
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
66 }
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
67 }
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
68 # else
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 358
diff changeset
69 switch(args->style) {
358
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
70 case UI_LABEL_STYLE_DEFAULT: break;
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
71 case UI_LABEL_STYLE_TITLE: {
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
72 css_class = "ui_label_title";
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
73 break;
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
74 }
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
75 case UI_LABEL_STYLE_SUBTITLE: {
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
76 css_class = "subtitle";
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
77 break;
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
78 }
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
79 case UI_LABEL_STYLE_DIM: {
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
80 css_class = "dim-label";
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
81 break;
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
82 }
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
83 }
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
84 # endif
352
1b4aae4e8432 add label style option (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 319
diff changeset
85 }
358
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
86
352
1b4aae4e8432 add label style option (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 319
diff changeset
87
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 358
diff changeset
88 GtkWidget *widget = gtk_label_new(args->label);
352
1b4aae4e8432 add label style option (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 319
diff changeset
89 if(markup) {
1b4aae4e8432 add label style option (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 319
diff changeset
90 gtk_label_set_markup(GTK_LABEL(widget), markup);
1b4aae4e8432 add label style option (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 319
diff changeset
91 free(markup);
1b4aae4e8432 add label style option (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 319
diff changeset
92 }
1b4aae4e8432 add label style option (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 319
diff changeset
93
1b4aae4e8432 add label style option (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 319
diff changeset
94 if(css_class) {
1b4aae4e8432 add label style option (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 319
diff changeset
95 WIDGET_ADD_CSS_CLASS(widget, css_class);
1b4aae4e8432 add label style option (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 319
diff changeset
96 }
1b4aae4e8432 add label style option (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 319
diff changeset
97
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 358
diff changeset
98 switch(args->align) {
261
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
99 case UI_ALIGN_DEFAULT: break;
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
100 case UI_ALIGN_LEFT: set_alignment(widget, 0, .5); break;
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
101 case UI_ALIGN_RIGHT: set_alignment(widget, 1, .5); break;
682
326e7a5122fa fix gtk label center alignment
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 669
diff changeset
102 case UI_ALIGN_CENTER: set_alignment(widget, .5, .5); break;
261
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
103 }
65
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
104
352
1b4aae4e8432 add label style option (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 319
diff changeset
105
801
e096c441e874 refactor gtk container hierarchy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 682
diff changeset
106 UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_STRING);
261
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
107 if(var) {
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
108 UiString* value = (UiString*)var->value;
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
109 value->obj = widget;
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
110 value->get = ui_label_get;
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
111 value->set = ui_label_set;
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
112 }
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
113
801
e096c441e874 refactor gtk container hierarchy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 682
diff changeset
114 UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end;
e096c441e874 refactor gtk container hierarchy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 682
diff changeset
115 UiLayout layout = UI_ARGS2LAYOUT(args);
e096c441e874 refactor gtk container hierarchy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 682
diff changeset
116 ct->add(ct, widget, &layout);
65
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
117
1063
e0251f6e15f7 add visibility_states arg to labels, buttons, text widgets (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 801
diff changeset
118 uic_widget_set_visibility_states(obj->ctx, widget, args->visibility_states);
e0251f6e15f7 add visibility_states arg to labels, buttons, text widgets (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 801
diff changeset
119
65
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
120 return widget;
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
121 }
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
122
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 358
diff changeset
123 UIWIDGET ui_llabel_create(UiObject* obj, UiLabelArgs *args) {
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 358
diff changeset
124 args->align = UI_ALIGN_LEFT;
261
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
125 return ui_label_create(obj, args);
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
126 }
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
127
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 358
diff changeset
128 UIWIDGET ui_rlabel_create(UiObject* obj, UiLabelArgs *args) {
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 358
diff changeset
129 args->align = UI_ALIGN_RIGHT;
261
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
130 return ui_label_create(obj, args);
94
d51e334c1439 added checkbox and labels with alignment (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 65
diff changeset
131 }
d51e334c1439 added checkbox and labels with alignment (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 65
diff changeset
132
261
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
133 char* ui_label_get(UiString *s) {
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
134 if(s->value.ptr) {
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
135 s->value.free(s->value.ptr);
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
136 }
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
137 s->value.ptr = g_strdup(gtk_label_get_text(GTK_LABEL(s->obj)));
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
138 s->value.free = (ui_freefunc)g_free;
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
139 return s->value.ptr;
94
d51e334c1439 added checkbox and labels with alignment (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 65
diff changeset
140 }
d51e334c1439 added checkbox and labels with alignment (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 65
diff changeset
141
261
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
142 void ui_label_set(UiString *s, const char *value) {
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
143 gtk_label_set_text(GTK_LABEL(s->obj), value);
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
144 if(s->value.ptr) {
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
145 s->value.free(s->value.ptr);
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
146 s->value.ptr = NULL;
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
147 s->value.free = NULL;
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
148 }
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
149 }
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
150
801
e096c441e874 refactor gtk container hierarchy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 682
diff changeset
151 /*
261
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
152 UIWIDGET ui_space_deprecated(UiObject *obj) {
65
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
153 GtkWidget *widget = gtk_label_new("");
801
e096c441e874 refactor gtk container hierarchy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 682
diff changeset
154 UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end;
e096c441e874 refactor gtk container hierarchy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 682
diff changeset
155 UiLayout layout = UI_ARGS2LAYOUT(args);
e096c441e874 refactor gtk container hierarchy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 682
diff changeset
156 ct->add(ct, widget, &layout);
65
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
157
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
158 return widget;
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
159 }
94
d51e334c1439 added checkbox and labels with alignment (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 65
diff changeset
160
262
81778b9589d0 port progressbar to new API (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 261
diff changeset
161 UIWIDGET ui_separator_deprecated(UiObject *obj) {
298
c5e207d01ff2 port button, text to gtk4
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 272
diff changeset
162 #if GTK_MAJOR_VERSION >= 3
94
d51e334c1439 added checkbox and labels with alignment (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 65
diff changeset
163 GtkWidget *widget = gtk_separator_new(GTK_ORIENTATION_HORIZONTAL);
100
d276306d801f improved gtk2 implementation of grid container
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 94
diff changeset
164 #else
d276306d801f improved gtk2 implementation of grid container
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 94
diff changeset
165 GtkWidget *widget = gtk_hseparator_new();
d276306d801f improved gtk2 implementation of grid container
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 94
diff changeset
166 #endif
801
e096c441e874 refactor gtk container hierarchy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 682
diff changeset
167 UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end;
e096c441e874 refactor gtk container hierarchy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 682
diff changeset
168 UiLayout layout = UI_ARGS2LAYOUT(args);
e096c441e874 refactor gtk container hierarchy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 682
diff changeset
169 ct->add(ct, widget, &layout);
94
d51e334c1439 added checkbox and labels with alignment (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 65
diff changeset
170
d51e334c1439 added checkbox and labels with alignment (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 65
diff changeset
171 return widget;
d51e334c1439 added checkbox and labels with alignment (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 65
diff changeset
172 }
801
e096c441e874 refactor gtk container hierarchy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 682
diff changeset
173 */
e096c441e874 refactor gtk container hierarchy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 682
diff changeset
174
149
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
175 /* ------------------------- progress bar ------------------------- */
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
176
319
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
177 typedef struct UiProgressBarRange {
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
178 double min;
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
179 double max;
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
180 } UiProgressBarRange;
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
181
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 358
diff changeset
182 UIWIDGET ui_progressbar_create(UiObject *obj, UiProgressbarArgs *args) {
149
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
183 GtkWidget *progressbar = gtk_progress_bar_new();
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 358
diff changeset
184 if(args->max > args->min) {
319
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
185 UiProgressBarRange *range = malloc(sizeof(UiProgressBarRange));
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 358
diff changeset
186 range->min = args->min;
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 358
diff changeset
187 range->max = args->max;
319
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
188 g_signal_connect(
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
189 progressbar,
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
190 "destroy",
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
191 G_CALLBACK(ui_destroy_userdata),
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
192 range);
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
193 g_object_set_data(G_OBJECT(progressbar), "ui_range", range);
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
194 }
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
195
262
81778b9589d0 port progressbar to new API (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 261
diff changeset
196
801
e096c441e874 refactor gtk container hierarchy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 682
diff changeset
197 UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_DOUBLE);
149
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
198 if(var && var->value) {
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
199 UiDouble *value = var->value;
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
200 value->get = ui_progressbar_get;
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
201 value->set = ui_progressbar_set;
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
202 value->obj = progressbar;
319
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
203 ui_progressbar_set(value, value->value);
149
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
204 }
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
205
801
e096c441e874 refactor gtk container hierarchy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 682
diff changeset
206 UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end;
e096c441e874 refactor gtk container hierarchy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 682
diff changeset
207 UiLayout layout = UI_ARGS2LAYOUT(args);
e096c441e874 refactor gtk container hierarchy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 682
diff changeset
208 ct->add(ct, progressbar, &layout);
149
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
209
1063
e0251f6e15f7 add visibility_states arg to labels, buttons, text widgets (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 801
diff changeset
210 uic_widget_set_visibility_states(obj->ctx, progressbar, args->visibility_states);
e0251f6e15f7 add visibility_states arg to labels, buttons, text widgets (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 801
diff changeset
211
149
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
212 return progressbar;
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
213 }
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
214
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
215 double ui_progressbar_get(UiDouble *d) {
319
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
216 UiProgressBarRange *range = g_object_get_data(d->obj, "ui_range");
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
217 double fraction = gtk_progress_bar_get_fraction(GTK_PROGRESS_BAR(d->obj));
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
218 if(range) {
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
219 fraction = range->min + (range->max - range->min) * fraction;
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
220 }
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
221 d->value = fraction;
149
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
222 return d->value;
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
223 }
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
224
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
225 void ui_progressbar_set(UiDouble *d, double value) {
319
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
226 d->value = value;
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
227 UiProgressBarRange *range = g_object_get_data(d->obj, "ui_range");
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
228 if(range) {
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
229 value = (value - range->min) / (range->max - range->min);
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
230 }
149
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
231 gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(d->obj), value);
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
232 }
272
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
233
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
234
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
235 /* ------------------------- progress spinner ------------------------- */
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
236
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 358
diff changeset
237 UIWIDGET ui_progressspinner_create(UiObject* obj, UiProgressbarSpinnerArgs *args) {
272
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
238 GtkWidget *spinner = gtk_spinner_new();
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
239
801
e096c441e874 refactor gtk container hierarchy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 682
diff changeset
240 UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_INTEGER);
272
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
241 if(var && var->value) {
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
242 UiInteger *value = var->value;
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
243 value->get = ui_spinner_get;
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
244 value->set = ui_spinner_set;
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
245 value->obj = spinner;
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
246 ui_spinner_set(value, value->value);
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
247 }
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
248
801
e096c441e874 refactor gtk container hierarchy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 682
diff changeset
249 UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end;
e096c441e874 refactor gtk container hierarchy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 682
diff changeset
250 UiLayout layout = UI_ARGS2LAYOUT(args);
e096c441e874 refactor gtk container hierarchy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 682
diff changeset
251 ct->add(ct, spinner, &layout);
272
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
252
1063
e0251f6e15f7 add visibility_states arg to labels, buttons, text widgets (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 801
diff changeset
253 uic_widget_set_visibility_states(obj->ctx, spinner, args->visibility_states);
e0251f6e15f7 add visibility_states arg to labels, buttons, text widgets (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 801
diff changeset
254
272
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
255 return spinner;
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
256 }
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
257
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
258 int64_t ui_spinner_get(UiInteger *i) {
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
259 return i->value;
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
260 }
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
261
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
262 void ui_spinner_set(UiInteger *i, int64_t value) {
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
263 i->value = value;
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
264 if(i->obj) {
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
265 GtkSpinner *spinner = GTK_SPINNER(i->obj);
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
266 if(value != 0) {
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
267 gtk_spinner_start(spinner);
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
268 } else {
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
269 gtk_spinner_stop(spinner);
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
270 }
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
271 }
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
272 }

mercurial