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(Debug, PartialEq, Eq, Copy, Clone)]
74pub enum Visibility {
75 PUBLIC,
76 PRIVATE,
77 PROTECTED,
78}
79
80impl Default for Visibility {
81 fn default() -> Self {
82 Visibility::PUBLIC
83 }
84}
85
86#[derive(Debug, Default)]
87pub struct FunctionProps {
88 pub visibility: Option<Visibility>,
89 pub open: Option<bool>,
90 pub c: Option<bool>,
91 pub return_type: Option<String>,
92 pub comment: Option<String>,
93}
94
95#[derive(Debug, Default)]
96pub struct Function {
97 pub name: String,
98 pub props: FunctionProps,
99 pub code: Option<String>,
100 pub widgets: Vec<Widget>,
101}
102
103#[derive(Debug, Default)]
104pub struct ClassProps {
105 pub visibility: Option<Visibility>,
106 pub open: Option<bool>,
107 pub comment: Option<String>,
108}
109
110#[derive(Debug, Default)]
111pub struct Class {
112 pub name: String,
113 pub props: ClassProps,
114 pub functions: Vec<Function>,
115}
116
117#[derive(Debug, Default)]
118pub struct DeclProps {
119 pub visibility: Visibility,
120 pub global: Option<bool>,
121 pub local: Option<bool>,
122}
123
124#[derive(Debug, Default)]
125pub struct Decl {
126 pub decl: String,
127 pub props: DeclProps,
128}
129
130#[derive(Debug, Default)]
131pub struct CommentProps {
132 pub in_source: Option<bool>,
133 pub in_header: Option<bool>,
134}
135
136#[derive(Debug, Default)]
137pub struct Comment {
138 pub comment: String,
139 pub props: CommentProps,
140}
141
142#[derive(Debug, Default)]
143pub struct Ast {
144 pub i18n_type: Option<bool>,
145 pub classes: Vec<Class>,
146 pub widget_classes: Vec<Widget>,
147 pub functions: Vec<Function>,
148 pub comments: Vec<Comment>,
149 pub decls: Vec<Decl>,
150}