Add logic to close device selection window

This commit is contained in:
Lucas Schumacher 2024-06-03 20:20:16 -04:00
parent 8978be49bd
commit 9f18bb6920

View File

@ -25,6 +25,7 @@ pub struct TemplateApp {
_backends: backend::Backends, _backends: backend::Backends,
_selected_backend: usize, _selected_backend: usize,
_open_device: Option<Box<dyn backend::Device>>, _open_device: Option<Box<dyn backend::Device>>,
device_window_open: bool,
} }
impl TemplateApp { impl TemplateApp {
@ -57,6 +58,7 @@ impl TemplateApp {
_backends: Backends::default(), _backends: Backends::default(),
_selected_backend: 0, _selected_backend: 0,
_open_device: None, _open_device: None,
device_window_open: true,
} }
} }
} }
@ -87,13 +89,16 @@ impl eframe::App for TemplateApp {
egui::menu::bar(ui, |ui| { egui::menu::bar(ui, |ui| {
// NOTE: no File->Quit on web pages! // NOTE: no File->Quit on web pages!
let is_web = cfg!(target_arch = "wasm32"); let is_web = cfg!(target_arch = "wasm32");
if !is_web {
ui.menu_button("File", |ui| { ui.menu_button("File", |ui| {
if ui.button("Open Device").clicked() {
self.device_window_open = true;
}
if !is_web {
if ui.button("Quit").clicked() { if ui.button("Quit").clicked() {
ctx.send_viewport_cmd(egui::ViewportCommand::Close); ctx.send_viewport_cmd(egui::ViewportCommand::Close);
} }
});
} }
});
self.plots.render_menu_buttons(ui); self.plots.render_menu_buttons(ui);
ui.add_space(16.0); ui.add_space(16.0);
@ -103,7 +108,12 @@ impl eframe::App for TemplateApp {
self.plots.render_plot_windows(ctx); self.plots.render_plot_windows(ctx);
if self._open_device.is_none() {
self.device_window_open = true;
}
let mut close_device_window = false;
egui::Window::new("Select Device") egui::Window::new("Select Device")
.open(&mut self.device_window_open)
.default_width(600.0) .default_width(600.0)
.default_height(400.0) .default_height(400.0)
.vscroll(false) .vscroll(false)
@ -129,7 +139,6 @@ impl eframe::App for TemplateApp {
); );
}); });
}); });
//egui::CentralPanel::default().show_inside(ui, |ui| {
ui.vertical_centered(|ui| { ui.vertical_centered(|ui| {
egui::ScrollArea::vertical().show(ui, |ui| { egui::ScrollArea::vertical().show(ui, |ui| {
//if self._selected_backend < self._backends.0.len() { //if self._selected_backend < self._backends.0.len() {
@ -142,6 +151,7 @@ impl eframe::App for TemplateApp {
b.build_device(self._fft.tx.clone(), self.plots.get_sender()) b.build_device(self._fft.tx.clone(), self.plots.get_sender())
{ {
self._open_device = Some(device); self._open_device = Some(device);
close_device_window = true;
} }
} }
} else { } else {
@ -150,6 +160,9 @@ impl eframe::App for TemplateApp {
}); });
}); });
}); });
if close_device_window {
self.device_window_open = false;
}
egui::CentralPanel::default().show(ctx, |ui| { egui::CentralPanel::default().show(ctx, |ui| {
// The central panel the region left after adding TopPanel's and SidePanel's // The central panel the region left after adding TopPanel's and SidePanel's