1#[derive(Default, Debug)]
2pub struct ParentProps {
3 pub location: Option<String>,
4}
5
6#[derive(Default, Debug)]
7pub struct WidgetProps {
8 pub open: Option<bool>,
9 pub xywh: String,
10 pub label: Option<String>,
11 pub typ: Option<String>,
12 pub hide: Option<bool>,
13 pub deactivate: Option<bool>,
14 pub visible: Option<bool>,
15 pub modal: Option<bool>,
16 pub non_modal: Option<bool>,
17 pub noborder: Option<bool>,
18 pub xclass: Option<String>,
19 pub size_range: Option<String>,
20 pub resizable: Option<bool>,
21 pub hotspot: Option<bool>,
22 pub divider: Option<bool>,
23 pub selected: Option<bool>,
24 pub color: Option<u32>,
25 pub selection_color: Option<u32>,
26 pub tooltip: Option<String>,
27 pub image: Option<String>,
28 pub deimage: Option<String>,
29 pub r#box: Option<String>,
30 pub down_box: Option<String>,
31 pub value: Option<String>,
32 pub labeltype: Option<String>,
33 pub labelfont: Option<i32>,
34 pub labelsize: Option<i32>,
35 pub labelcolor: Option<u32>,
36 pub align: Option<i32>,
37 pub when: Option<i32>,
38 pub minimum: Option<f64>,
39 pub maximum: Option<f64>,
40 pub step: Option<f64>,
41 pub slider_size: Option<f64>,
42 pub size: Option<f64>,
43 pub textfont: Option<i32>,
44 pub textsize: Option<i32>,
45 pub textcolor: Option<u32>,
46 pub class: Option<String>,
47 pub shortcut: Option<String>,
48 pub code0: Option<String>,
49 pub code1: Option<String>,
50 pub code2: Option<String>,
51 pub code3: Option<String>,
52 pub extra_code: Option<String>,
53 pub size_tuple: Option<String>,
54 pub margins: Option<String>,
55 pub gap: Option<String>,
56 pub user_data: Option<String>,
57 pub user_data_type: Option<String>,
58 pub callback: Option<String>,
59 pub comment: Option<String>,
60 pub dimensions: Option<String>,
61 pub margin: Option<String>,
62 pub parent_properties: Option<ParentProps>,
63}
64
65#[derive(Debug, Default)]
66pub struct Widget {
67 pub typ: String,
68 pub name: String,
69 pub props: WidgetProps,
70 pub children: Vec<Widget>,
71}
72
73#[derive(Default, Debug, PartialEq, Eq, Copy, Clone)]
74pub enum Visibility {
75 #[default]
76 PUBLIC,
77 PRIVATE,
78 PROTECTED,
79}
80
81#[derive(Debug, Default)]
82pub struct FunctionProps {
83 pub visibility: Option<Visibility>,
84 pub open: Option<bool>,
85 pub c: Option<bool>,
86 pub return_type: Option<String>,
87 pub comment: Option<String>,
88}
89
90#[derive(Debug, Default)]
91pub struct Function {
92 pub name: String,
93 pub props: FunctionProps,
94 pub code: Option<String>,
95 pub widgets: Vec<Widget>,
96}
97
98#[derive(Debug, Default)]
99pub struct ClassProps {
100 pub visibility: Option<Visibility>,
101 pub open: Option<bool>,
102 pub comment: Option<String>,
103}
104
105#[derive(Debug, Default)]
106pub struct Class {
107 pub name: String,
108 pub props: ClassProps,
109 pub functions: Vec<Function>,
110}
111
112#[derive(Debug, Default)]
113pub struct DeclProps {
114 pub visibility: Visibility,
115 pub global: Option<bool>,
116 pub local: Option<bool>,
117}
118
119#[derive(Debug, Default)]
120pub struct Decl {
121 pub decl: String,
122 pub props: DeclProps,
123}
124
125#[derive(Debug, Default)]
126pub struct CommentProps {
127 pub in_source: Option<bool>,
128 pub in_header: Option<bool>,
129}
130
131#[derive(Debug, Default)]
132pub struct Comment {
133 pub comment: String,
134 pub props: CommentProps,
135}
136
137#[derive(Debug, Default)]
138pub struct Ast {
139 pub i18n_type: Option<bool>,
140 pub classes: Vec<Class>,
141 pub widget_classes: Vec<Widget>,
142 pub functions: Vec<Function>,
143 pub comments: Vec<Comment>,
144 pub decls: Vec<Decl>,
145}