diff options
| author | Jon Santmyer <jon@jonsantmyer.com> | 2026-05-24 13:04:10 -0400 |
|---|---|---|
| committer | Jon Santmyer <jon@jonsantmyer.com> | 2026-05-24 13:04:10 -0400 |
| commit | 0b428d94e751dc4a5fbe19418bfb5994cebfa54c (patch) | |
| tree | be9c338ec6b5e40ddb96d2d8ecb498b362851a2f /src/ui/current_system_widget.rs | |
| parent | 14ca7b5fc15eb2618b46bde0cac85e37ebc9ebd9 (diff) | |
| download | systemic4x-main.tar.gz systemic4x-main.tar.bz2 systemic4x-main.zip | |
Diffstat (limited to 'src/ui/current_system_widget.rs')
| -rw-r--r-- | src/ui/current_system_widget.rs | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/ui/current_system_widget.rs b/src/ui/current_system_widget.rs new file mode 100644 index 0000000..f7aa940 --- /dev/null +++ b/src/ui/current_system_widget.rs @@ -0,0 +1,47 @@ +use crate::solar_system::{SolarSystem, SystemId}; + +pub struct CurrentSystemWidget<'frame> +{ + star_systems: &'frame [SolarSystem], + current_system: &'frame mut Option<SystemId>, +} + +impl<'frame> CurrentSystemWidget<'frame> { + pub fn new( + star_systems: &'frame [SolarSystem], + current_system: &'frame mut Option<SystemId>) + -> Self { + Self { + star_systems, + current_system + } + } +} + +impl<'frame> egui::Widget for CurrentSystemWidget<'frame> +{ + fn ui(self, ui: &mut egui::Ui) -> egui::Response { + let selected_label = match self.current_system { + Some(id) => &self.star_systems[*id].name(), + None => "Click to open" + }; + + ui.vertical(|vertical| { + vertical.label("Current System"); + let resp = egui::ComboBox::new("current_system", egui::WidgetText::default()) + .selected_text(selected_label) + .show_ui(vertical, + |combo_box| { + for system in self.star_systems.iter() { + let entry_value = Some(system.id()); + combo_box.selectable_value( + self.current_system, + entry_value, + system.name()); + } + }); + + resp.response + }).inner + } +} |
