This commit is contained in:
2025-07-17 22:18:44 +02:00
parent 2e61e5b629
commit 3788c3e631
2 changed files with 18 additions and 5 deletions

View File

@@ -1,4 +1,6 @@
mod polygon_draw;
use iced::advanced::graphics::core::SmolStr;
use iced::keyboard::{Key, Modifiers};
use polygon_draw::Polygon;
mod music;
@@ -14,7 +16,7 @@ use std::fs;
use iced::widget::{TextInput, column, text};
use iced::{
Color, Length, Padding, Task, Theme, padding,
Color, Length, Padding, Task, Theme, keyboard,
widget::{Column, button, canvas, container, pick_list, row, scrollable, slider},
};
use iced::{Element, Font, Subscription};
@@ -129,6 +131,7 @@ impl MyApp {
self.music.set_sound(self.current_delta, i, sound, s);
}
Message::Save => {
dbg!("Save file");
let json = serde_json::to_string_pretty(&self.music).unwrap();
fs::write(format!("./saves/{0}.pmx", &self.music.file_name), json).unwrap();
self.all_saves = load_path_saves();
@@ -210,7 +213,7 @@ impl MyApp {
}
}
Message::ChangeNbPerSec(s) => {
let mut_s = s.trim_end_matches(" rev/sec");
let mut_s = s.trim_end_matches(" sec/rev");
if mut_s.len() != s.len() {
match mut_s.parse::<f32>() {
Ok(val) => {
@@ -382,7 +385,7 @@ impl MyApp {
.size(28),
]
.width(Length::FillPortion(10)),
TextInput::new("1.0", &format!("{:.1} rev/sec", &self.music.nb_sec_for_rev))
TextInput::new("1.0", &format!("{:.1} sec/rev", &self.music.nb_sec_for_rev))
.on_input(|new_value| Message::ChangeNbPerSec(new_value))
.size(28)
.width(Length::FillPortion(2)),
@@ -423,9 +426,18 @@ impl MyApp {
fn subscription(&self) -> iced::Subscription<Message> {
if self.paused {
Subscription::none() // ➝ désactive toutes les subscriptions
Subscription::none()
} else {
iced::time::every(std::time::Duration::from_millis(16)).map(|_| Message::Tick)
Subscription::batch(vec![
iced::time::every(std::time::Duration::from_millis(16)).map(|_| Message::Tick),
iced::keyboard::on_key_press(|key: Key, modifiers: Modifiers| {
println!("Key pressed: {:?}, Modifiers: {:?}", key, modifiers);
match (key, modifiers) {
(Key::Character(c), m) if m.control() && c == "s" => Some(Message::Save),
_ => None,
}
}),
])
}
}