fluid_parser/
ast.rs

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}