From 8a8d7b870498d3e29d1a921e8ad598531fde23cc Mon Sep 17 00:00:00 2001 From: unspeaker Date: Fri, 28 Jun 2024 23:19:25 +0300 Subject: [PATCH] big worky on sequencer and launcher --- src/device.rs | 2 +- src/device/chain.rs | 37 ++- src/device/launcher.rs | 464 +++++++---------------------- src/device/launcher/grid.rs | 157 ++++++++++ src/device/launcher/handle.rs | 194 ++++++++++++ src/device/sampler.rs | 183 ++++++------ src/device/sequencer.rs | 246 +++------------ src/device/sequencer/handle.rs | 190 ++++++++++++ src/device/sequencer/horizontal.rs | 15 +- src/device/sequencer/keys.rs | 1 - src/device/track.rs | 5 +- src/layout/mod.rs | 2 + src/layout/table.rs | 33 ++ src/prelude.rs | 3 + 14 files changed, 852 insertions(+), 680 deletions(-) create mode 100644 src/device/launcher/grid.rs create mode 100644 src/device/launcher/handle.rs create mode 100644 src/device/sequencer/handle.rs create mode 100644 src/layout/table.rs diff --git a/src/device.rs b/src/device.rs index f9880e35..a584699a 100644 --- a/src/device.rs +++ b/src/device.rs @@ -16,7 +16,7 @@ pub use self::looper::Looper; pub use self::mixer::Mixer; pub use self::plugin::Plugin; pub use self::sampler::Sampler; -pub use self::sequencer::Sequencer; +pub use self::sequencer::{Sequencer, Phrase}; pub use self::track::Track; pub use self::transport::Transport; diff --git a/src/device/chain.rs b/src/device/chain.rs index 79db4507..8a2d8e0d 100644 --- a/src/device/chain.rs +++ b/src/device/chain.rs @@ -16,12 +16,12 @@ pub enum ChainView { } impl Chain { - pub fn new (name: &str, items: Vec>) -> Result, Box> { + pub fn new (name: &str, items: Option>>) -> Result, Box> { Ok(DynamicDevice::new(render, handle, process, Self { name: name.into(), focused: false, focus: 0, - items, + items: items.unwrap_or_else(||vec![]), view: ChainView::Column })) } @@ -116,16 +116,35 @@ pub fn draw_as_row ( state: &Chain, buf: &mut Buffer, area: Rect, selected: Option