diff --git a/src/ui/panes.rs b/src/ui/panes.rs index 8750e9a453e223349edf428252912a9fe63ba7e2..b41623dfc02039396356af778ccaa4fa261227df 100644 --- a/src/ui/panes.rs +++ b/src/ui/panes.rs @@ -1,5 +1,6 @@ mod default; mod messages_viewer; +mod pid; mod pid_drawing_tool; pub mod plot; @@ -88,7 +89,12 @@ pub enum PaneKind { #[strum(message = "Plot 2D")] Plot2D(plot::Plot2DPane), - PidDrawingTool(pid_drawing_tool::PidPane), + + #[strum(message = "PID Old")] + PidOld(pid_drawing_tool::PidPane), + + #[strum(message = "PID New")] + Pid(pid::Pid), } impl Default for PaneKind { diff --git a/src/ui/panes/default.rs b/src/ui/panes/default.rs index 1271daade20d5b9b2ab83379517aeea135e487e0..c3f7979e5ec83ea72df13087940f2fec997af02b 100644 --- a/src/ui/panes/default.rs +++ b/src/ui/panes/default.rs @@ -1,5 +1,4 @@ use super::PaneBehavior; -use super::{pid_drawing_tool::PidPane, plot::Plot2DPane, Pane, PaneBehavior, PaneKind}; use serde::{Deserialize, Serialize}; use tracing::debug; @@ -40,11 +39,6 @@ impl PaneBehavior for DefaultPane { if ui.button("Widget Gallery").clicked() { response.set_action(PaneAction::ReplaceThroughGallery(Some(tile_id))); } - if ui.button("Pid Drawing Tool").clicked() { - response.set_action(PaneAction::Replace(Pane::boxed( - PaneKind::PidDrawingTool(PidPane::default()), - ))); - } }) .response }); diff --git a/src/ui/panes/pid_drawing_tool.rs b/src/ui/panes/pid_drawing_tool.rs index b7b5bbaada800354191af830d4917a2ecc78f0ca..0b68be7608c1178dec86908d3a729a420c7870c9 100644 --- a/src/ui/panes/pid_drawing_tool.rs +++ b/src/ui/panes/pid_drawing_tool.rs @@ -6,6 +6,7 @@ mod symbols; use connections::Connection; use core::f32; use egui::{Color32, Context, CursorIcon, PointerButton, Response, Sense, Theme, Ui}; +use egui_tiles::TileId; use elements::Element; use glam::Vec2; use grid::GridInfo; @@ -54,7 +55,7 @@ impl PartialEq for PidPane { } impl PaneBehavior for PidPane { - fn ui(&mut self, ui: &mut egui::Ui) -> PaneResponse { + fn ui(&mut self, ui: &mut egui::Ui, _: TileId) -> PaneResponse { let theme = PidPane::find_theme(ui.ctx()); if self.center_content && !self.editable { diff --git a/src/ui/panes/pid_drawing_tool/symbols.rs b/src/ui/panes/pid_drawing_tool/symbols.rs index 1245043d5c62f000ad683d0c76c6ed1cce1d4759..d4b92f3ed0f2f811c2b7f6d6b31cf2f1d6d32454 100644 --- a/src/ui/panes/pid_drawing_tool/symbols.rs +++ b/src/ui/panes/pid_drawing_tool/symbols.rs @@ -6,6 +6,8 @@ use motor_valve::MotorValve; use serde::{Deserialize, Serialize}; use strum_macros::{Display, EnumIter}; +use crate::mavlink::ViewId; + #[derive(Clone, Serialize, Deserialize, PartialEq, EnumIter, Display, Debug)] pub enum Symbol { Arrow, @@ -172,7 +174,7 @@ struct MavlinkValue { field: String, #[serde(skip)] - view_id: egui::Id, + view_id: ViewId, } #[derive(Deserialize)] @@ -186,7 +188,7 @@ impl From<SerialMavlinkValue> for MavlinkValue { Self { msg_id: value.msg_id, field: value.field, - view_id: egui::Id::new(""), + view_id: ViewId::new(), } } } diff --git a/src/ui/panes/pid_drawing_tool/symbols/motor_valve.rs b/src/ui/panes/pid_drawing_tool/symbols/motor_valve.rs index af4f38f55f56eef934762ba41ab9218be32d8111..3fd42c80f15021c2216c01ed733b2d8004d2b4e5 100644 --- a/src/ui/panes/pid_drawing_tool/symbols/motor_valve.rs +++ b/src/ui/panes/pid_drawing_tool/symbols/motor_valve.rs @@ -1,4 +1,4 @@ -use crate::mavlink::{extract_from_message, MavlinkResult, MessageView, TimedMessage}; +use crate::mavlink::{extract_from_message, MavlinkResult, MessageView, TimedMessage, ViewId}; use super::MavlinkValue; @@ -19,7 +19,7 @@ impl Default for MotorValve { source: MavlinkValue { msg_id: orion::GSE_TM_DATA::ID, field: "n2o_filling_valve_state".to_string(), - view_id: egui::Id::new(""), + view_id: ViewId::new(), }, last_value: None, } @@ -27,8 +27,8 @@ impl Default for MotorValve { } impl MessageView for MotorValve { - fn widget_id(&self) -> &egui::Id { - &self.source.view_id + fn view_id(&self) -> ViewId { + self.source.view_id } fn id_of_interest(&self) -> u32 {