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(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}