use crate::panels::hotkeys_ui::HotkeysPanel;
use crate::panels::panel_trait::Panel;
use crate::panels::thresholds_ui::ThresholdsPanel;
use crate::panels::traces_ui::TracesPanel;
use super::LivePlotPanel;
impl LivePlotPanel {
pub(crate) fn thresholds_panel_mut(&mut self) -> Option<&mut ThresholdsPanel> {
for p in self
.left_side_panels
.iter_mut()
.chain(self.right_side_panels.iter_mut())
.chain(self.bottom_panels.iter_mut())
.chain(self.detached_panels.iter_mut())
.chain(self.empty_panels.iter_mut())
{
if let Some(tp) = p.downcast_mut::<ThresholdsPanel>() {
return Some(tp);
}
}
None
}
pub(crate) fn traces_panel_mut(&mut self) -> Option<&mut TracesPanel> {
for p in self
.left_side_panels
.iter_mut()
.chain(self.right_side_panels.iter_mut())
.chain(self.bottom_panels.iter_mut())
.chain(self.detached_panels.iter_mut())
.chain(self.empty_panels.iter_mut())
{
if let Some(tp) = p.downcast_mut::<TracesPanel>() {
return Some(tp);
}
}
None
}
pub(crate) fn toggle_panel_visibility<T: 'static + Panel>(&mut self) -> bool {
for p in self
.left_side_panels
.iter_mut()
.chain(self.right_side_panels.iter_mut())
.chain(self.bottom_panels.iter_mut())
.chain(self.detached_panels.iter_mut())
.chain(self.empty_panels.iter_mut())
{
if p.downcast_ref::<T>().is_some() {
let st = p.state_mut();
let currently_shown = st.visible && !st.detached;
st.visible = !currently_shown;
st.detached = false;
return true;
}
}
false
}
pub fn hide_hotkeys_panel(&mut self) {
for p in self
.left_side_panels
.iter_mut()
.chain(self.right_side_panels.iter_mut())
.chain(self.bottom_panels.iter_mut())
.chain(self.detached_panels.iter_mut())
.chain(self.empty_panels.iter_mut())
{
if p.downcast_ref::<HotkeysPanel>().is_some() {
p.state_mut().visible = false;
}
}
}
}