eulumdat_ui/widgets/
mod.rs1mod cartesian;
4mod heatmap;
5mod info;
6mod polar;
7mod validation;
8
9pub use cartesian::CartesianWidget;
10pub use heatmap::HeatmapWidget;
11pub use info::InfoPanel;
12pub use polar::PolarWidget;
13pub use validation::ValidationPanel;
14
15#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
17#[cfg_attr(feature = "persistence", derive(serde::Serialize, serde::Deserialize))]
18pub enum DiagramTab {
19 Info,
20 #[default]
21 Polar,
22 Cartesian,
23 Heatmap,
24 #[cfg(feature = "3d")]
25 Viewer3D,
26 Validation,
27}
28
29pub struct EditorPanel;
31
32impl EditorPanel {
33 pub fn show(ui: &mut egui::Ui, ldt: &mut eulumdat::Eulumdat) {
34 egui::ScrollArea::vertical().show(ui, |ui| {
35 ui.heading("Luminaire Information");
36 ui.separator();
37
38 egui::Grid::new("info_grid")
39 .num_columns(2)
40 .spacing([20.0, 4.0])
41 .show(ui, |ui| {
42 ui.label("Name:");
43 ui.text_edit_singleline(&mut ldt.luminaire_name);
44 ui.end_row();
45
46 ui.label("Manufacturer:");
47 ui.text_edit_singleline(&mut ldt.identification);
48 ui.end_row();
49
50 ui.label("Description:");
51 ui.text_edit_singleline(&mut ldt.luminaire_number);
52 ui.end_row();
53 });
54
55 ui.separator();
56 ui.heading("Dimensions (mm)");
57
58 egui::Grid::new("dimensions_grid")
59 .num_columns(2)
60 .spacing([20.0, 4.0])
61 .show(ui, |ui| {
62 ui.label("Length:");
63 ui.add(egui::DragValue::new(&mut ldt.length).speed(1.0));
64 ui.end_row();
65
66 ui.label("Width:");
67 ui.add(egui::DragValue::new(&mut ldt.width).speed(1.0));
68 ui.end_row();
69
70 ui.label("Height:");
71 ui.add(egui::DragValue::new(&mut ldt.height).speed(1.0));
72 ui.end_row();
73 });
74 });
75 }
76}