Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2e61e5b629 | |||
| ea708dfe85 |
45
src/main.rs
45
src/main.rs
@@ -13,11 +13,11 @@ use utils::{is_delta_format_valid, str_to_sec};
|
||||
use std::fs;
|
||||
|
||||
use iced::widget::{TextInput, column, text};
|
||||
use iced::{Element, Font, Subscription};
|
||||
use iced::{
|
||||
Color, Length, Task, Theme,
|
||||
Color, Length, Padding, Task, Theme, padding,
|
||||
widget::{Column, button, canvas, container, pick_list, row, scrollable, slider},
|
||||
};
|
||||
use iced::{Element, Font, Subscription};
|
||||
use iced_aw::widget::color_picker;
|
||||
|
||||
use std::f32::consts::PI;
|
||||
@@ -70,6 +70,7 @@ struct MyApp {
|
||||
current_delta: f32,
|
||||
str_music_length: String,
|
||||
str_time: String,
|
||||
can_unpaused: bool,
|
||||
}
|
||||
|
||||
impl MyApp {
|
||||
@@ -91,18 +92,13 @@ impl MyApp {
|
||||
current_delta: 0.0,
|
||||
str_music_length: "01:00:00".to_string(),
|
||||
str_time: "00:00:00".to_string(),
|
||||
can_unpaused: true,
|
||||
},
|
||||
Task::none(),
|
||||
)
|
||||
}
|
||||
fn update(&mut self, message: Message) {
|
||||
match message {
|
||||
Message::ButtonPressedIncrement => self.music.nb_sec_for_rev += 0.5,
|
||||
Message::ButtonPressedDecrement => {
|
||||
if self.music.nb_sec_for_rev > 0.5 {
|
||||
self.music.nb_sec_for_rev -= 0.5;
|
||||
}
|
||||
}
|
||||
Message::AddPolygon(s) => {
|
||||
self.music.add_polygon(self.current_delta, s);
|
||||
}
|
||||
@@ -206,7 +202,7 @@ impl MyApp {
|
||||
}
|
||||
match mut_s.parse::<f32>() {
|
||||
Ok(val) => {
|
||||
if val <= 360. {
|
||||
if val >= 0. && val <= 360. {
|
||||
self.update(Message::ChangeTeta(i, (val).to_radians()))
|
||||
}
|
||||
}
|
||||
@@ -219,7 +215,7 @@ impl MyApp {
|
||||
match mut_s.parse::<f32>() {
|
||||
Ok(val) => {
|
||||
let val = (val * 10.).floor() / 10.;
|
||||
if val >= 1. {
|
||||
if val >= 1. && val < 1000. {
|
||||
self.music.nb_sec_for_rev = val
|
||||
}
|
||||
}
|
||||
@@ -229,18 +225,21 @@ impl MyApp {
|
||||
}
|
||||
Message::CancelColor(i) => {
|
||||
self.music.set_color_picker(self.current_delta, i, false);
|
||||
self.paused = false;
|
||||
self.can_unpaused = true;
|
||||
}
|
||||
Message::SubmitColor(i) => {
|
||||
if !self.paused {
|
||||
self.update(Message::TogglePaused);
|
||||
}
|
||||
self.can_unpaused = false;
|
||||
self.music.set_color_picker(self.current_delta, i, true);
|
||||
}
|
||||
Message::ChooseColor(i, color) => {
|
||||
self.music.set_color(self.current_delta, i, color);
|
||||
self.music.set_color_picker(self.current_delta, i, false);
|
||||
self.can_unpaused = true;
|
||||
}
|
||||
Message::None => {}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -280,14 +279,16 @@ impl MyApp {
|
||||
new_value
|
||||
))
|
||||
.width(Length::FillPortion(1)),
|
||||
slider(0.0..=2.0 * PI, polygon.global_teta, move |f| {
|
||||
Message::ChangeTeta(current_index, f)
|
||||
})
|
||||
.step(PI / 84f32) // 84 | 4 for do PI / 4
|
||||
.width(Length::FillPortion(9))
|
||||
.height(32),
|
||||
row![
|
||||
slider(0.0..=2.0 * PI, polygon.global_teta, move |f| {
|
||||
Message::ChangeTeta(current_index, f)
|
||||
})
|
||||
.step(2. * PI / 10_000.)
|
||||
.width(Length::FillPortion(9))
|
||||
]
|
||||
.padding(Padding::from(16)),
|
||||
]
|
||||
.spacing(10),
|
||||
.spacing(5),
|
||||
]
|
||||
.spacing(10)
|
||||
.into();
|
||||
@@ -314,7 +315,7 @@ impl MyApp {
|
||||
.chain(ngon_options)
|
||||
.collect();
|
||||
|
||||
let polygon_column = scrollable(Column::with_children(polygon_rows).spacing(20));
|
||||
let polygon_column = scrollable(Column::with_children(polygon_rows).spacing(24));
|
||||
let mut save_panel: Vec<Element<Message>> = vec![
|
||||
button("Toggle Save Panel")
|
||||
.on_press(Message::ToggleSavePanel)
|
||||
@@ -365,7 +366,11 @@ impl MyApp {
|
||||
column![
|
||||
row![
|
||||
button(text(if self.paused { "" } else { "" }).size(28).center())
|
||||
.on_press(Message::TogglePaused)
|
||||
.on_press(if self.can_unpaused {
|
||||
Message::TogglePaused
|
||||
} else {
|
||||
Message::None
|
||||
})
|
||||
.width(Length::FillPortion(1)),
|
||||
row![
|
||||
TextInput::new("MM:SS:CS", &self.str_time)
|
||||
|
||||
@@ -2,6 +2,7 @@ use iced::Color;
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub enum Message {
|
||||
None,
|
||||
ChangeNbPerSec(String),
|
||||
Tick,
|
||||
AddPolygon(String),
|
||||
|
||||
Reference in New Issue
Block a user