gui_pb/drawing/
extra_opts.rs

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
use crate::drawing::settings::num;
use crate::App;
use core_pb::messages::ExtraOptsTypes;
use eframe::egui;
use eframe::egui::Ui;

pub fn draw_extra_opts(app: &mut App, ui: &mut Ui) {
    ui.heading("Extra Opts (for temporary testing only)");

    ui.checkbox(
        &mut app.settings.robots[app.ui_settings.selected_robot as usize].extra_opts_enabled,
        "Extra opts enabled",
    );

    let set = &mut app.settings.robots[app.ui_settings.selected_robot as usize].extra_opts;
    let mut def = ExtraOptsTypes::default();
    let mut def2 = ExtraOptsTypes::default();
    let rcv = app.server_status.robots[app.ui_settings.selected_robot as usize]
        .received_extra_opts
        .as_mut()
        .unwrap_or(&mut def);
    let ind = app.server_status.robots[app.ui_settings.selected_robot as usize]
        .extra_indicators
        .as_mut()
        .unwrap_or(&mut def2);
    let fields = app.settings_fields.as_mut().unwrap();

    egui::Grid::new("opts grid")
        .num_columns(3)
        .striped(true)
        .show(ui, |ui| {
            ui.label("Set options here");
            ui.label("Robot received options");
            ui.label("Robot extra indicators");
            ui.end_row();
            for i in 0..set.opts_bool.len() {
                ui.checkbox(&mut set.opts_bool[i], format!("Boolean {i}"));
                ui.add_enabled_ui(false, |ui| ui.checkbox(&mut rcv.opts_bool[i], ""));
                ui.add_enabled_ui(false, |ui| ui.checkbox(&mut ind.opts_bool[i], ""));
                ui.end_row();
            }
            ui.label("");
            ui.label("");
            ui.label("");
            ui.end_row();
            for i in 0..set.opts_f32.len() {
                num(
                    format!("opts f32 {i}"),
                    ui,
                    fields,
                    &mut set.opts_f32[i],
                    format!("f32 {i}"),
                    false,
                );
                ui.label(format!("{:?}", rcv.opts_f32[i]));
                ui.label(format!("{:?}", ind.opts_f32[i]));
                ui.end_row();
            }
            ui.label("");
            ui.label("");
            ui.label("");
            ui.end_row();
            for i in 0..set.opts_i8.len() {
                num(
                    format!("opts i8 {i}"),
                    ui,
                    fields,
                    &mut set.opts_i8[i],
                    format!("i8 {i}"),
                    false,
                );
                ui.label(format!("{:?}", rcv.opts_i8[i]));
                ui.label(format!("{:?}", ind.opts_i8[i]));
                ui.end_row();
            }
            ui.label("");
            ui.label("");
            ui.label("");
            ui.end_row();
            for i in 0..set.opts_i32.len() {
                num(
                    format!("opts i32 {i}"),
                    ui,
                    fields,
                    &mut set.opts_i32[i],
                    format!("i32 {i}"),
                    false,
                );
                ui.label(format!("{:?}", rcv.opts_i32[i]));
                ui.label(format!("{:?}", ind.opts_i32[i]));
                ui.end_row();
            }
        });
}