summaryrefslogtreecommitdiffstats
path: root/src/ui/current_system_widget.rs
diff options
context:
space:
mode:
authorJon Santmyer <jon@jonsantmyer.com>2026-05-24 13:04:10 -0400
committerJon Santmyer <jon@jonsantmyer.com>2026-05-24 13:04:10 -0400
commit0b428d94e751dc4a5fbe19418bfb5994cebfa54c (patch)
treebe9c338ec6b5e40ddb96d2d8ecb498b362851a2f /src/ui/current_system_widget.rs
parent14ca7b5fc15eb2618b46bde0cac85e37ebc9ebd9 (diff)
downloadsystemic4x-0b428d94e751dc4a5fbe19418bfb5994cebfa54c.tar.gz
systemic4x-0b428d94e751dc4a5fbe19418bfb5994cebfa54c.tar.bz2
systemic4x-0b428d94e751dc4a5fbe19418bfb5994cebfa54c.zip
major ui reworkHEADmain
Diffstat (limited to 'src/ui/current_system_widget.rs')
-rw-r--r--src/ui/current_system_widget.rs47
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
+ }
+}