1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
use crate::foundation::{Id, Key, WidgetProperties};
#[derive(Debug, Clone)]
pub struct ListProperties {
// Widget options
/// The key to identify widget
pub key: Key,
/// The control x position, relative to its container
pub x: f32,
/// The control y position, relative to its container
pub y: f32,
/// The control width
pub w: f32,
/// The control height
pub h: f32,
/// The control minimum width
pub w_min: f32,
/// The control minimum height
pub h_min: f32,
/// The control maximum width
pub w_max: f32,
/// The control maximum height
pub h_max: f32,
/// The control parent, if any
pub parent: Option<Id>, // should used to fetch WidgetComponent
/// The control depth. Usually set internally
pub depth: f32,
/// Whether or not the control is visible at creation
pub visible: bool,
/// Whether or not the control responds to mouse input
pub mouse_input: bool,
/// Whether or not the control responds to key input
pub key_input: bool,
/// Whether or not the control emits render signals from the canvas render call
pub renderable: bool,
/// Internal. Internal parent visibility for creating sub controls.
pub internal_visible: bool,
}
impl WidgetProperties for ListProperties {
fn key(&self) -> &Key {
&self.key
}
fn x(&self) -> f32 {
self.x
}
fn y(&self) -> f32 {
self.y
}
fn w(&self) -> f32 {
self.w
}
fn h(&self) -> f32 {
self.h
}
fn w_min(&self) -> f32 {
self.w_min
}
fn h_min(&self) -> f32 {
self.h_min
}
fn w_max(&self) -> f32 {
self.w_max
}
fn h_max(&self) -> f32 {
self.h_max
}
fn parent(&self) -> Option<Id> {
self.parent
}
fn depth(&self) -> f32 {
self.depth
}
fn visible(&self) -> bool {
self.visible
}
fn mouse_input(&self) -> bool {
self.mouse_input
}
fn key_input(&self) -> bool {
self.key_input
}
fn renderable(&self) -> bool {
self.renderable
}
fn internal_visible(&self) -> bool {
self.internal_visible
}
}
impl Default for ListProperties {
fn default() -> Self {
Self {
key: Default::default(),
x: Default::default(),
y: Default::default(),
w: 32.0,
h: 32.0,
w_min: Default::default(),
h_min: Default::default(),
w_max: Default::default(),
h_max: Default::default(),
parent: Default::default(),
depth: Default::default(),
visible: true,
mouse_input: true,
key_input: Default::default(),
renderable: true,
internal_visible: Default::default(),
}
}
}