ui/winui/container.cpp

2 weeks ago

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Wed, 26 Feb 2025 18:21:04 +0100 (2 weeks ago)
changeset 478
6292f93c2213
parent 476
31213068c2ba
permissions
-rw-r--r--

implement ui_customwidget_create (WINUI3)

182
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
1 /*
378
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
3 *
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
4 * Copyright 2023 Olaf Wintermann. All rights reserved.
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
5 *
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
6 * Redistribution and use in source and binary forms, with or without
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
7 * modification, are permitted provided that the following conditions are met:
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
8 *
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
9 * 1. Redistributions of source code must retain the above copyright
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
10 * notice, this list of conditions and the following disclaimer.
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
11 *
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
12 * 2. Redistributions in binary form must reproduce the above copyright
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
13 * notice, this list of conditions and the following disclaimer in the
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
14 * documentation and/or other materials provided with the distribution.
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
15 *
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
26 * POSSIBILITY OF SUCH DAMAGE.
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
27 */
182
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
478
6292f93c2213 implement ui_customwidget_create (WINUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 476
diff changeset
54 UIEXPORT UIWIDGET ui_customwidget_create(UiObject *obj, ui_createwidget_func create_widget, void *userdata, UiWidgetArgs args) {
6292f93c2213 implement ui_customwidget_create (WINUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 476
diff changeset
55 UiObject* current = uic_current_obj(obj);
6292f93c2213 implement ui_customwidget_create (WINUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 476
diff changeset
56
6292f93c2213 implement ui_customwidget_create (WINUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 476
diff changeset
57 UIWIDGET widget = create_widget(obj, args, userdata);
6292f93c2213 implement ui_customwidget_create (WINUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 476
diff changeset
58 FrameworkElement w = widget->uielement.as<FrameworkElement>();
6292f93c2213 implement ui_customwidget_create (WINUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 476
diff changeset
59
6292f93c2213 implement ui_customwidget_create (WINUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 476
diff changeset
60 UI_APPLY_LAYOUT1(current, args);
6292f93c2213 implement ui_customwidget_create (WINUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 476
diff changeset
61
6292f93c2213 implement ui_customwidget_create (WINUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 476
diff changeset
62 current->container->Add(w, false);
6292f93c2213 implement ui_customwidget_create (WINUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 476
diff changeset
63
6292f93c2213 implement ui_customwidget_create (WINUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 476
diff changeset
64 return widget;
6292f93c2213 implement ui_customwidget_create (WINUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 476
diff changeset
65 }
6292f93c2213 implement ui_customwidget_create (WINUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 476
diff changeset
66
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
67 // --------------------- UiBoxContainer ---------------------
182
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
68
190
70fd1b24e395 implement new api style for box and grid containers (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 188
diff changeset
69 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
70 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
71 UI_APPLY_LAYOUT1(current, args);
188
fbbae6738252 implement radio button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
72
fbbae6738252 implement radio button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
73 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
74 current->container->Add(grid, true);
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 UIElement elm = grid;
fbbae6738252 implement radio button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
77 UiWidget* widget = new UiWidget(elm);
212
ad5c74af14c4 add cleanup code for wrapper objects (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
78 ui_context_add_widget_destructor(current->ctx, widget);
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 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
81 newobj->container = new UiBoxContainer(grid, type, args.margin, args.spacing);
212
ad5c74af14c4 add cleanup code for wrapper objects (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
82 ui_context_add_container_destructor(current->ctx, newobj->container);
188
fbbae6738252 implement radio button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
83 uic_obj_add(obj, newobj);
fbbae6738252 implement radio button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
84
fbbae6738252 implement radio button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
85 return widget;
fbbae6738252 implement radio button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
86 }
fbbae6738252 implement radio button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
87
190
70fd1b24e395 implement new api style for box and grid containers (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 188
diff changeset
88 UIWIDGET ui_vbox_create(UiObject* obj, UiContainerArgs args) {
195
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
89 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
90 }
fbbae6738252 implement radio button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
91
190
70fd1b24e395 implement new api style for box and grid containers (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 188
diff changeset
92 UIWIDGET ui_hbox_create(UiObject* obj, UiContainerArgs args) {
195
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
93 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
94 }
fbbae6738252 implement radio button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
95
190
70fd1b24e395 implement new api style for box and grid containers (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 188
diff changeset
96 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
97 this->grid = grid;
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
98 this->type = type;
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
99
193
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
100 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
101 grid.Margin(t);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
102 grid.ColumnSpacing((double)spacing);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
103 grid.RowSpacing((double)spacing);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
104
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
105 GridLength gl;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
106 gl.Value = 1;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
107 gl.GridUnitType = GridUnitType::Star;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
108
182
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
109 // hbox needs one row def, vbox needs one col def
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
110 // 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
111 if (type == UI_BOX_CONTAINER_HBOX) {
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
112 boxRowDef = RowDefinition();
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
113 boxRowDef.Height(gl);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
114 grid.RowDefinitions().Append(boxRowDef);
182
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
115 } else {
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
116 boxColDef = ColumnDefinition();
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
117 boxColDef.Width(gl);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
118 grid.ColumnDefinitions().Append(boxColDef);
182
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
119 }
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
120
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
121 ui_reset_layout(layout);
182
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 void UiBoxContainer::Add(FrameworkElement control, UiBool fill) {
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
125 if (this->layout.fill != UI_LAYOUT_UNDEFINED) {
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
126 fill = ui_lb2bool(this->layout.fill);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
127 }
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
128
182
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
129 GridLength gl;
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
130 if (fill) {
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
131 gl.Value = 1;
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
132 gl.GridUnitType = GridUnitType::Star;
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
133 }
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
134 else {
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
135 gl.Value = 0;
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
136 gl.GridUnitType = GridUnitType::Auto;
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
137 }
378
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
138
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
139 control.HorizontalAlignment(HorizontalAlignment::Stretch);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
140 control.VerticalAlignment(VerticalAlignment::Stretch);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
141
182
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
142 if (type == UI_CONTAINER_HBOX) {
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
143 ColumnDefinition coldef = ColumnDefinition();
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
144 coldef.Width(gl);
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
145 grid.ColumnDefinitions().Append(coldef);
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
146 grid.SetColumn(control, grid.Children().Size());
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
147 grid.SetRow(control, 0);
182
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
148 } else {
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
149 RowDefinition rowdef = RowDefinition();
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
150 rowdef.Height(gl);
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
151 grid.RowDefinitions().Append(rowdef);
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
152 grid.SetRow(control, grid.Children().Size());
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
153 grid.SetColumn(control, 0);
182
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
154 }
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
155
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
156 grid.Children().Append(control);
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
157
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
158 ui_reset_layout(layout);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
159 }
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
160
188
fbbae6738252 implement radio button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
161
fbbae6738252 implement radio button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
162 // --------------------- UiGridContainer ---------------------
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
163
190
70fd1b24e395 implement new api style for box and grid containers (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 188
diff changeset
164 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
165 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
166 UI_APPLY_LAYOUT1(current, args);
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
167
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
168 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
169 current->container->Add(grid, true);
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
170
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
171 UIElement elm = grid;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
172 UiWidget* widget = new UiWidget(elm);
212
ad5c74af14c4 add cleanup code for wrapper objects (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
173 ui_context_add_widget_destructor(current->ctx, widget);
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
174
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
175 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
176 newobj->container = new UiGridContainer(grid, args.margin, args.columnspacing, args.rowspacing);
212
ad5c74af14c4 add cleanup code for wrapper objects (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
177 ui_context_add_container_destructor(current->ctx, newobj->container);
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
178 uic_obj_add(obj, newobj);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
179
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
180 return widget;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
181 }
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 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
184 this->grid = grid;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
185 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
186 grid.Margin(t);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
187 grid.ColumnSpacing((double)columnspacing);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
188 grid.RowSpacing((double)rowspacing);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
189 ui_reset_layout(layout);
182
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
190 }
6cf690e042bd add window container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
191
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
192 void UiGridContainer::Add(FrameworkElement control, UiBool fill) {
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
193 GridLength gl;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
194
377
3a60db9ebb5d implement hfill/vfill (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 374
diff changeset
195 bool hexpand = false;
3a60db9ebb5d implement hfill/vfill (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 374
diff changeset
196 bool vexpand = false;
3a60db9ebb5d implement hfill/vfill (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 374
diff changeset
197 bool hfill = false;
3a60db9ebb5d implement hfill/vfill (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 374
diff changeset
198 bool vfill = false;
3a60db9ebb5d implement hfill/vfill (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 374
diff changeset
199 if(layout.fill != UI_LAYOUT_UNDEFINED) {
3a60db9ebb5d implement hfill/vfill (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 374
diff changeset
200 fill = ui_lb2bool(layout.fill);
3a60db9ebb5d implement hfill/vfill (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 374
diff changeset
201 }
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
202 if (layout.hexpand != UI_LAYOUT_UNDEFINED) {
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
203 hexpand = layout.hexpand;
377
3a60db9ebb5d implement hfill/vfill (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 374
diff changeset
204 hfill = true;
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
205 }
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
206 if (layout.vexpand != UI_LAYOUT_UNDEFINED) {
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
207 vexpand = layout.vexpand;
377
3a60db9ebb5d implement hfill/vfill (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 374
diff changeset
208 vfill = true;
3a60db9ebb5d implement hfill/vfill (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 374
diff changeset
209 }
3a60db9ebb5d implement hfill/vfill (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 374
diff changeset
210 if (fill) {
3a60db9ebb5d implement hfill/vfill (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 374
diff changeset
211 hfill = true;
3a60db9ebb5d implement hfill/vfill (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 374
diff changeset
212 vfill = true;
185
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
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
215 // create new RowDefinition for the new line
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
216 if (layout.newline || y == -1) {
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
217 x = 0;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
218 y++;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
219 RowDefinition rowdef = RowDefinition();
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
220 if (vexpand) {
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
221 gl.GridUnitType = GridUnitType::Star;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
222 gl.Value = 1;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
223 }
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
224 else {
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
225 gl.GridUnitType = GridUnitType::Auto;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
226 gl.Value = 0;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
227 }
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
228 rowdef.Height(gl);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
229 grid.RowDefinitions().Append(rowdef);
377
3a60db9ebb5d implement hfill/vfill (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 374
diff changeset
230 } else if (vexpand) {
3a60db9ebb5d implement hfill/vfill (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 374
diff changeset
231 // adjust row
3a60db9ebb5d implement hfill/vfill (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 374
diff changeset
232 gl.GridUnitType = GridUnitType::Star;
3a60db9ebb5d implement hfill/vfill (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 374
diff changeset
233 gl.Value = 1;
3a60db9ebb5d implement hfill/vfill (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 374
diff changeset
234 grid.RowDefinitions().GetAt(y).Height(gl);
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
235 }
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 // create new columndefinition, if a new column is added
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
238 if (x == cols) {
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
239 if (hexpand) {
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
240 gl.GridUnitType = GridUnitType::Star;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
241 gl.Value = 1;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
242 }
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
243 else {
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
244 gl.GridUnitType = GridUnitType::Auto;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
245 gl.Value = 0;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
246 }
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
247 ColumnDefinition coldef = ColumnDefinition();
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
248 coldef.Width(gl);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
249 grid.ColumnDefinitions().Append(coldef);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
250 cols++;
377
3a60db9ebb5d implement hfill/vfill (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 374
diff changeset
251 } else if(hexpand) {
3a60db9ebb5d implement hfill/vfill (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 374
diff changeset
252 // adjust column
378
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
253 if (layout.colspan == 0) {
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
254 gl.GridUnitType = GridUnitType::Star;
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
255 gl.Value = 1;
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
256 grid.ColumnDefinitions().GetAt(x).Width(gl);
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
257 } else {
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
258 int adjust_col = x;
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
259 bool adjust = true;
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
260 for (int i = 0; i < layout.colspan; i++) {
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
261 if (grid.ColumnDefinitions().Size() == x + i) {
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
262 break;
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
263 }
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
264 adjust_col = x + i;
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
265 GridLength w = grid.ColumnDefinitions().GetAt(adjust_col).Width();
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
266 if (w.GridUnitType == GridUnitType::Star) {
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
267 adjust = false;
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
268 break;
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
269 }
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
270 }
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
271
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
272 if (adjust) {
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
273 gl.GridUnitType = GridUnitType::Star;
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
274 gl.Value = 1;
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
275 grid.ColumnDefinitions().GetAt(adjust_col).Width(gl);
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
276 }
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
277 }
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
278 }
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
279
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
280 // add control
377
3a60db9ebb5d implement hfill/vfill (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 374
diff changeset
281 if (hfill) {
3a60db9ebb5d implement hfill/vfill (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 374
diff changeset
282 control.HorizontalAlignment(HorizontalAlignment::Stretch);
3a60db9ebb5d implement hfill/vfill (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 374
diff changeset
283 }
3a60db9ebb5d implement hfill/vfill (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 374
diff changeset
284 if (vfill) {
3a60db9ebb5d implement hfill/vfill (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 374
diff changeset
285 control.VerticalAlignment(VerticalAlignment::Stretch);
3a60db9ebb5d implement hfill/vfill (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 374
diff changeset
286 }
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
287
186
5db4979bf482 implement new api style for ui_button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 185
diff changeset
288 if (layout.colspan > 0) {
5db4979bf482 implement new api style for ui_button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 185
diff changeset
289 grid.SetColumnSpan(control, layout.colspan);
5db4979bf482 implement new api style for ui_button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 185
diff changeset
290 }
5db4979bf482 implement new api style for ui_button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 185
diff changeset
291 if (layout.rowspan > 0) {
5db4979bf482 implement new api style for ui_button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 185
diff changeset
292 grid.SetRowSpan(control, layout.rowspan);
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
293 }
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
294
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
295 grid.SetRow(control, y);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
296 grid.SetColumn(control, x);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
297 grid.Children().Append(control);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
298
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
299 x++;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
300
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
301 ui_reset_layout(layout);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
302 }
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
303
194
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
304 // --------------------- UI Frame ---------------------
193
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
305
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
306 UIWIDGET ui_frame_create(UiObject* obj, UiFrameArgs args) {
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
307 // 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
308 Grid frame = Grid();
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
309
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
310 GridLength gl;
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
311 gl.GridUnitType = GridUnitType::Star;
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
312 gl.Value = 1;
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
313
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
314 ColumnDefinition coldef = ColumnDefinition();
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
315 coldef.Width(gl);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
316 frame.ColumnDefinitions().Append(coldef);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
317
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
318 RowDefinition rowdefFrame = RowDefinition();
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
319 rowdefFrame.Height(gl);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
320
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
321 // label
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
322 int row = 0;
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
323 if (args.label) {
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
324 RowDefinition rowdefLabel = RowDefinition();
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
325 gl.GridUnitType = GridUnitType::Auto;
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
326 gl.Value = 0;
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
327 rowdefLabel.Height(gl);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
328 frame.RowDefinitions().Append(rowdefLabel);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
329
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
330 TextBlock label = TextBlock();
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
331 wchar_t* wlabel = str2wstr(args.label, nullptr);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
332 winrt::hstring hstr(wlabel);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
333 label.Text(hstr);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
334 free(wlabel);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
335
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
336 frame.SetRow(label, row++);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
337 frame.SetColumn(label, 0);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
338 frame.Children().Append(label);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
339 }
378
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
340
193
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
341 // workarea frame
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
342 frame.RowDefinitions().Append(rowdefFrame);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
343
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
344 Grid workarea = Grid();
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
345 frame.SetRow(workarea, row);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
346 frame.SetColumn(workarea, 0);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
347 frame.Children().Append(workarea);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
348
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
349 // some styling for the workarea
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
350 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
351 workarea.BorderBrush(brush);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
352 CornerRadius radius{ 8, 8, 8, 8 };
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
353 Thickness t = { 1, 1, 1, 1 };
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
354 workarea.CornerRadius(radius);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
355 workarea.BorderThickness(t);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
356
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
357 Thickness padding = { 10, 10, 10, 10 };
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
358 workarea.Padding(padding);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
359
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
360 // add frame to the parent container
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
361 UiObject* current = uic_current_obj(obj);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
362 UI_APPLY_LAYOUT1(current, args);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
363 current->container->Add(frame, true);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
364
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
365 UIElement elm = frame;
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
366 UiWidget* widget = new UiWidget(elm);
212
ad5c74af14c4 add cleanup code for wrapper objects (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
367 ui_context_add_widget_destructor(current->ctx, widget);
193
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
368
195
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
369 // sub container
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
370 UiContainer* ctn = nullptr;
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
371 switch (args.subcontainer) {
198
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
372 default:
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
373 case UI_CONTAINER_VBOX: {
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
374 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
375 break;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
376 }
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
377 case UI_CONTAINER_HBOX: {
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
378 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
379 break;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
380 }
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
381 case UI_CONTAINER_GRID: {
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
382 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
383 break;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
384 }
195
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
385 }
212
ad5c74af14c4 add cleanup code for wrapper objects (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
386 ui_context_add_container_destructor(current->ctx, ctn);
195
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
387
193
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
388 UiObject* newobj = uic_object_new(obj, widget);
195
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
389 newobj->container = ctn;
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
390 uic_obj_add(obj, newobj);
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 return widget;
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
393 }
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
394
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
395 // --------------------- UI Expander ---------------------
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
396
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
397 UIWIDGET ui_expander_create(UiObject* obj, UiFrameArgs args) {
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
398 Expander expander = Expander();
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
399 if (args.label) {
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
400 wchar_t* wlabel = str2wstr(args.label, nullptr);
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
401 expander.Header(box_value(wlabel));
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
402 free(wlabel);
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
403 }
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
404 expander.IsExpanded(args.isexpanded);
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
405
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
406 // add frame to the parent container
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
407 UiObject* current = uic_current_obj(obj);
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
408 UI_APPLY_LAYOUT1(current, args);
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
409 current->container->Add(expander, true);
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
410
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
411 UIElement elm = expander;
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
412 UiWidget* widget = new UiWidget(elm);
212
ad5c74af14c4 add cleanup code for wrapper objects (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
413 ui_context_add_widget_destructor(current->ctx, widget);
195
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
414
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
415 Grid content = Grid();
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
416 expander.Content(content);
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
417
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
418 UiContainer* ctn = nullptr;
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
419 switch (args.subcontainer) {
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
420 default:
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
421 case UI_CONTAINER_VBOX: {
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
422 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
423 break;
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
424 }
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
425 case UI_CONTAINER_HBOX: {
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
426 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
427 break;
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
428 }
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
429 case UI_CONTAINER_GRID: {
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
430 ctn = new UiGridContainer(content, args.margin, args.columnspacing, args.rowspacing);
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
431 break;
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
432 }
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
433 }
212
ad5c74af14c4 add cleanup code for wrapper objects (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
434 ui_context_add_container_destructor(current->ctx, ctn);
195
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
435
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
436 UiObject* newobj = uic_object_new(obj, widget);
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
437 newobj->container = ctn;
193
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
438 uic_obj_add(obj, newobj);
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
439
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
440 return widget;
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
441 }
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
442
194
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
443 // --------------------- UI ScrolledWindow ---------------------
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
444
195
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
445 UIWIDGET ui_scrolledwindow_create(UiObject* obj, UiFrameArgs args) {
194
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
446 ScrollViewer scrollW = ScrollViewer();
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
447
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
448 // add frame to the parent container
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
449 UiObject* current = uic_current_obj(obj);
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
450 UI_APPLY_LAYOUT1(current, args);
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
451 current->container->Add(scrollW, true);
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
452
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
453 UIElement elm = scrollW;
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
454 UiWidget* widget = new UiWidget(elm);
212
ad5c74af14c4 add cleanup code for wrapper objects (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
455 ui_context_add_widget_destructor(current->ctx, widget);
194
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
456
195
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
457 // create child container
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
458 Grid content = Grid();
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
459 scrollW.Content(content);
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
460
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
461 UiContainer* ctn = nullptr;
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
462 switch (args.subcontainer) {
212
ad5c74af14c4 add cleanup code for wrapper objects (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
463 default:
ad5c74af14c4 add cleanup code for wrapper objects (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
464 case UI_CONTAINER_VBOX: {
ad5c74af14c4 add cleanup code for wrapper objects (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
465 ctn = new UiBoxContainer(content, UI_BOX_CONTAINER_VBOX, args.margin, args.spacing);
ad5c74af14c4 add cleanup code for wrapper objects (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
466 break;
ad5c74af14c4 add cleanup code for wrapper objects (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
467 }
ad5c74af14c4 add cleanup code for wrapper objects (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
468 case UI_CONTAINER_HBOX: {
ad5c74af14c4 add cleanup code for wrapper objects (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
469 ctn = new UiBoxContainer(content, UI_BOX_CONTAINER_HBOX, args.margin, args.spacing);
ad5c74af14c4 add cleanup code for wrapper objects (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
470 break;
ad5c74af14c4 add cleanup code for wrapper objects (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
471 }
ad5c74af14c4 add cleanup code for wrapper objects (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
472 case UI_CONTAINER_GRID: {
ad5c74af14c4 add cleanup code for wrapper objects (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
473 ctn = new UiGridContainer(content, args.margin, args.columnspacing, args.rowspacing);
ad5c74af14c4 add cleanup code for wrapper objects (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
474 break;
ad5c74af14c4 add cleanup code for wrapper objects (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
475 }
195
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
476 }
212
ad5c74af14c4 add cleanup code for wrapper objects (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
477 ui_context_add_container_destructor(current->ctx, ctn);
194
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
478
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
479 UiObject* newobj = uic_object_new(obj, widget);
195
0f2e69873875 add expander (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 194
diff changeset
480 newobj->container = ctn;
194
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
481 uic_obj_add(obj, newobj);
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
482
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
483 return widget;
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
484 }
e2281ace0769 add scrolledwindow (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 193
diff changeset
485
198
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
486 // --------------------- UI 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 UiTabViewContainer::UiTabViewContainer(UiTabView* tabview) {
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
489 this->tabview = tabview;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
490 }
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
491
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
492 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
493 // noop
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
494 }
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
495
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
496 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
497 UiContainer* ctn = nullptr;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
498 switch (type) {
212
ad5c74af14c4 add cleanup code for wrapper objects (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
499 default:
ad5c74af14c4 add cleanup code for wrapper objects (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
500 case UI_CONTAINER_VBOX: {
ad5c74af14c4 add cleanup code for wrapper objects (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
501 ctn = new UiBoxContainer(subcontainer, UI_BOX_CONTAINER_VBOX, margin, spacing);
ad5c74af14c4 add cleanup code for wrapper objects (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
502 break;
ad5c74af14c4 add cleanup code for wrapper objects (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
503 }
ad5c74af14c4 add cleanup code for wrapper objects (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
504 case UI_CONTAINER_HBOX: {
ad5c74af14c4 add cleanup code for wrapper objects (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
505 ctn = new UiBoxContainer(subcontainer, UI_BOX_CONTAINER_HBOX, margin, spacing);
ad5c74af14c4 add cleanup code for wrapper objects (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
506 break;
ad5c74af14c4 add cleanup code for wrapper objects (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
507 }
ad5c74af14c4 add cleanup code for wrapper objects (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
508 case UI_CONTAINER_GRID: {
ad5c74af14c4 add cleanup code for wrapper objects (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
509 ctn = new UiGridContainer(subcontainer, margin, columnspacing, rowspacing);
ad5c74af14c4 add cleanup code for wrapper objects (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
510 break;
ad5c74af14c4 add cleanup code for wrapper objects (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
511 }
198
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
512 }
212
ad5c74af14c4 add cleanup code for wrapper objects (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
513 ui_context_add_container_destructor(current->ctx, ctn);
198
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
514
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
515 UIElement elm = subcontainer;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
516 UiWidget* widget = new UiWidget(elm);
212
ad5c74af14c4 add cleanup code for wrapper objects (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
517 ui_context_add_widget_destructor(current->ctx, widget);
198
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
518 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
519 newobj->container = ctn;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
520 return newobj;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
521 }
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
522
378
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
523 static UiTabView* tabview_pivot_create(UiObject* obj, UiTabViewArgs args) {
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
524 Pivot pivot = Pivot();
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
525 UiPivotTabView* tabview = new UiPivotTabView(obj, pivot, args);
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
526
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
527 return tabview;
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
528 }
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
529
198
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
530 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
531 this->current = obj;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
532 this->pivot = pivot;
378
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
533 this->subcontainer = args.subcontainer;
198
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
534 this->margin = args.margin;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
535 this->spacing = args.spacing;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
536 this->columnspacing = args.columnspacing;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
537 this->rowspacing = args.rowspacing;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
538 }
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
539
374
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
540 UiObject* UiPivotTabView::AddTab(const char* label, int index) {
198
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
541 TextBlock text = TextBlock();
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
542 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
543 winrt::hstring hstr(wlabel);
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
544 text.Text(hstr);
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
545 free(wlabel);
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
546
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
547 PivotItem item = PivotItem();
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
548 item.Header(text);
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
549
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
550 // sub container
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
551 Grid subcontainer = Grid();
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
552 item.Content(subcontainer);
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
553 pivot.Items().Append(item);
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
554
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
555 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
556 }
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
557
374
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
558 void UiPivotTabView::Remove(int index) {
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
559 pivot.Items().RemoveAt(index);
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
560 }
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
561
378
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
562 void UiPivotTabView::Select(int index) {
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
563
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
564 }
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
565
198
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
566 FrameworkElement UiPivotTabView::GetFrameworkElement() {
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
567 return pivot;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
568 }
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
569
378
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
570
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
571 static UiTabView* tabview_invisible_create(UiObject *obj, UiTabViewArgs args) {
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
572 Grid container = Grid();
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
573 container.HorizontalAlignment(HorizontalAlignment::Stretch);
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
574 container.VerticalAlignment(VerticalAlignment::Stretch);
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
575 UiInvisibleTabView *tabview = new UiInvisibleTabView(obj, container, args);
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
576 return tabview;
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
577 }
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
578
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
579 UiInvisibleTabView::UiInvisibleTabView(UiObject* obj, Grid container, UiTabViewArgs args) {
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
580 this->current = obj;
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
581 this->container = container;
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
582 this->subcontainer = args.subcontainer;
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
583 this->margin = args.margin;
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
584 this->spacing = args.spacing;
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
585 this->columnspacing = args.columnspacing;
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
586 this->rowspacing = args.rowspacing;
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
587 this->currentIndex = -1;
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
588
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
589 GridLength gl;
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
590 gl.GridUnitType = GridUnitType::Star;
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
591 gl.Value = 1;
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
592
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
593 ColumnDefinition coldef = ColumnDefinition();
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
594 coldef.Width(gl);
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
595 container.ColumnDefinitions().Append(coldef);
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
596
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
597 RowDefinition rowdef = RowDefinition();
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
598 rowdef.Height(gl);
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
599 container.RowDefinitions().Append(rowdef);
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
600 }
198
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
601
378
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
602 UiObject* UiInvisibleTabView::AddTab(const char* label, int index) {
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
603 Grid subcontainer = Grid();
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
604 subcontainer.HorizontalAlignment(HorizontalAlignment::Stretch);
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
605 subcontainer.VerticalAlignment(VerticalAlignment::Stretch);
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
606
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
607 if (pages.size() == 0) {
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
608 container.Children().Append(subcontainer);
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
609 currentIndex = 0;
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
610 }
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
611
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
612 if (index < 0) {
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
613 pages.push_back(subcontainer);
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
614 } else {
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
615 pages.insert(pages.begin() + index, subcontainer);
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
616 }
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
617
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
618 // sub container
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
619 return create_subcontainer_obj(current, subcontainer, this->subcontainer, margin, spacing, columnspacing, rowspacing);
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
620 }
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
621
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
622 void UiInvisibleTabView::Remove(int index) {
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
623
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
624 }
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
625
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
626 void UiInvisibleTabView::Select(int index) {
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
627 if (index >= 0 && index < pages.size()) {
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
628 if (currentIndex != -1) {
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
629 container.Children().RemoveAt(0);
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
630 }
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
631
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
632 container.Children().Append(pages.at(index));
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
633 }
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
634 }
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
635
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
636 FrameworkElement UiInvisibleTabView::GetFrameworkElement() {
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
637 return container;
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
638 }
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
639
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
640
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
641 static UiTabView* tabview_main_create(UiObject* obj, UiTabViewArgs args) {
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
642 TabView tabview = TabView();
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
643 tabview.IsAddTabButtonVisible(false);
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
644 //tabview.CanDragTabs(false);
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
645 //tabview.CanReorderTabs(false);
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
646 UiMainTabView* uitabview = new UiMainTabView(obj, tabview, args);
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
647
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
648 return uitabview;
198
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
649 }
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
650
199
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
651 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
652 this->current = obj;
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
653 this->tabview = tabview;
378
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
654 this->subcontainer = args.subcontainer;
199
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
655 this->margin = args.margin;
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
656 this->spacing = args.spacing;
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
657 this->columnspacing = args.columnspacing;
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
658 this->rowspacing = args.rowspacing;
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
659 }
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
660
374
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
661 UiObject* UiMainTabView::AddTab(const char* label, int index) {
199
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
662 TextBlock text = TextBlock();
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
663 wchar_t* wlabel = str2wstr(label, nullptr);
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
664 winrt::hstring hstr(wlabel);
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
665 text.Text(hstr);
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
666 free(wlabel);
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
667
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
668 TabViewItem item = TabViewItem();
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
669 item.Header(text);
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
670 item.CanDrag(false);
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
671 item.IsClosable(false);
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
672
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
673 // sub container
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
674 Grid subcontainer = Grid();
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
675 item.Content(subcontainer);
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
676 tabview.TabItems().Append(item);
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
677
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
678 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
679 }
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
680
374
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
681 void UiMainTabView::Remove(int index) {
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
682 this->tabview.TabItems().RemoveAt(index);
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
683 }
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
684
378
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
685 void UiMainTabView::Select(int index) {
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
686
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
687 }
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
688
199
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
689 FrameworkElement UiMainTabView::GetFrameworkElement() {
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
690 return tabview;
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
691 }
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
692
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
693
378
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
694 static UiTabView* tabview_navigationview_create(UiObject* obj, UiTabViewArgs args, UiTabViewType type) {
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
695 NavigationView navigationview = NavigationView();
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
696 UiNavigationTabView* tabview = new UiNavigationTabView(obj, navigationview, args, type);
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
697 navigationview.IsBackButtonVisible(NavigationViewBackButtonVisible::Collapsed);
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
698 navigationview.IsSettingsVisible(false);
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
699
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
700 return tabview;
199
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
701 }
84e0a24bab4a add main tabview based on WinUI TabView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 198
diff changeset
702
202
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
703 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
704 this->current = obj;
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
705 this->navigationview = navigationview;
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
706 this->type = type;
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
707 this->margin = args.margin;
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
708 this->spacing = args.spacing;
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
709 this->columnspacing = args.columnspacing;
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
710 this->rowspacing = args.rowspacing;
202
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
711
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
712 if (type == UI_TABVIEW_NAVIGATION_TOP) {
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
713 navigationview.PaneDisplayMode(NavigationViewPaneDisplayMode::Top);
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
714 }
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
715
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
716 navigationview.SelectionChanged({ this, &UiNavigationTabView::SelectionChanged });
200
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
717 }
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
718
374
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
719 UiObject* UiNavigationTabView::AddTab(const char* label, int index1) {
200
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
720 TextBlock text = TextBlock();
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
721 wchar_t* wlabel = str2wstr(label, nullptr);
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
722 winrt::hstring hstr(wlabel);
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
723 text.Text(hstr);
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
724 free(wlabel);
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
725
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
726 NavigationViewItem item = NavigationViewItem();
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
727 item.Content(text);
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
728
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
729 // sub container
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
730 Grid subcontainer = Grid();
202
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
731 if (pages.size() == 0) {
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
732 navigationview.Content(subcontainer);
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
733 navigationview.SelectedItem(item);
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
734 }
200
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
735
202
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
736 navigationview.MenuItems().Append(item);
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
737 auto page = std::tuple<NavigationViewItem, FrameworkElement>{ item, subcontainer };
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
738 pages.push_back(page);
200
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
739
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
740 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
741 }
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
742
374
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
743 void UiNavigationTabView::Remove(int index) {
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
744 navigationview.MenuItems().RemoveAt(index);
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
745 pages.erase(pages.begin() + index);
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
746 }
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
747
378
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
748 void UiNavigationTabView::Select(int index) {
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
749
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
750 }
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
751
200
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
752 FrameworkElement UiNavigationTabView::GetFrameworkElement() {
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
753 return navigationview;
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
754 }
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
755
202
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
756 void UiNavigationTabView::SelectionChanged(NavigationView const& sender, NavigationViewSelectionChangedEventArgs const& args) {
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
757 for (auto page : pages) {
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
758 NavigationViewItem item = std::get<0>(page);
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
759 FrameworkElement elm = std::get<1>(page);
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
760 if (item == navigationview.SelectedItem()) {
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
761 navigationview.Content(elm);
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
762 break;
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
763 }
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
764 }
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
765 }
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
766
378
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
767 static int64_t ui_tabview_get(UiInteger *i) {
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
768 return 0;
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
769 }
200
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
770
378
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
771 static void ui_tabview_set(UiInteger *i, int64_t value) {
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
772 UiTabView *tabview = (UiTabView*)i->obj;
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
773 tabview->Select(value);
200
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
774 }
f40dadf3498f add unfinished navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
775
198
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
776 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
777 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
778 UiTabView* tabview = nullptr;
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
779 switch (type) {
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
780 default: {
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
781 tabview = tabview_pivot_create(obj, args);
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
782 break;
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
783 }
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
784 case UI_TABVIEW_DOC: {
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
785 tabview = tabview_main_create(obj, args);
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
786 break;
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
787 }
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
788 case UI_TABVIEW_NAVIGATION_SIDE: {
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
789 tabview = tabview_navigationview_create(obj, args, type);
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
790 break;
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
791 }
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
792 case UI_TABVIEW_NAVIGATION_TOP: {
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
793 tabview = tabview_navigationview_create(obj, args, type);
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
794 break;
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
795 }
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
796 case UI_TABVIEW_NAVIGATION_TOP2: {
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
797 tabview = tabview_pivot_create(obj, args);
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
798 break;
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
799 }
378
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
800 case UI_TABVIEW_INVISIBLE: {
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
801 tabview = tabview_invisible_create(obj, args);
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
802 break;
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
803 }
202
9f309d1914a2 finish navigationview (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 200
diff changeset
804 }
198
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
805 UiTabViewContainer* ctn = new UiTabViewContainer(tabview);
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
806
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
807 // 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
808 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
809 UI_APPLY_LAYOUT1(current, args);
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
810 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
811
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
812 UIElement elm = tabview->GetFrameworkElement();
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
813 UiWidget* widget = new UiWidget(elm);
212
ad5c74af14c4 add cleanup code for wrapper objects (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 205
diff changeset
814 ui_context_add_widget_destructor(current->ctx, widget);
198
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
815 widget->data1 = tabview;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
816
378
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
817 // TODO: add tabview destructor
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
818
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
819 // bind variable
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
820 UiVar* var = uic_widget_var(obj->ctx, current->ctx, args.value, args.varname, UI_VAR_INTEGER);
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
821 if (var) {
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
822 UiInteger *i = (UiInteger*)var->value;
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
823 i->obj = tabview;
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
824 i->get = ui_tabview_get;
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
825 i->set = ui_tabview_set;
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
826 }
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
827
198
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
828 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
829 newobj->container = ctn;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
830 uic_obj_add(obj, newobj);
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
831
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
832 return widget;
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
833 }
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
834
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
835 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
836 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
837 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
838 UiObject* newobj = tabview->AddTab(title);
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
839 uic_obj_add(current, newobj);
f2332d0d3318 add tabview based on winui the pivot control
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 195
diff changeset
840 }
193
74c688cc1839 add frame container (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 190
diff changeset
841
374
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
842 UIEXPORT void ui_tabview_select(UIWIDGET tabview, int tab) {
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
843 UiTabView* t = (UiTabView*)tabview->data1;
378
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
844 t->Select(tab);
374
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
845 }
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
846
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
847 UIEXPORT void ui_tabview_remove(UIWIDGET tabview, int tab) {
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
848 UiTabView* t = (UiTabView*)tabview->data1;
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
849 t->Remove(tab);
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
850 }
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
851
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
852 UIEXPORT UiObject* ui_tabview_add(UIWIDGET tabview, const char *name, int tab_index) {
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
853 UiTabView* t = (UiTabView*)tabview->data1;
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
854 UiObject* newobj = t->AddTab(name, tab_index);
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
855 return newobj;
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
856 }
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
857
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
858
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
859
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
860 // --------------------- UI Headerbar ---------------------
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
861
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
862 // TODO: replace placeholder implementation
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
863
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
864 UIEXPORT UIWIDGET ui_headerbar_create(UiObject *obj, UiHeaderbarArgs args) {
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
865 UiContainerArgs boxargs = { };
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
866 boxargs.fill = UI_OFF;
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
867 return ui_hbox_create(obj, boxargs);
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
868 }
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
869
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
870 UIEXPORT void ui_headerbar_start_create(UiObject *obj) {
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
871 UiContainerArgs boxargs = { };
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
872 boxargs.fill = UI_OFF;
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
873 ui_hbox_create(obj, boxargs);
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
874 }
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
875
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
876 UIEXPORT void ui_headerbar_center_create(UiObject *obj) {
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
877 UiContainerArgs boxargs = { };
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
878 boxargs.fill = UI_OFF;
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
879 ui_hbox_create(obj, boxargs);
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
880 }
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
881
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
882 UIEXPORT void ui_headerbar_end_create(UiObject *obj) {
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
883 UiContainerArgs boxargs = { };
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
884 boxargs.fill = UI_OFF;
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
885 ui_hbox_create(obj, boxargs);
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
886 }
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
887
eae5d6623fd3 add textarea (WINUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 221
diff changeset
888
478
6292f93c2213 implement ui_customwidget_create (WINUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 476
diff changeset
889
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
890 /*
378
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
891 * -------------------- Layout Functions --------------------
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
892 *
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
893 * functions for setting layout attributes for the current container
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
894 *
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
895 */
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
896
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
897 void ui_layout_fill(UiObject* obj, UiBool fill) {
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
898 UiContainer* ct = uic_get_current_container(obj);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
899 ct->layout.fill = ui_bool2lb(fill);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
900 }
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
901
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
902 void ui_layout_hexpand(UiObject* obj, UiBool expand) {
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
903 UiContainer* ct = uic_get_current_container(obj);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
904 ct->layout.hexpand = expand;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
905 }
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
906
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
907 void ui_layout_vexpand(UiObject* obj, UiBool expand) {
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
908 UiContainer* ct = uic_get_current_container(obj);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
909 ct->layout.vexpand = expand;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
910 }
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
911
378
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
912 void ui_layout_hfill(UiObject* obj, UiBool fill) {
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
913 UiContainer* ct = uic_get_current_container(obj);
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
914 ct->layout.hfill = fill;
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
915 }
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
916
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
917 void ui_layout_vfill(UiObject* obj, UiBool fill) {
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
918 UiContainer* ct = uic_get_current_container(obj);
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
919 ct->layout.vfill = fill;
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
920 }
d41b1ffc5f77 implement some missing WinUI functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 377
diff changeset
921
476
31213068c2ba fix build (WINUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 378
diff changeset
922 void ui_layout_override_defaults(UiObject* obj, UiBool def) {
31213068c2ba fix build (WINUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 378
diff changeset
923 UiContainer* ct = uic_get_current_container(obj);
31213068c2ba fix build (WINUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 378
diff changeset
924 ct->layout.override_defaults = def;
31213068c2ba fix build (WINUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 378
diff changeset
925 }
31213068c2ba fix build (WINUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 378
diff changeset
926
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
927 void ui_layout_width(UiObject* obj, int width) {
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
928 UiContainer* ct = uic_get_current_container(obj);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
929 ct->layout.width = width;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
930 }
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
931
186
5db4979bf482 implement new api style for ui_button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 185
diff changeset
932 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
933 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
934 ct->layout.height = height;
5db4979bf482 implement new api style for ui_button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 185
diff changeset
935 }
5db4979bf482 implement new api style for ui_button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 185
diff changeset
936
5db4979bf482 implement new api style for ui_button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 185
diff changeset
937 void ui_layout_colspan(UiObject* obj, int cols) {
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
938 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
939 ct->layout.colspan = cols;
5db4979bf482 implement new api style for ui_button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 185
diff changeset
940 }
5db4979bf482 implement new api style for ui_button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 185
diff changeset
941
5db4979bf482 implement new api style for ui_button (WinUI3)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 185
diff changeset
942 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
943 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
944 ct->layout.rowspan = rows;
185
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
945 }
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
946
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
947 void ui_newline(UiObject* obj) {
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
948 UiContainer* ct = uic_get_current_container(obj);
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
949 ct->layout.newline = TRUE;
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
950 }
4a8b1a748f09 implement grid container (WinUI)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
951

mercurial