ui/winui/container.cpp

Tue, 10 Oct 2023 10:58:14 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Tue, 10 Oct 2023 10:58:14 +0200
branch
newapi
changeset 205
b1ac0dd1d38b
parent 202
9f309d1914a2
child 212
ad5c74af14c4
permissions
-rw-r--r--

new winui vs project, add toolbar

182
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
1 /*
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
3 *
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
4 * Copyright 2023 Olaf Wintermann. All rights reserved.
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
5 *
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
6 * Redistribution and use in source and binary forms, with or without
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
7 * modification, are permitted provided that the following conditions are met:
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
8 *
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
9 * 1. Redistributions of source code must retain the above copyright
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
10 * notice, this list of conditions and the following disclaimer.
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
11 *
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
12 * 2. Redistributions in binary form must reproduce the above copyright
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
13 * notice, this list of conditions and the following disclaimer in the
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
14 * documentation and/or other materials provided with the distribution.
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
15 *
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
6cf690e042bd add window container (WinUI)
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
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
26 * POSSIBILITY OF SUCH DAMAGE.
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
27 */
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
28
205
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 202
diff changeset
29 #include "pch.h"
b1ac0dd1d38b new winui vs project, add toolbar
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 202
diff changeset
30
182
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
31 #include "container.h"
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
32
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
33 #include "../common/context.h"
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
34 #include "../common/object.h"
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
35
193
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
36 #include "util.h"
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
37
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
38
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
39 void ui_container_begin_close(UiObject* obj) {
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
40 UiContainer* ct = uic_get_current_container(obj);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
41 ct->close = 1;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
42 }
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
43
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
44 int ui_container_finish(UiObject* obj) {
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
45 UiContainer* ct = uic_get_current_container(obj);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
46 if (ct->close) {
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
47 ui_end(obj);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
48 return 0;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
49 }
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
50 return 1;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
51 }
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
52
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
53
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
54 // --------------------- UiBoxContainer ---------------------
182
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
55
190
70fd1b24e395 implement new api style for box and grid containers (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 188
diff changeset
56 static UIWIDGET ui_box(UiObject* obj, UiContainerArgs args, UiBoxContainerType type) {
70fd1b24e395 implement new api style for box and grid containers (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 188
diff changeset
57 UiObject* current = uic_current_obj(obj);
70fd1b24e395 implement new api style for box and grid containers (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 188
diff changeset
58 UI_APPLY_LAYOUT1(current, args);
188
fbbae6738252 implement radio button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
59
fbbae6738252 implement radio button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
60 Grid grid = Grid();
190
70fd1b24e395 implement new api style for box and grid containers (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 188
diff changeset
61 current->container->Add(grid, true);
188
fbbae6738252 implement radio button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
62
fbbae6738252 implement radio button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
63 UIElement elm = grid;
fbbae6738252 implement radio button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
64 UiWidget* widget = new UiWidget(elm);
fbbae6738252 implement radio button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
65
fbbae6738252 implement radio button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
66 UiObject* newobj = uic_object_new(obj, widget);
190
70fd1b24e395 implement new api style for box and grid containers (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 188
diff changeset
67 newobj->container = new UiBoxContainer(grid, type, args.margin, args.spacing);
188
fbbae6738252 implement radio button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
68 uic_obj_add(obj, newobj);
fbbae6738252 implement radio button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
69
fbbae6738252 implement radio button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
70 return widget;
fbbae6738252 implement radio button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
71 }
fbbae6738252 implement radio button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
72
190
70fd1b24e395 implement new api style for box and grid containers (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 188
diff changeset
73 UIWIDGET ui_vbox_create(UiObject* obj, UiContainerArgs args) {
195
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
74 return ui_box(obj, args, UI_BOX_CONTAINER_VBOX);
188
fbbae6738252 implement radio button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
75 }
fbbae6738252 implement radio button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
76
190
70fd1b24e395 implement new api style for box and grid containers (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 188
diff changeset
77 UIWIDGET ui_hbox_create(UiObject* obj, UiContainerArgs args) {
195
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
78 return ui_box(obj, args, UI_BOX_CONTAINER_HBOX);
188
fbbae6738252 implement radio button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
79 }
fbbae6738252 implement radio button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
80
190
70fd1b24e395 implement new api style for box and grid containers (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 188
diff changeset
81 UiBoxContainer::UiBoxContainer(Grid grid, enum UiBoxContainerType type, int margin, int spacing) {
182
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
82 this->grid = grid;
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
83 this->type = type;
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
84
193
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
85 Thickness t = { (double)margin, (double)margin, (double)margin, (double)margin };
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
86 grid.Margin(t);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
87 grid.ColumnSpacing((double)spacing);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
88 grid.RowSpacing((double)spacing);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
89
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
90 GridLength gl;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
91 gl.Value = 1;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
92 gl.GridUnitType = GridUnitType::Star;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
93
182
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
94 // hbox needs one row def, vbox needs one col def
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
95 // all other col/row defs are created when elements are added
195
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
96 if (type == UI_BOX_CONTAINER_HBOX) {
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
97 boxRowDef = RowDefinition();
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
98 boxRowDef.Height(gl);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
99 grid.RowDefinitions().Append(boxRowDef);
182
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
100 } else {
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
101 boxColDef = ColumnDefinition();
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
102 boxColDef.Width(gl);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
103 grid.ColumnDefinitions().Append(boxColDef);
182
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
104 }
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
105
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
106 ui_reset_layout(layout);
182
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
107 }
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
108
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
109 void UiBoxContainer::Add(FrameworkElement control, UiBool fill) {
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
110 if (this->layout.fill != UI_LAYOUT_UNDEFINED) {
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
111 fill = ui_lb2bool(this->layout.fill);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
112 }
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
113
182
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
114 GridLength gl;
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
115 if (fill) {
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
116 gl.Value = 1;
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
117 gl.GridUnitType = GridUnitType::Star;
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
118 }
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
119 else {
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
120 gl.Value = 0;
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
121 gl.GridUnitType = GridUnitType::Auto;
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
122 }
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
123
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
124 control.HorizontalAlignment(HorizontalAlignment::Stretch);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
125 control.VerticalAlignment(VerticalAlignment::Stretch);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
126
182
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
127 if (type == UI_CONTAINER_HBOX) {
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
128 ColumnDefinition coldef = ColumnDefinition();
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
129 coldef.Width(gl);
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
130 grid.ColumnDefinitions().Append(coldef);
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
131 grid.SetColumn(control, grid.Children().Size());
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
132 grid.SetRow(control, 0);
182
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
133 } else {
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
134 RowDefinition rowdef = RowDefinition();
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
135 rowdef.Height(gl);
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
136 grid.RowDefinitions().Append(rowdef);
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
137 grid.SetRow(control, grid.Children().Size());
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
138 grid.SetColumn(control, 0);
182
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
139 }
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
140
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
141 grid.Children().Append(control);
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
142
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
143 ui_reset_layout(layout);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
144 }
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
145
188
fbbae6738252 implement radio button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
146
fbbae6738252 implement radio button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
147 // --------------------- UiGridContainer ---------------------
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
148
190
70fd1b24e395 implement new api style for box and grid containers (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 188
diff changeset
149 UIWIDGET ui_grid_create(UiObject* obj, UiContainerArgs args) {
70fd1b24e395 implement new api style for box and grid containers (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 188
diff changeset
150 UiObject* current = uic_current_obj(obj);
70fd1b24e395 implement new api style for box and grid containers (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 188
diff changeset
151 UI_APPLY_LAYOUT1(current, args);
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
152
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
153 Grid grid = Grid();
190
70fd1b24e395 implement new api style for box and grid containers (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 188
diff changeset
154 current->container->Add(grid, true);
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
155
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
156 UIElement elm = grid;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
157 UiWidget* widget = new UiWidget(elm);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
158
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
159 UiObject* newobj = uic_object_new(obj, widget);
190
70fd1b24e395 implement new api style for box and grid containers (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 188
diff changeset
160 newobj->container = new UiGridContainer(grid, args.margin, args.columnspacing, args.rowspacing);
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
161 uic_obj_add(obj, newobj);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
162
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
163 return widget;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
164 }
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
165
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
166 UiGridContainer::UiGridContainer(Grid grid, int margin, int columnspacing, int rowspacing) {
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
167 this->grid = grid;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
168 Thickness t = { (double)margin, (double)margin, (double)margin, (double)margin };
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
169 grid.Margin(t);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
170 grid.ColumnSpacing((double)columnspacing);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
171 grid.RowSpacing((double)rowspacing);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
172 ui_reset_layout(layout);
182
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
173 }
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
174
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
175 void UiGridContainer::Add(FrameworkElement control, UiBool fill) {
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
176 GridLength gl;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
177
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
178 int hexpand = FALSE;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
179 int vexpand = FALSE;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
180 if (layout.hexpand != UI_LAYOUT_UNDEFINED) {
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
181 hexpand = layout.hexpand;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
182 }
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
183 if (layout.vexpand != UI_LAYOUT_UNDEFINED) {
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
184 vexpand = layout.vexpand;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
185 }
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
186
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
187 // create new RowDefinition for the new line
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
188 if (layout.newline || y == -1) {
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
189 x = 0;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
190 y++;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
191 RowDefinition rowdef = RowDefinition();
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
192 if (vexpand) {
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
193 gl.GridUnitType = GridUnitType::Star;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
194 gl.Value = 1;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
195 }
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
196 else {
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
197 gl.GridUnitType = GridUnitType::Auto;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
198 gl.Value = 0;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
199 }
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
200 rowdef.Height(gl);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
201 grid.RowDefinitions().Append(rowdef);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
202 }
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
203
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
204 // create new columndefinition, if a new column is added
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
205 if (x == cols) {
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
206 if (hexpand) {
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
207 gl.GridUnitType = GridUnitType::Star;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
208 gl.Value = 1;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
209 }
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
210 else {
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
211 gl.GridUnitType = GridUnitType::Auto;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
212 gl.Value = 0;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
213 }
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
214 ColumnDefinition coldef = ColumnDefinition();
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
215 coldef.Width(gl);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
216 grid.ColumnDefinitions().Append(coldef);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
217 cols++;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
218 }
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
219
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
220 // add control
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
221 control.HorizontalAlignment(HorizontalAlignment::Stretch);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
222 control.VerticalAlignment(VerticalAlignment::Stretch);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
223
186
5db4979bf482 implement new api style for ui_button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 185
diff changeset
224 if (layout.colspan > 0) {
5db4979bf482 implement new api style for ui_button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 185
diff changeset
225 grid.SetColumnSpan(control, layout.colspan);
5db4979bf482 implement new api style for ui_button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 185
diff changeset
226 }
5db4979bf482 implement new api style for ui_button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 185
diff changeset
227 if (layout.rowspan > 0) {
5db4979bf482 implement new api style for ui_button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 185
diff changeset
228 grid.SetRowSpan(control, layout.rowspan);
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
229 }
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
230
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
231 grid.SetRow(control, y);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
232 grid.SetColumn(control, x);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
233 grid.Children().Append(control);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
234
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
235 x++;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
236
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
237 ui_reset_layout(layout);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
238 }
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
239
194
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
240 // --------------------- UI Frame ---------------------
193
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
241
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
242 UIWIDGET ui_frame_create(UiObject* obj, UiFrameArgs args) {
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
243 // create a grid for the frame, that contains the label and a sub-frame
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
244 Grid frame = Grid();
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
245
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
246 GridLength gl;
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
247 gl.GridUnitType = GridUnitType::Star;
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
248 gl.Value = 1;
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
249
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
250 ColumnDefinition coldef = ColumnDefinition();
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
251 coldef.Width(gl);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
252 frame.ColumnDefinitions().Append(coldef);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
253
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
254 RowDefinition rowdefFrame = RowDefinition();
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
255 rowdefFrame.Height(gl);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
256
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
257 // label
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
258 int row = 0;
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
259 if (args.label) {
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
260 RowDefinition rowdefLabel = RowDefinition();
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
261 gl.GridUnitType = GridUnitType::Auto;
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
262 gl.Value = 0;
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
263 rowdefLabel.Height(gl);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
264 frame.RowDefinitions().Append(rowdefLabel);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
265
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
266 TextBlock label = TextBlock();
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
267 wchar_t* wlabel = str2wstr(args.label, nullptr);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
268 winrt::hstring hstr(wlabel);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
269 label.Text(hstr);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
270 free(wlabel);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
271
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
272 frame.SetRow(label, row++);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
273 frame.SetColumn(label, 0);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
274 frame.Children().Append(label);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
275 }
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
276
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
277 // workarea frame
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
278 frame.RowDefinitions().Append(rowdefFrame);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
279
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
280 Grid workarea = Grid();
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
281 frame.SetRow(workarea, row);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
282 frame.SetColumn(workarea, 0);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
283 frame.Children().Append(workarea);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
284
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
285 // some styling for the workarea
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
286 winrt::Microsoft::UI::Xaml::Media::SolidColorBrush brush{ winrt::Microsoft::UI::ColorHelper::FromArgb(150, 150, 150, 150) };
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
287 workarea.BorderBrush(brush);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
288 CornerRadius radius{ 8, 8, 8, 8 };
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
289 Thickness t = { 1, 1, 1, 1 };
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
290 workarea.CornerRadius(radius);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
291 workarea.BorderThickness(t);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
292
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
293 Thickness padding = { 10, 10, 10, 10 };
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
294 workarea.Padding(padding);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
295
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
296 // add frame to the parent container
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
297 UiObject* current = uic_current_obj(obj);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
298 UI_APPLY_LAYOUT1(current, args);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
299 current->container->Add(frame, true);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
300
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
301 UIElement elm = frame;
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
302 UiWidget* widget = new UiWidget(elm);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
303
195
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
304 // sub container
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
305 UiContainer* ctn = nullptr;
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
306 switch (args.subcontainer) {
198
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
307 default:
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
308 case UI_CONTAINER_VBOX: {
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
309 ctn = new UiBoxContainer(workarea, UI_BOX_CONTAINER_VBOX, args.margin, args.spacing);
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
310 break;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
311 }
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
312 case UI_CONTAINER_HBOX: {
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
313 ctn = new UiBoxContainer(workarea, UI_BOX_CONTAINER_HBOX, args.margin, args.spacing);
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
314 break;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
315 }
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
316 case UI_CONTAINER_GRID: {
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
317 ctn = new UiGridContainer(workarea, args.margin, args.columnspacing, args.rowspacing);
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
318 break;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
319 }
195
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
320 }
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
321
193
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
322 UiObject* newobj = uic_object_new(obj, widget);
195
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
323 newobj->container = ctn;
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
324 uic_obj_add(obj, newobj);
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
325
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
326 return widget;
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
327 }
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
328
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
329 // --------------------- UI Expander ---------------------
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
330
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
331 UIWIDGET ui_expander_create(UiObject* obj, UiFrameArgs args) {
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
332 Expander expander = Expander();
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
333 if (args.label) {
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
334 wchar_t* wlabel = str2wstr(args.label, nullptr);
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
335 expander.Header(box_value(wlabel));
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
336 free(wlabel);
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
337 }
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
338 expander.IsExpanded(args.isexpanded);
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
339
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
340 // add frame to the parent container
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
341 UiObject* current = uic_current_obj(obj);
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
342 UI_APPLY_LAYOUT1(current, args);
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
343 current->container->Add(expander, true);
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
344
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
345 UIElement elm = expander;
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
346 UiWidget* widget = new UiWidget(elm);
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
347
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
348 Grid content = Grid();
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
349 expander.Content(content);
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
350
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
351 UiContainer* ctn = nullptr;
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
352 switch (args.subcontainer) {
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
353 default:
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
354 case UI_CONTAINER_VBOX: {
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
355 ctn = new UiBoxContainer(content, UI_BOX_CONTAINER_VBOX, args.margin, args.spacing);
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
356 break;
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
357 }
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
358 case UI_CONTAINER_HBOX: {
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
359 ctn = new UiBoxContainer(content, UI_BOX_CONTAINER_HBOX, args.margin, args.spacing);
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
360 break;
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
361 }
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
362 case UI_CONTAINER_GRID: {
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
363 ctn = new UiGridContainer(content, args.margin, args.columnspacing, args.rowspacing);
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
364 break;
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
365 }
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
366 }
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
367
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
368 UiObject* newobj = uic_object_new(obj, widget);
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
369 newobj->container = ctn;
193
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
370 uic_obj_add(obj, newobj);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
371
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
372 return widget;
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
373 }
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
374
194
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
375 // --------------------- UI ScrolledWindow ---------------------
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
376
195
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
377 UIWIDGET ui_scrolledwindow_create(UiObject* obj, UiFrameArgs args) {
194
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
378 ScrollViewer scrollW = ScrollViewer();
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
379
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
380 // add frame to the parent container
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
381 UiObject* current = uic_current_obj(obj);
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
382 UI_APPLY_LAYOUT1(current, args);
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
383 current->container->Add(scrollW, true);
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
384
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
385 UIElement elm = scrollW;
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
386 UiWidget* widget = new UiWidget(elm);
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
387
195
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
388 // create child container
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
389 Grid content = Grid();
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
390 scrollW.Content(content);
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
391
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
392 UiContainer* ctn = nullptr;
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
393 switch (args.subcontainer) {
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
394 default:
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
395 case UI_CONTAINER_VBOX: {
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
396 ctn = new UiBoxContainer(content, UI_BOX_CONTAINER_VBOX, args.margin, args.spacing);
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
397 break;
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
398 }
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
399 case UI_CONTAINER_HBOX: {
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
400 ctn = new UiBoxContainer(content, UI_BOX_CONTAINER_HBOX, args.margin, args.spacing);
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
401 break;
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
402 }
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
403 case UI_CONTAINER_GRID: {
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
404 ctn = new UiGridContainer(content, args.margin, args.columnspacing, args.rowspacing);
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
405 break;
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
406 }
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
407 }
194
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
408
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
409 UiObject* newobj = uic_object_new(obj, widget);
195
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
410 newobj->container = ctn;
194
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
411 uic_obj_add(obj, newobj);
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
412
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
413 return widget;
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
414 }
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
415
198
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
416 // --------------------- UI TabView ---------------------
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
417
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
418 UiTabViewContainer::UiTabViewContainer(UiTabView* tabview) {
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
419 this->tabview = tabview;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
420 }
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
421
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
422 void UiTabViewContainer::Add(FrameworkElement control, UiBool fill) {
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
423 // noop
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
424 }
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
425
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
426 static UiObject* create_subcontainer_obj(UiObject* current, Grid subcontainer, UiSubContainerType type, int margin, int spacing, int columnspacing, int rowspacing) {
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
427 UiContainer* ctn = nullptr;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
428 switch (type) {
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
429 default:
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
430 case UI_CONTAINER_VBOX: {
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
431 ctn = new UiBoxContainer(subcontainer, UI_BOX_CONTAINER_VBOX, margin, spacing);
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
432 break;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
433 }
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
434 case UI_CONTAINER_HBOX: {
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
435 ctn = new UiBoxContainer(subcontainer, UI_BOX_CONTAINER_HBOX, margin, spacing);
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
436 break;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
437 }
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
438 case UI_CONTAINER_GRID: {
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
439 ctn = new UiGridContainer(subcontainer, margin, columnspacing, rowspacing);
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
440 break;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
441 }
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
442 }
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
443
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
444 UIElement elm = subcontainer;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
445 UiWidget* widget = new UiWidget(elm);
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
446 UiObject* newobj = uic_object_new(current, widget);
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
447 newobj->container = ctn;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
448 return newobj;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
449 }
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
450
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
451 UiPivotTabView::UiPivotTabView(UiObject* obj, Pivot pivot, UiTabViewArgs args) {
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
452 this->current = obj;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
453 this->pivot = pivot;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
454 this->margin = args.margin;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
455 this->spacing = args.spacing;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
456 this->columnspacing = args.columnspacing;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
457 this->rowspacing = args.rowspacing;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
458 }
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
459
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
460 UiObject* UiPivotTabView::AddTab(const char* label) {
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
461 TextBlock text = TextBlock();
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
462 wchar_t* wlabel = str2wstr(label, nullptr);
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
463 winrt::hstring hstr(wlabel);
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
464 text.Text(hstr);
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
465 free(wlabel);
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
466
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
467 PivotItem item = PivotItem();
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
468 item.Header(text);
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
469
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
470 // sub container
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
471 Grid subcontainer = Grid();
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
472 item.Content(subcontainer);
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
473 pivot.Items().Append(item);
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
474
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
475 return create_subcontainer_obj(current, subcontainer, this->subcontainer, margin, spacing, columnspacing, rowspacing);
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
476 }
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
477
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
478 FrameworkElement UiPivotTabView::GetFrameworkElement() {
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
479 return pivot;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
480 }
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
481
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
482 static UiTabView* tabview_pivot_create(UiObject* obj, UiTabViewArgs args) {
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
483 Pivot pivot = Pivot();
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
484 UiPivotTabView* tabview = new UiPivotTabView(obj, pivot, args);
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
485
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
486 return tabview;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
487 }
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
488
199
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
489 UiMainTabView::UiMainTabView(UiObject* obj, TabView tabview, UiTabViewArgs args) {
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
490 this->current = obj;
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
491 this->tabview = tabview;
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
492 this->margin = args.margin;
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
493 this->spacing = args.spacing;
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
494 this->columnspacing = args.columnspacing;
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
495 this->rowspacing = args.rowspacing;
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
496 }
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
497
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
498 UiObject* UiMainTabView::AddTab(const char* label) {
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
499 TextBlock text = TextBlock();
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
500 wchar_t* wlabel = str2wstr(label, nullptr);
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
501 winrt::hstring hstr(wlabel);
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
502 text.Text(hstr);
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
503 free(wlabel);
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
504
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
505 TabViewItem item = TabViewItem();
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
506 item.Header(text);
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
507 item.CanDrag(false);
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
508 item.IsClosable(false);
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
509
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
510 // sub container
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
511 Grid subcontainer = Grid();
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
512 item.Content(subcontainer);
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
513 tabview.TabItems().Append(item);
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
514
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
515 return create_subcontainer_obj(current, subcontainer, this->subcontainer, margin, spacing, columnspacing, rowspacing);
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
516 }
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
517
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
518 FrameworkElement UiMainTabView::GetFrameworkElement() {
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
519 return tabview;
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
520 }
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
521
200
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
522 static UiTabView* tabview_main_create(UiObject* obj, UiTabViewArgs args) {
199
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
523 TabView tabview = TabView();
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
524 tabview.IsAddTabButtonVisible(false);
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
525 tabview.CanDragTabs(false);
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
526 tabview.CanReorderTabs(false);
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
527 UiMainTabView* uitabview = new UiMainTabView(obj, tabview, args);
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
528
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
529 return uitabview;
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
530 }
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
531
202
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
532 UiNavigationTabView::UiNavigationTabView(UiObject* obj, NavigationView navigationview, UiTabViewArgs args, UiTabViewType type) {
200
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
533 this->current = obj;
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
534 this->navigationview = navigationview;
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
535 this->type = type;
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
536 this->margin = args.margin;
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
537 this->spacing = args.spacing;
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
538 this->columnspacing = args.columnspacing;
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
539 this->rowspacing = args.rowspacing;
202
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
540
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
541 if (type == UI_TABVIEW_NAVIGATION_TOP) {
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
542 navigationview.PaneDisplayMode(NavigationViewPaneDisplayMode::Top);
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
543 }
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
544
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
545 navigationview.SelectionChanged({ this, &UiNavigationTabView::SelectionChanged });
200
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
546 }
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
547
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
548 UiObject* UiNavigationTabView::AddTab(const char* label) {
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
549 TextBlock text = TextBlock();
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
550 wchar_t* wlabel = str2wstr(label, nullptr);
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
551 winrt::hstring hstr(wlabel);
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
552 text.Text(hstr);
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
553 free(wlabel);
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
554
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
555 NavigationViewItem item = NavigationViewItem();
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
556 item.Content(text);
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
557
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
558 // sub container
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
559 Grid subcontainer = Grid();
202
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
560 if (pages.size() == 0) {
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
561 navigationview.Content(subcontainer);
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
562 navigationview.SelectedItem(item);
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
563 }
200
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
564
202
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
565 navigationview.MenuItems().Append(item);
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
566 auto page = std::tuple<NavigationViewItem, FrameworkElement>{ item, subcontainer };
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
567 pages.push_back(page);
200
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
568
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
569 return create_subcontainer_obj(current, subcontainer, this->subcontainer, margin, spacing, columnspacing, rowspacing);
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
570 }
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
571
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
572 FrameworkElement UiNavigationTabView::GetFrameworkElement() {
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
573 return navigationview;
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
574 }
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
575
202
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
576 void UiNavigationTabView::SelectionChanged(NavigationView const& sender, NavigationViewSelectionChangedEventArgs const& args) {
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
577 for (auto page : pages) {
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
578 NavigationViewItem item = std::get<0>(page);
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
579 FrameworkElement elm = std::get<1>(page);
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
580 if (item == navigationview.SelectedItem()) {
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
581 navigationview.Content(elm);
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
582 break;
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
583 }
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
584 }
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
585 }
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
586
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
587 static UiTabView* tabview_navigationview_create(UiObject* obj, UiTabViewArgs args, UiTabViewType type) {
200
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
588 NavigationView navigationview = NavigationView();
202
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
589 UiNavigationTabView* tabview = new UiNavigationTabView(obj, navigationview, args, type);
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
590 navigationview.IsBackButtonVisible(NavigationViewBackButtonVisible::Collapsed);
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
591 navigationview.IsSettingsVisible(false);
200
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
592
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
593 return tabview;
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
594 }
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
595
198
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
596 UIWIDGET ui_tabview_create(UiObject* obj, UiTabViewArgs args) {
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
597 UiTabViewType type = args.tabview == UI_TABVIEW_DEFAULT ? UI_TABVIEW_NAVIGATION_TOP2 : args.tabview;
202
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
598 UiTabView* tabview = nullptr;
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
599 switch (type) {
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
600 default: {
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
601 tabview = tabview_pivot_create(obj, args);
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
602 break;
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
603 }
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
604 case UI_TABVIEW_DOC: {
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
605 tabview = tabview_main_create(obj, args);
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
606 break;
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
607 }
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
608 case UI_TABVIEW_NAVIGATION_SIDE: {
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
609 tabview = tabview_navigationview_create(obj, args, type);
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
610 break;
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
611 }
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
612 case UI_TABVIEW_NAVIGATION_TOP: {
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
613 tabview = tabview_navigationview_create(obj, args, type);
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
614 break;
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
615 }
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
616 case UI_TABVIEW_NAVIGATION_TOP2: {
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
617 tabview = tabview_pivot_create(obj, args);
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
618 break;
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
619 }
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
620 }
198
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
621 UiTabViewContainer* ctn = new UiTabViewContainer(tabview);
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
622
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
623 // add frame to the parent container
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
624 UiObject* current = uic_current_obj(obj);
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
625 UI_APPLY_LAYOUT1(current, args);
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
626 current->container->Add(tabview->GetFrameworkElement(), true);
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
627
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
628 UIElement elm = tabview->GetFrameworkElement();
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
629 UiWidget* widget = new UiWidget(elm);
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
630 widget->data1 = tabview;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
631
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
632 UiObject* newobj = uic_object_new(obj, widget);
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
633 newobj->container = ctn;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
634 uic_obj_add(obj, newobj);
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
635
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
636 return widget;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
637 }
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
638
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
639 void ui_tab_create(UiObject* obj, const char* title) {
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
640 UiObject* current = uic_current_obj(obj);
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
641 UiTabView* tabview = (UiTabView*)current->widget->data1;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
642 UiObject* newobj = tabview->AddTab(title);
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
643 uic_obj_add(current, newobj);
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
644 }
193
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
645
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
646 /*
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
647 * -------------------- Layout Functions --------------------
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
648 *
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
649 * functions for setting layout attributes for the current container
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
650 *
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
651 */
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
652
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
653 void ui_layout_fill(UiObject* obj, UiBool fill) {
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
654 UiContainer* ct = uic_get_current_container(obj);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
655 ct->layout.fill = ui_bool2lb(fill);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
656 }
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
657
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
658 void ui_layout_hexpand(UiObject* obj, UiBool expand) {
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
659 UiContainer* ct = uic_get_current_container(obj);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
660 ct->layout.hexpand = expand;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
661 }
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
662
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
663 void ui_layout_vexpand(UiObject* obj, UiBool expand) {
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
664 UiContainer* ct = uic_get_current_container(obj);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
665 ct->layout.vexpand = expand;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
666 }
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
667
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
668 void ui_layout_width(UiObject* obj, int width) {
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
669 UiContainer* ct = uic_get_current_container(obj);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
670 ct->layout.width = width;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
671 }
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
672
186
5db4979bf482 implement new api style for ui_button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 185
diff changeset
673 void ui_layout_height(UiObject* obj, int height) {
5db4979bf482 implement new api style for ui_button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 185
diff changeset
674 UiContainer* ct = uic_get_current_container(obj);
5db4979bf482 implement new api style for ui_button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 185
diff changeset
675 ct->layout.height = height;
5db4979bf482 implement new api style for ui_button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 185
diff changeset
676 }
5db4979bf482 implement new api style for ui_button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 185
diff changeset
677
5db4979bf482 implement new api style for ui_button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 185
diff changeset
678 void ui_layout_colspan(UiObject* obj, int cols) {
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
679 UiContainer* ct = uic_get_current_container(obj);
186
5db4979bf482 implement new api style for ui_button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 185
diff changeset
680 ct->layout.colspan = cols;
5db4979bf482 implement new api style for ui_button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 185
diff changeset
681 }
5db4979bf482 implement new api style for ui_button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 185
diff changeset
682
5db4979bf482 implement new api style for ui_button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 185
diff changeset
683 void ui_layout_rowspan(UiObject* obj, int rows) {
5db4979bf482 implement new api style for ui_button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 185
diff changeset
684 UiContainer* ct = uic_get_current_container(obj);
5db4979bf482 implement new api style for ui_button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 185
diff changeset
685 ct->layout.rowspan = rows;
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
686 }
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
687
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
688 void ui_newline(UiObject* obj) {
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
689 UiContainer* ct = uic_get_current_container(obj);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
690 ct->layout.newline = TRUE;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
691 }
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
692

mercurial