wip: modularize dialog

This commit is contained in:
🪞👃🪞 2025-05-18 18:32:39 +03:00
parent baad8254a2
commit 3e9545fe26
17 changed files with 171 additions and 173 deletions

View file

@ -18,7 +18,7 @@ pub struct App {
/// Contains the currently edited musical arrangement
pub project: Arrangement,
/// Undo history
pub history: Vec<AppCommand>,
pub history: Vec<(AppCommand, Option<AppCommand>)>,
// Dialog overlay
pub dialog: Option<Dialog>,
// Cache of formatted strings
@ -179,9 +179,6 @@ impl App {
fn focus_editor (&self) -> bool {
self.project.editor.is_some()
}
fn is_editing (&self) -> bool {
self.project.editor.is_some()
}
fn focus_message (&self) -> bool {
matches!(self.dialog, Some(Dialog::Message(..)))
}
@ -192,16 +189,20 @@ impl App {
self.browser().is_some()
}
fn focus_clip (&self) -> bool {
!self.is_editing() && self.selection().is_clip()
!self.focus_editor() && matches!(self.selection(),
Selection::TrackClip{..})
}
fn focus_track (&self) -> bool {
!self.is_editing() && self.selection().is_track()
!self.focus_editor() && matches!(self.selection(),
Selection::Track(..))
}
fn focus_scene (&self) -> bool {
!self.is_editing() && self.selection().is_scene()
!self.focus_editor() && matches!(self.selection(),
Selection::Scene(..))
}
fn focus_mix (&self) -> bool {
!self.is_editing() && self.selection().is_mix()
!self.focus_editor() && matches!(self.selection(),
Selection::Mix)
}
fn focus_pool_import (&self) -> bool {
matches!(self.pool.mode, Some(PoolMode::Import(..)))
@ -260,29 +261,32 @@ impl App {
fn scene_count (&self) -> usize {
self.scenes().len()
}
fn scene_selection (&self) -> Option<usize> {
fn scene_selected (&self) -> Option<usize> {
self.selection().scene()
}
fn track_count (&self) -> usize {
self.tracks().len()
}
fn track_selection (&self) -> Option<usize> {
fn track_selected (&self) -> Option<usize> {
self.selection().track()
}
fn select_scene (&self) -> Selection {
self.selection().select_scene(self.tracks().len())
}
fn select_scene_next (&self) -> Selection {
self.selection().scene_next(self.scenes().len())
self.selection().select_scene_next(self.scenes().len())
}
fn select_scene_prev (&self) -> Selection {
self.selection().scene_prev()
self.selection().select_scene_prev()
}
fn select_track_header (&self) -> Selection {
self.selection().track_header(self.tracks().len())
fn select_track (&self) -> Selection {
self.selection().select_track(self.tracks().len())
}
fn select_track_next (&self) -> Selection {
self.selection().track_next(self.tracks().len())
self.selection().select_track_next(self.tracks().len())
}
fn select_track_prev (&self) -> Selection {
self.selection().track_prev()
self.selection().select_track_prev()
}
fn clip_selected (&self) -> Option<Arc<RwLock<MidiClip>>> {
match self.selection() {