ui/common/toolbar.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 594
fc854e0ab924
child 789
d70799b3333e
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

205
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
1 /*
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
3 *
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
4 * Copyright 2023 Olaf Wintermann. All rights reserved.
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
5 *
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
6 * Redistribution and use in source and binary forms, with or without
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
7 * modification, are permitted provided that the following conditions are met:
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
8 *
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
9 * 1. Redistributions of source code must retain the above copyright
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
10 * notice, this list of conditions and the following disclaimer.
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
11 *
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
12 * 2. Redistributions in binary form must reproduce the above copyright
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
13 * notice, this list of conditions and the following disclaimer in the
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
14 * documentation and/or other materials provided with the distribution.
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
15 *
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
b1ac0dd1d38b new winui vs project, add toolbar
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
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
26 * POSSIBILITY OF SUCH DAMAGE.
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
27 */
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
28
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
29 #include "toolbar.h"
367
1c3af8e31d8e fix toolbar item groups
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 325
diff changeset
30 #include "menu.h"
205
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
31
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
32 #include <string.h>
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
33
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
34 static CxMap* toolbar_items;
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
35
226
4eef1d49f794 split toolbar in left,center,right segments (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 207
diff changeset
36 static CxList* toolbar_defaults[3]; // 0: left 1: center 2: right
205
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
37
207
93b9f502cb88 add toolbar appmenu and menu buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
38 static UiToolbarMenuItem* ui_appmenu;
93b9f502cb88 add toolbar appmenu and menu buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
39
378
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 367
diff changeset
40
205
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
41 void uic_toolbar_init(void) {
254
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
42 toolbar_items = cxHashMapCreate(cxDefaultAllocator, CX_STORE_POINTERS, 16);
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
43 toolbar_defaults[0] = cxLinkedListCreateSimple(CX_STORE_POINTERS);
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
44 toolbar_defaults[1] = cxLinkedListCreateSimple(CX_STORE_POINTERS);
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
45 toolbar_defaults[2] = cxLinkedListCreateSimple(CX_STORE_POINTERS);
205
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
46 }
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
47
254
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
48 static char* nl_strdup(const char* str) {
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
49 return str ? strdup(str) : NULL;
205
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
50 }
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
51
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 378
diff changeset
52 static UiToolbarItemArgs itemargs_copy(UiToolbarItemArgs *args, size_t *ngroups) {
254
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
53 UiToolbarItemArgs newargs;
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 378
diff changeset
54 newargs.label = nl_strdup(args->label);
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 378
diff changeset
55 newargs.stockid = nl_strdup(args->stockid);
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 378
diff changeset
56 newargs.icon = nl_strdup(args->icon);
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 378
diff changeset
57 newargs.onclick = args->onclick;
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 378
diff changeset
58 newargs.onclickdata = args->onclickdata;
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 378
diff changeset
59 newargs.groups = uic_copy_groups(args->groups, ngroups);
254
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
60 return newargs;
205
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
61 }
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
62
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 378
diff changeset
63 void ui_toolbar_item_create(const char* name, UiToolbarItemArgs *args) {
254
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
64 UiToolbarItem* item = malloc(sizeof(UiToolbarItem));
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
65 item->item.type = UI_TOOLBAR_ITEM;
367
1c3af8e31d8e fix toolbar item groups
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 325
diff changeset
66 item->args = itemargs_copy(args, &item->ngroups);
254
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
67 cxMapPut(toolbar_items, name, item);
205
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
68 }
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
69
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
70
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 378
diff changeset
71 static UiToolbarToggleItemArgs toggleitemargs_copy(UiToolbarToggleItemArgs *args, size_t *ngroups) {
254
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
72 UiToolbarToggleItemArgs newargs;
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 378
diff changeset
73 newargs.label = nl_strdup(args->label);
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 378
diff changeset
74 newargs.stockid = nl_strdup(args->stockid);
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 378
diff changeset
75 newargs.icon = nl_strdup(args->icon);
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 378
diff changeset
76 newargs.varname = nl_strdup(args->varname);
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 378
diff changeset
77 newargs.onchange = args->onchange;
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 378
diff changeset
78 newargs.onchangedata = args->onchangedata;
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 378
diff changeset
79 newargs.groups = uic_copy_groups(args->groups, ngroups);
254
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
80 return newargs;
205
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
81 }
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
82
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 378
diff changeset
83 void ui_toolbar_toggleitem_create(const char* name, UiToolbarToggleItemArgs *args) {
254
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
84 UiToolbarToggleItem* item = malloc(sizeof(UiToolbarToggleItem));
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
85 item->item.type = UI_TOOLBAR_TOGGLEITEM;
367
1c3af8e31d8e fix toolbar item groups
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 325
diff changeset
86 item->args = toggleitemargs_copy(args, &item->ngroups);
254
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
87 cxMapPut(toolbar_items, name, item);
205
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
88 }
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
89
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 378
diff changeset
90 static UiToolbarMenuArgs menuargs_copy(UiToolbarMenuArgs *args) {
254
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
91 UiToolbarMenuArgs newargs;
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 378
diff changeset
92 newargs.label = nl_strdup(args->label);
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 378
diff changeset
93 newargs.stockid = nl_strdup(args->stockid);
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 378
diff changeset
94 newargs.icon = nl_strdup(args->icon);
254
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
95 return newargs;
207
93b9f502cb88 add toolbar appmenu and menu buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
96 }
93b9f502cb88 add toolbar appmenu and menu buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
97
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 378
diff changeset
98 UIEXPORT void ui_toolbar_menu_create(const char* name, UiToolbarMenuArgs *args) {
254
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
99 UiToolbarMenuItem* item = malloc(sizeof(UiToolbarMenuItem));
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
100 item->item.type = UI_TOOLBAR_MENU;
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
101 memset(&item->menu, 0, sizeof(UiMenu));
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
102 item->args = menuargs_copy(args);
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
103
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
104 item->end = 0;
207
93b9f502cb88 add toolbar appmenu and menu buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
105
254
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
106 if (!name) {
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
107 // special appmenu
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
108 ui_appmenu = item;
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
109 } else {
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
110 // toplevel menu
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
111 cxMapPut(toolbar_items, name, item);
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
112 }
207
93b9f502cb88 add toolbar appmenu and menu buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
113
254
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
114 uic_add_menu_to_stack(&item->menu);
207
93b9f502cb88 add toolbar appmenu and menu buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
115 }
93b9f502cb88 add toolbar appmenu and menu buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
116
205
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
117
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
118 CxMap* uic_get_toolbar_items(void) {
254
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
119 return toolbar_items;
205
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
120 }
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
121
226
4eef1d49f794 split toolbar in left,center,right segments (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 207
diff changeset
122 CxList* uic_get_toolbar_defaults(enum UiToolbarPos pos) {
254
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
123 if (pos >= 0 && pos < 3) {
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
124 return toolbar_defaults[pos];
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
125 }
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
126 return NULL;
205
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
127 }
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
128
226
4eef1d49f794 split toolbar in left,center,right segments (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 207
diff changeset
129 void ui_toolbar_add_default(const char* name, enum UiToolbarPos pos) {
254
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
130 char* cp = strdup(name);
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
131 if (pos >= 0 && pos < 3) {
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
132 cxListAdd(toolbar_defaults[pos], cp);
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
133 } else {
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
134 // TODO: error
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
135 }
205
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
136 }
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
137
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
138 UiBool uic_toolbar_isenabled(void) {
325
99a93a9250c4 fix build
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 254
diff changeset
139 return cxListSize(toolbar_defaults[0]) + cxListSize(toolbar_defaults[1]) + cxListSize(toolbar_defaults[2]) > 0;
205
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
140 }
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
141
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
142 UiToolbarItemI* uic_toolbar_get_item(const char* name) {
254
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
143 return cxMapGet(toolbar_items, name);
205
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
144 }
207
93b9f502cb88 add toolbar appmenu and menu buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
145
93b9f502cb88 add toolbar appmenu and menu buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
146 UiToolbarMenuItem* uic_get_appmenu(void) {
254
13997c76859b fix some const related warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 226
diff changeset
147 return ui_appmenu;
207
93b9f502cb88 add toolbar appmenu and menu buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
148 }

mercurial