From 610d3986ac4bbe706a24ef03b2fcf8af28c66b8c Mon Sep 17 00:00:00 2001 From: Dukantic Date: Fri, 18 Jul 2025 19:51:28 +0200 Subject: [PATCH] menu bar --- src/main.rs | 53 +++++++++++++++++++++++++++-------------------------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/src/main.rs b/src/main.rs index 2b4caa7..4b3b0b1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,6 @@ mod polygon_draw; use iced::keyboard::Modifiers; +use iced::widget::canvas::path::lyon_path::IterWithAttributes; use polygon_draw::Polygon; mod music; @@ -13,15 +14,20 @@ use utils::{is_delta_format_valid, str_to_sec}; use std::fs; +use iced::Font; use iced::widget::{TextInput, column, text}; +use iced::{Application, Element, Theme, executor}; use iced::{ - Color, Event, Length, Padding, Task, Theme, + Color, Event, Length, Padding, Task, event::{self, Status}, keyboard::{Key, key::Named}, widget::{Column, button, canvas, container, pick_list, row, scrollable, slider}, }; -use iced::{Element, Font}; +use iced_aw::menu::MenuBar; +use iced_aw::menu::{self, Item}; use iced_aw::widget::color_picker; +use iced_aw::widget::menu::Menu; +use iced_aw::{menu_bar, menu_items}; use std::f32::consts::PI; use std::time::Instant; @@ -320,33 +326,28 @@ impl MyApp { .collect(); let polygon_column = scrollable(Column::with_children(polygon_rows).spacing(24)); - let mut save_panel: Vec> = vec![ - button("Toggle Save Panel") - .on_press(Message::ToggleSavePanel) - .into(), - ]; - if self.show_save_panel { - save_panel.push( + let menu_tpl_1 = |items| Menu::new(items).max_width(100.0).offset(15.0).spacing(5.0); + let save_menu = menu_tpl_1(vec![ + Item::new( TextInput::new("Name File", &self.music.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( - self.all_saves.clone(), - Some(&self.music.file_name), - move |s| Message::FileNameChanged(s), - ) - .into(), - ); - - save_panel.push(button("Load").on_press(Message::Load).into()); - } + .on_input(|new_value| Message::FileNameChanged(new_value)), + ), + Item::new(button("Save").on_press(Message::Save)), + Item::new(pick_list( + self.all_saves.clone(), + Some(&self.music.file_name), + move |s| Message::FileNameChanged(s), + )), + Item::new(button("Load").on_press(Message::Load)), + ]); column![ - text("Polymusic").size(32.0), - row(save_panel).spacing(20), + menu_bar!((text("File").size(20), save_menu)( + text("Shortcut").size(20), + menu_tpl_1(vec![Item::new("󰐊 SPACE"), Item::new("󰆓 CTRL+S")]) + )) + .draw_path(menu::DrawPath::Backdrop) + .spacing(20), row![ container( canvas(self.music.current_frame(self.current_delta))