From a66bc5ca5efed83eb473c77d059fe367500a8434 Mon Sep 17 00:00:00 2001 From: unspeaker Date: Tue, 14 Jan 2025 20:27:48 +0100 Subject: [PATCH] wip: edn keymaps are handled! --- tek/src/lib.rs | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/tek/src/lib.rs b/tek/src/lib.rs index fdb10ae0..9efddf6c 100644 --- a/tek/src/lib.rs +++ b/tek/src/lib.rs @@ -383,17 +383,18 @@ handle!(TuiIn: |self: App, input|{ let mut command: Option = None; let edns: Vec> = EdnItem::read_all(Self::KEYS_APP)?; for item in edns { - match item { - Exp(e) => match e.as_slice() { + if let Exp(e) = item { + match e.as_slice() { [Sym(key), c, args @ ..] if input.matches_edn(key) => { command = AppCommand::from_edn(self, c, args); if command.is_some() { break } - } + }, _ => {} - }, - _ => panic!("invalid config") + } + } else { + panic!("invalid config") } } Ok(if let Some(command) = command { @@ -420,13 +421,14 @@ handle!(TuiIn: |self: App, input|{ Zoom(Option), } edn_command!(AppCommand: |state: App| { - ("color" [c: Color] Self::Color(c.map(ItemPalette::from).unwrap_or_default())) - ("compact" [c: bool ] Self::Compact(c)) - ("enqueue" [c: Arc>] Self::Enqueue(c)) - ("history" [d: isize] Self::History(d.unwrap_or(0))) - ("select" [s: Selection] Self::Select(s.expect("no selection"))) ("stop-all" [] Self::StopAll) + ("compact" [c: bool] Self::Compact(c)) + ("color" [c: Color] Self::Color(c.map(ItemPalette::from).unwrap_or_default())) + ("undo" [d: usize] Self::History(-(d.unwrap_or(0)as isize))) + ("redo" [d: usize] Self::History(d.unwrap_or(0) as isize)) ("zoom" [z: usize] Self::Zoom(z)) + ("select" [s: Selection] Self::Select(s.expect("no selection"))) + ("enqueue" [c: Arc>] Self::Enqueue(c)) ("clip" [a, ..b] Self::Clip( ClipCommand::from_edn(state, &a.to_ref(), b).expect("invalid command"))) @@ -444,8 +446,8 @@ edn_command!(AppCommand: |state: App| { TrackCommand::from_edn(state, &a.to_ref(), b).expect("invalid command"))) }); command!(|self: AppCommand, state: App|match self { - Self::Zoom(_) => { todo!(); }, - Self::History(delta) => { todo!("undo/redo") }, + Self::Zoom(_) => { println!("\n\rtodo: global zoom"); None }, + Self::History(delta) => { println!("\n\rtodo: undo/redo"); None }, Self::Select(s) => { state.selected = s; None }, Self::Clock(cmd) => cmd.delegate(state, Self::Clock)?, Self::Scene(cmd) => cmd.delegate(state, Self::Scene)?,