save and load is done

This commit is contained in:
2025-07-05 20:47:11 +02:00
parent 9c2a3d5d72
commit f0f9981ca9
2 changed files with 29 additions and 1 deletions

9
saves/test_save.json Normal file
View File

@@ -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
}

View File

@@ -9,7 +9,7 @@ use std::fs;
use iced::{ use iced::{
Color, Element, Length, Task, Theme, Color, Element, Length, Task, Theme,
time::{self, Duration}, 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}; use serde::{Deserialize, Serialize};
@@ -41,6 +41,7 @@ enum Message {
ToggleSavePanel, ToggleSavePanel,
Save, Save,
Load, Load,
FileNameChanged(String),
} }
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
@@ -195,6 +196,7 @@ impl MyApp {
self.poly_frame.update(); self.poly_frame.update();
} }
Message::ToggleSavePanel => self.show_save_panel = !self.show_save_panel, 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) .on_press(Message::ToggleSavePanel)
.into(), .into(),
]; ];
let mut entries_saves: Vec<String> = 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 { 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(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()); save_panel.push(button("Load").on_press(Message::Load).into());
} }
column![ column![