wip: running interface in separate or combined mode

also disassociating render functions from state structs
This commit is contained in:
🪞👃🪞 2024-05-28 22:13:20 +03:00
parent f9218e887a
commit d6bf840a1f
31 changed files with 905 additions and 532 deletions

48
src/mixer/handle.rs Normal file
View file

@ -0,0 +1,48 @@
use crate::prelude::*;
use super::Mixer;
pub fn handle (
state: &mut Mixer,
event: crossterm::event::Event
) -> Result<(), Box<dyn Error>> {
use crossterm::event::{Event, KeyCode, KeyModifiers};
if let Event::Key(event) = event {
match event.code {
KeyCode::Char('c') => {
if event.modifiers == KeyModifiers::CONTROL {
state.exit = true;
}
},
KeyCode::Down => {
state.selected_track = (state.selected_track + 1) % state.tracks.len();
println!("{}", state.selected_track);
},
KeyCode::Up => {
if state.selected_track == 0 {
state.selected_track = state.tracks.len() - 1;
} else {
state.selected_track = state.selected_track - 1;
}
println!("{}", state.selected_track);
},
KeyCode::Left => {
if state.selected_column == 0 {
state.selected_column = 6
} else {
state.selected_column = state.selected_column - 1;
}
},
KeyCode::Right => {
if state.selected_column == 6 {
state.selected_column = 0
} else {
state.selected_column = state.selected_column + 1;
}
},
_ => {
println!("{event:?}");
}
}
}
Ok(())
}