ui/gtk/display.c

Mon, 29 Sep 2025 21:14:46 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Mon, 29 Sep 2025 21:14:46 +0200
changeset 779
b84cbe57e0bd
parent 682
326e7a5122fa
child 801
e096c441e874
permissions
-rw-r--r--

change UiCellValue from struct to union and pass it as pointer to the onsave function, for better compatibility with other languages

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) {
261
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
50 UiObject* current = uic_current_obj(obj);
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
51
352
1b4aae4e8432 add label style option (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 319
diff changeset
52 const char *css_class = NULL;
1b4aae4e8432 add label style option (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 319
diff changeset
53 char *markup = NULL;
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 358
diff changeset
54 if(args->label) {
358
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
55 #if GTK_MAJOR_VERSION < 3
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 358
diff changeset
56 switch(args->style) {
358
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
57 case UI_LABEL_STYLE_DEFAULT: break;
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
58 case UI_LABEL_STYLE_TITLE: {
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 358
diff changeset
59 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
60 markup = m.ptr;
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 358
diff changeset
61 args->label = NULL;
358
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
62 }
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
63 case UI_LABEL_STYLE_SUBTITLE: {
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
64 break;
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
65 }
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
66 case UI_LABEL_STYLE_DIM: {
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
67 break;
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
68 }
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
69 }
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
70 # else
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 358
diff changeset
71 switch(args->style) {
358
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
72 case UI_LABEL_STYLE_DEFAULT: break;
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
73 case UI_LABEL_STYLE_TITLE: {
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
74 css_class = "ui_label_title";
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
75 break;
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
76 }
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
77 case UI_LABEL_STYLE_SUBTITLE: {
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
78 css_class = "subtitle";
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
79 break;
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
80 }
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
81 case UI_LABEL_STYLE_DIM: {
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
82 css_class = "dim-label";
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
83 break;
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
84 }
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
85 }
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
86 # endif
352
1b4aae4e8432 add label style option (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 319
diff changeset
87 }
358
98b26a19cbeb add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 352
diff changeset
88
352
1b4aae4e8432 add label style option (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 319
diff changeset
89
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 358
diff changeset
90 GtkWidget *widget = gtk_label_new(args->label);
352
1b4aae4e8432 add label style option (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 319
diff changeset
91 if(markup) {
1b4aae4e8432 add label style option (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 319
diff changeset
92 gtk_label_set_markup(GTK_LABEL(widget), markup);
1b4aae4e8432 add label style option (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 319
diff changeset
93 free(markup);
1b4aae4e8432 add label style option (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 319
diff changeset
94 }
1b4aae4e8432 add label style option (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 319
diff changeset
95
1b4aae4e8432 add label style option (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 319
diff changeset
96 if(css_class) {
1b4aae4e8432 add label style option (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 319
diff changeset
97 WIDGET_ADD_CSS_CLASS(widget, css_class);
1b4aae4e8432 add label style option (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 319
diff changeset
98 }
1b4aae4e8432 add label style option (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 319
diff changeset
99
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 358
diff changeset
100 switch(args->align) {
261
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
101 case UI_ALIGN_DEFAULT: break;
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
102 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
103 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
104 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
105 }
65
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
106
352
1b4aae4e8432 add label style option (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 319
diff changeset
107
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 358
diff changeset
108 UiVar* var = uic_widget_var(obj->ctx, current->ctx, args->value, args->varname, UI_VAR_STRING);
261
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
109 if(var) {
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
110 UiString* value = (UiString*)var->value;
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
111 value->obj = widget;
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
112 value->get = ui_label_get;
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
113 value->set = ui_label_set;
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
114 }
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
115
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 358
diff changeset
116 UI_APPLY_LAYOUT2(current, args);
669
5b930e8c3a87 simplify layout fill option, remove fill parameter from container add function (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 594
diff changeset
117 current->container->add(current->container, widget);
65
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
118
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
119 return widget;
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
120 }
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
121
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 358
diff changeset
122 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
123 args->align = UI_ALIGN_LEFT;
261
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
124 return ui_label_create(obj, args);
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
125 }
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
126
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 358
diff changeset
127 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
128 args->align = UI_ALIGN_RIGHT;
261
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
129 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
130 }
d51e334c1439 added checkbox and labels with alignment (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 65
diff changeset
131
261
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
132 char* ui_label_get(UiString *s) {
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
133 if(s->value.ptr) {
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
134 s->value.free(s->value.ptr);
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
135 }
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
136 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
137 s->value.free = (ui_freefunc)g_free;
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
138 return s->value.ptr;
94
d51e334c1439 added checkbox and labels with alignment (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 65
diff changeset
139 }
d51e334c1439 added checkbox and labels with alignment (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 65
diff changeset
140
261
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
141 void ui_label_set(UiString *s, const char *value) {
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
142 gtk_label_set_text(GTK_LABEL(s->obj), value);
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
143 if(s->value.ptr) {
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
144 s->value.free(s->value.ptr);
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
145 s->value.ptr = NULL;
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
146 s->value.free = NULL;
b39f0e61fd99 add new label (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 174
diff changeset
147 }
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 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
151 GtkWidget *widget = gtk_label_new("");
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
152 UiContainer *ct = uic_get_current_container(obj);
669
5b930e8c3a87 simplify layout fill option, remove fill parameter from container add function (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 594
diff changeset
153 ct->add(ct, widget);
65
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
154
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
155 return widget;
4697592e24ba added label, grid container, simple tabview and textfield (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
156 }
94
d51e334c1439 added checkbox and labels with alignment (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 65
diff changeset
157
262
81778b9589d0 port progressbar to new API (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 261
diff changeset
158 UIWIDGET ui_separator_deprecated(UiObject *obj) {
298
c5e207d01ff2 port button, text to gtk4
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 272
diff changeset
159 #if GTK_MAJOR_VERSION >= 3
94
d51e334c1439 added checkbox and labels with alignment (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 65
diff changeset
160 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
161 #else
d276306d801f improved gtk2 implementation of grid container
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 94
diff changeset
162 GtkWidget *widget = gtk_hseparator_new();
d276306d801f improved gtk2 implementation of grid container
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 94
diff changeset
163 #endif
94
d51e334c1439 added checkbox and labels with alignment (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 65
diff changeset
164 UiContainer *ct = uic_get_current_container(obj);
669
5b930e8c3a87 simplify layout fill option, remove fill parameter from container add function (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 594
diff changeset
165 ct->add(ct, widget);
94
d51e334c1439 added checkbox and labels with alignment (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 65
diff changeset
166
d51e334c1439 added checkbox and labels with alignment (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 65
diff changeset
167 return widget;
d51e334c1439 added checkbox and labels with alignment (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 65
diff changeset
168 }
d51e334c1439 added checkbox and labels with alignment (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 65
diff changeset
169
149
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
170 /* ------------------------- progress bar ------------------------- */
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
171
319
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
172 typedef struct UiProgressBarRange {
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
173 double min;
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
174 double max;
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
175 } UiProgressBarRange;
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
176
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 358
diff changeset
177 UIWIDGET ui_progressbar_create(UiObject *obj, UiProgressbarArgs *args) {
262
81778b9589d0 port progressbar to new API (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 261
diff changeset
178 UiObject* current = uic_current_obj(obj);
81778b9589d0 port progressbar to new API (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 261
diff changeset
179
149
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
180 GtkWidget *progressbar = gtk_progress_bar_new();
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 358
diff changeset
181 if(args->max > args->min) {
319
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
182 UiProgressBarRange *range = malloc(sizeof(UiProgressBarRange));
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 358
diff changeset
183 range->min = args->min;
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 358
diff changeset
184 range->max = args->max;
319
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
185 g_signal_connect(
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
186 progressbar,
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
187 "destroy",
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
188 G_CALLBACK(ui_destroy_userdata),
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
189 range);
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
190 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
191 }
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
192
262
81778b9589d0 port progressbar to new API (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 261
diff changeset
193
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 358
diff changeset
194 UiVar* var = uic_widget_var(obj->ctx, current->ctx, args->value, args->varname, UI_VAR_DOUBLE);
149
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
195 if(var && var->value) {
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
196 UiDouble *value = var->value;
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
197 value->get = ui_progressbar_get;
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
198 value->set = ui_progressbar_set;
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
199 value->obj = progressbar;
319
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
200 ui_progressbar_set(value, value->value);
149
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
201 }
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
202
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 358
diff changeset
203 UI_APPLY_LAYOUT2(current, args);
669
5b930e8c3a87 simplify layout fill option, remove fill parameter from container add function (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 594
diff changeset
204 current->container->add(current->container, progressbar);
149
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
205
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
206 return progressbar;
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
207 }
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
208
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
209 double ui_progressbar_get(UiDouble *d) {
319
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
210 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
211 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
212 if(range) {
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
213 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
214 }
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
215 d->value = fraction;
149
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
216 return d->value;
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
217 }
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
218
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
219 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
220 d->value = value;
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
221 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
222 if(range) {
050ceb8ecf44 implement progressbar min/max args (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 298
diff changeset
223 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
224 }
149
479209198de3 adds progressbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 148
diff changeset
225 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
226 }
272
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
227
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
228
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
229 /* ------------------------- progress spinner ------------------------- */
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
230
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 358
diff changeset
231 UIWIDGET ui_progressspinner_create(UiObject* obj, UiProgressbarSpinnerArgs *args) {
272
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
232 UiObject* current = uic_current_obj(obj);
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 GtkWidget *spinner = gtk_spinner_new();
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
235
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 358
diff changeset
236 UiVar* var = uic_widget_var(obj->ctx, current->ctx, args->value, args->varname, UI_VAR_INTEGER);
272
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
237 if(var && var->value) {
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
238 UiInteger *value = var->value;
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
239 value->get = ui_spinner_get;
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
240 value->set = ui_spinner_set;
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
241 value->obj = spinner;
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
242 ui_spinner_set(value, value->value);
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
243 }
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
244
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 358
diff changeset
245 UI_APPLY_LAYOUT2(current, args);
669
5b930e8c3a87 simplify layout fill option, remove fill parameter from container add function (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 594
diff changeset
246 current->container->add(current->container, spinner);
272
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 return spinner;
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
249 }
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
250
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
251 int64_t ui_spinner_get(UiInteger *i) {
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
252 return i->value;
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
253 }
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
254
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
255 void ui_spinner_set(UiInteger *i, int64_t value) {
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
256 i->value = value;
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
257 if(i->obj) {
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
258 GtkSpinner *spinner = GTK_SPINNER(i->obj);
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
259 if(value != 0) {
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
260 gtk_spinner_start(spinner);
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
261 } else {
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
262 gtk_spinner_stop(spinner);
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
263 }
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
264 }
1a30bf64cb22 add spinner (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 266
diff changeset
265 }

mercurial