diff --git a/saves/test_save.json b/saves/test_save.json new file mode 100644 index 0000000..8e8fa5a --- /dev/null +++ b/saves/test_save.json @@ -0,0 +1,9 @@ +{ + "poly_frame": { + "teta": 3.7117934, + "polygons": [] + }, + "nb_sec_for_rev": 4.0, + "file_name": "test_save.json", + "show_save_panel": true +} \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index d3c1a04..6e30bcc 100644 --- a/src/main.rs +++ b/src/main.rs @@ -9,7 +9,7 @@ use std::fs; use iced::{ Color, Element, Length, Task, Theme, time::{self, Duration}, - widget::{Column, button, canvas, column, container, pick_list, row, slider, text}, + widget::{Column, TextInput, button, canvas, column, container, pick_list, row, slider, text}, }; use serde::{Deserialize, Serialize}; @@ -41,6 +41,7 @@ enum Message { ToggleSavePanel, Save, Load, + FileNameChanged(String), } #[derive(Serialize, Deserialize)] @@ -195,6 +196,7 @@ impl MyApp { self.poly_frame.update(); } Message::ToggleSavePanel => self.show_save_panel = !self.show_save_panel, + Message::FileNameChanged(s) => self.file_name = s, } } @@ -266,9 +268,26 @@ impl MyApp { .on_press(Message::ToggleSavePanel) .into(), ]; + let mut entries_saves: Vec = fs::read_dir("./saves") + .unwrap() + .filter_map(|res| res.ok()) + .map(|e| e.path().file_name().unwrap().to_str().unwrap().to_string()) + .collect(); if self.show_save_panel { + save_panel.push( + TextInput::new("Name File", &self.file_name) + .on_input(|new_value| Message::FileNameChanged(new_value)) + .into(), + ); save_panel.push(button("Save").on_press(Message::Save).into()); + save_panel.push( + pick_list(entries_saves, Some(&self.file_name), move |s| { + Message::FileNameChanged(s) + }) + .into(), + ); + save_panel.push(button("Load").on_press(Message::Load).into()); } column![