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
#[derive(Serialize, Deserialize, Debug, PartialEq)] #[serde(rename_all = "snake_case", tag = "type")] pub enum WidgetDescription { TabBook(TabBookDescription), ResultGrid(ResultGridDescription), AlignmentBox(AlignmentBoxDescription), PropertyBox(PropertyBoxDescription), Curve(CurveDescription), ResultTable(ResultTableDescription), StatisticsTable(StatisticsTableDescription), } #[derive(Serialize, Deserialize, Debug, PartialEq)] #[serde(rename_all = "snake_case", tag = "type")] pub enum WidgetDescriptionWithProperty { ResultTable(ResultTableDescription), StatisticsTable(StatisticsTableDescription), } #[derive(Serialize, Deserialize, Debug, PartialEq)] #[serde(rename_all = "snake_case")] pub enum TabPosition { North, East, South, West, } #[derive(Serialize, Deserialize, Debug, PartialEq)] #[serde(rename_all = "snake_case")] pub enum Orientation { Horizontal, Vertical, } #[derive(Serialize, Deserialize, Debug, PartialEq)] #[serde(rename_all = "snake_case")] pub struct TabBookDescription { pub tabs: Vec<TabPageDescription>, pub tab_position: TabPosition, } #[derive(Serialize, Deserialize, Debug, PartialEq)] #[serde(rename_all = "snake_case", tag = "type")] pub enum TabLabelDescription { ThemeIcon(IconReference), DeviceIcon(IconReference), Caption(Caption), } #[derive(Serialize, Deserialize, Debug, PartialEq)] #[serde(rename_all = "snake_case")] pub struct IconReference { pub icon: String, } #[derive(Serialize, Deserialize, Debug, PartialEq)] #[serde(rename_all = "snake_case")] pub struct CurveDescription { pub curve: String, } #[derive(Serialize, Deserialize, Debug, PartialEq)] #[serde(rename_all = "snake_case")] pub struct Caption { #[serde(rename = "_caption")] pub caption: String, } #[derive(Serialize, Deserialize, Debug, PartialEq)] #[serde(rename_all = "snake_case")] pub struct TabPageDescription { pub label: TabLabelDescription, pub child: Box<WidgetDescription>, } #[derive(Serialize, Deserialize, Debug, PartialEq)] #[serde(rename_all = "snake_case")] pub struct ResultGridDescription { pub columns: u8, } #[derive(Serialize, Deserialize, Debug, PartialEq)] #[serde(rename_all = "snake_case")] pub struct AlignmentBoxDescription { pub children: Vec<AlignmentBoxChildDescription>, pub orientation: Orientation, } #[derive(Serialize, Deserialize, Debug, PartialEq)] #[serde(rename_all = "snake_case")] pub struct AlignmentBoxChildDescription { pub child: Box<WidgetDescription>, pub relative_width: u32, } #[derive(Serialize, Deserialize, Debug, PartialEq)] #[serde(rename_all = "snake_case")] pub struct PropertyBoxDescription { #[serde(default, skip_serializing_if = "Option::is_none")] pub child: Option<WidgetDescriptionWithProperty>, } #[derive(Serialize, Deserialize, Debug, PartialEq)] #[serde(rename_all = "snake_case")] pub struct ResultTableDescription {} #[derive(Serialize, Deserialize, Debug, PartialEq)] #[serde(rename_all = "snake_case")] pub struct StatisticsTableDescription {}