mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-06 03:36:41 +01:00
move expose/impose to tengri; wtf now!
This commit is contained in:
parent
0257aa2b61
commit
1b253dc273
5 changed files with 48 additions and 75 deletions
24
Cargo.lock
generated
24
Cargo.lock
generated
|
|
@ -621,9 +621,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libc"
|
name = "libc"
|
||||||
version = "0.2.171"
|
version = "0.2.172"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6"
|
checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libloading"
|
name = "libloading"
|
||||||
|
|
@ -1580,8 +1580,8 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tengri"
|
name = "tengri"
|
||||||
version = "0.7.1"
|
version = "0.9.1"
|
||||||
source = "git+https://codeberg.org/unspeaker/tengri?rev=3429557#34295570a278fe8ebdea1a17124a9541cbe68d38"
|
source = "git+https://codeberg.org/unspeaker/tengri?rev=6048d24#6048d24880324a6b411b6a8723ad95546e2edbe3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"tengri_dsl",
|
"tengri_dsl",
|
||||||
"tengri_input",
|
"tengri_input",
|
||||||
|
|
@ -1591,8 +1591,8 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tengri_dsl"
|
name = "tengri_dsl"
|
||||||
version = "0.7.1"
|
version = "0.9.1"
|
||||||
source = "git+https://codeberg.org/unspeaker/tengri?rev=3429557#34295570a278fe8ebdea1a17124a9541cbe68d38"
|
source = "git+https://codeberg.org/unspeaker/tengri?rev=6048d24#6048d24880324a6b411b6a8723ad95546e2edbe3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"itertools 0.14.0",
|
"itertools 0.14.0",
|
||||||
"konst",
|
"konst",
|
||||||
|
|
@ -1601,24 +1601,24 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tengri_input"
|
name = "tengri_input"
|
||||||
version = "0.7.1"
|
version = "0.9.1"
|
||||||
source = "git+https://codeberg.org/unspeaker/tengri?rev=3429557#34295570a278fe8ebdea1a17124a9541cbe68d38"
|
source = "git+https://codeberg.org/unspeaker/tengri?rev=6048d24#6048d24880324a6b411b6a8723ad95546e2edbe3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"tengri_dsl",
|
"tengri_dsl",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tengri_output"
|
name = "tengri_output"
|
||||||
version = "0.7.1"
|
version = "0.9.1"
|
||||||
source = "git+https://codeberg.org/unspeaker/tengri?rev=3429557#34295570a278fe8ebdea1a17124a9541cbe68d38"
|
source = "git+https://codeberg.org/unspeaker/tengri?rev=6048d24#6048d24880324a6b411b6a8723ad95546e2edbe3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"tengri_dsl",
|
"tengri_dsl",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tengri_tui"
|
name = "tengri_tui"
|
||||||
version = "0.7.1"
|
version = "0.9.1"
|
||||||
source = "git+https://codeberg.org/unspeaker/tengri?rev=3429557#34295570a278fe8ebdea1a17124a9541cbe68d38"
|
source = "git+https://codeberg.org/unspeaker/tengri?rev=6048d24#6048d24880324a6b411b6a8723ad95546e2edbe3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"atomic_float",
|
"atomic_float",
|
||||||
"better-panic",
|
"better-panic",
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ lto = false
|
||||||
|
|
||||||
[workspace.dependencies.tengri]
|
[workspace.dependencies.tengri]
|
||||||
git = "https://codeberg.org/unspeaker/tengri"
|
git = "https://codeberg.org/unspeaker/tengri"
|
||||||
rev = "3429557"
|
rev = "6048d24"
|
||||||
features = [ "tui", "dsl" ]
|
features = [ "tui", "dsl" ]
|
||||||
|
|
||||||
[workspace.dependencies]
|
[workspace.dependencies]
|
||||||
|
|
|
||||||
|
|
@ -1,33 +1,40 @@
|
||||||
use crate::*;
|
use crate::*;
|
||||||
|
|
||||||
macro_rules! expose {
|
view!(TuiOut: |self: Tek| self.size.of(View(self, self.view)); {
|
||||||
($([$self:ident:$State:ty] { $($Type:ty => { $($pat:pat => $expr:expr),* $(,)? })* })*) => {
|
//":inputs" => self.view_inputs().boxed(),
|
||||||
$(expose!(@impl [$self: $State] { $($Type => { $($pat => $expr),* })* });)*
|
//":outputs" => self.view_outputs().boxed(),
|
||||||
};
|
//":scene-add" => self.view_scene_add().boxed(),
|
||||||
(@impl [$self:ident:$State:ty] { $($Type:ty => { $($pat:pat => $expr:expr),* $(,)? })* }) => {
|
//":scenes" => self.view_scenes().boxed(),
|
||||||
$(expose!(@type $Type [$self: $State] => { $($pat => $expr),* });)*
|
//":tracks" => self.view_tracks().boxed(),
|
||||||
};
|
":nil" => Box::new("nil"),
|
||||||
(@type bool [$self:ident: $State:ty] => { $($pat:pat => $expr:expr),* $(,)? }) => {
|
":transport" => self.view_transport().boxed(),
|
||||||
provide_bool!(bool: |$self: $State| { $($pat => $expr),* });
|
":arranger" => ArrangerView::new(self).boxed(),
|
||||||
};
|
":editor" => self.editor.as_ref().map(|e|Bsp::e(e.clip_status(), e.edit_status())).boxed(),
|
||||||
(@type isize [$self:ident: $State:ty] => { $($pat:pat => $expr:expr),* $(,)? }) => {
|
":sample" => ().boxed(),//self.view_sample(self.is_editing()).boxed(),
|
||||||
provide_num!(isize: |$self: $State| { $($pat => $expr),* });
|
":sampler" => ().boxed(),//self.view_sampler(self.is_editing(), &self.editor).boxed(),
|
||||||
};
|
":status" => self.view_status().boxed(),
|
||||||
(@type usize [$self:ident: $State:ty] => { $($pat:pat => $expr:expr),* $(,)? }) => {
|
":pool" => self.pool.as_ref()
|
||||||
provide_num!(usize: |$self: $State| { $($pat => $expr),* });
|
.map(|pool|Fixed::x(self.w_sidebar(), PoolView(self.is_editing(), pool)))
|
||||||
};
|
.boxed(),
|
||||||
(@type $Type:ty [$self:ident: $State:ty] => { $($pat:pat => $expr:expr),* $(,)? }) => {
|
});
|
||||||
provide!($Type: |$self: $State| { $($pat => $expr),* });
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
expose!([self: Tek] {
|
expose!([self: Tek] {
|
||||||
bool => {}
|
bool => {}
|
||||||
isize => {}
|
u16 => {
|
||||||
|
":h-ins" => self.h_inputs(),
|
||||||
|
":h-outs" => self.h_outputs(),
|
||||||
|
":h-sample" => if self.is_editing() { 0 } else { 5 },
|
||||||
|
":w-samples" => if self.is_editing() { 4 } else { 11 },
|
||||||
|
":w-sidebar" => self.w_sidebar(),
|
||||||
|
":y-ins" => (self.size.h() as u16).saturating_sub(self.h_inputs() + 1),
|
||||||
|
":y-outs" => (self.size.h() as u16).saturating_sub(self.h_outputs() + 1),
|
||||||
|
":y-samples" => if self.is_editing() { 1 } else { 0 },
|
||||||
|
}
|
||||||
usize => {
|
usize => {
|
||||||
":scene-last" => self.scenes.len(),
|
":scene-last" => self.scenes.len(),
|
||||||
":track-last" => self.tracks.len(),
|
":track-last" => self.tracks.len(),
|
||||||
}
|
}
|
||||||
|
isize => {}
|
||||||
Option<usize> => {
|
Option<usize> => {
|
||||||
":scene" => self.selected.scene(),
|
":scene" => self.selected.scene(),
|
||||||
":track" => self.selected.track(),
|
":track" => self.selected.track(),
|
||||||
|
|
@ -76,12 +83,6 @@ expose!([self: Tek] {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
macro_rules! impose {
|
|
||||||
([$self:ident:$Struct:ty] { $($Command:ty => $variants:tt)* }) => {
|
|
||||||
$(atom_command!($Command: |$self: $Struct| $variants);)*
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
impose!([app: Tek] {
|
impose!([app: Tek] {
|
||||||
|
|
||||||
TekCommand => {
|
TekCommand => {
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,7 @@ impl<'a> Content<TuiOut> for ArrangerView<'a> {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> ArrangerView<'a> {
|
impl<'a> ArrangerView<'a> {
|
||||||
fn new (app: &'a Tek) -> Self {
|
pub fn new (app: &'a Tek) -> Self {
|
||||||
Self {
|
Self {
|
||||||
app,
|
app,
|
||||||
is_editing: app.is_editing(),
|
is_editing: app.is_editing(),
|
||||||
|
|
@ -199,34 +199,6 @@ impl Tek {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
view!(TuiOut: |self: Tek| self.size.of(View(self, self.view)); {
|
|
||||||
//":inputs" => self.view_inputs().boxed(),
|
|
||||||
//":outputs" => self.view_outputs().boxed(),
|
|
||||||
//":scene-add" => self.view_scene_add().boxed(),
|
|
||||||
//":scenes" => self.view_scenes().boxed(),
|
|
||||||
//":tracks" => self.view_tracks().boxed(),
|
|
||||||
":nil" => Box::new("nil"),
|
|
||||||
":transport" => self.view_transport().boxed(),
|
|
||||||
":arranger" => ArrangerView::new(self).boxed(),
|
|
||||||
":editor" => self.editor.as_ref().map(|e|Bsp::e(e.clip_status(), e.edit_status())).boxed(),
|
|
||||||
":sample" => ().boxed(),//self.view_sample(self.is_editing()).boxed(),
|
|
||||||
":sampler" => ().boxed(),//self.view_sampler(self.is_editing(), &self.editor).boxed(),
|
|
||||||
":status" => self.view_status().boxed(),
|
|
||||||
":pool" => self.pool.as_ref()
|
|
||||||
.map(|pool|Fixed::x(self.w_sidebar(), PoolView(self.is_editing(), pool)))
|
|
||||||
.boxed(),
|
|
||||||
});
|
|
||||||
provide_num!(u16: |self: Tek| {
|
|
||||||
":h-ins" => self.h_inputs(),
|
|
||||||
":h-outs" => self.h_outputs(),
|
|
||||||
":h-sample" => if self.is_editing() { 0 } else { 5 },
|
|
||||||
":w-samples" => if self.is_editing() { 4 } else { 11 },
|
|
||||||
":w-sidebar" => self.w_sidebar(),
|
|
||||||
":y-ins" => (self.size.h() as u16).saturating_sub(self.h_inputs() + 1),
|
|
||||||
":y-outs" => (self.size.h() as u16).saturating_sub(self.h_outputs() + 1),
|
|
||||||
":y-samples" => if self.is_editing() { 1 } else { 0 },
|
|
||||||
});
|
|
||||||
|
|
||||||
#[cfg(test)] #[test] fn test_view_iter () {
|
#[cfg(test)] #[test] fn test_view_iter () {
|
||||||
let mut tek = Tek::default();
|
let mut tek = Tek::default();
|
||||||
tek.editor = Some(Default::default());
|
tek.editor = Some(Default::default());
|
||||||
|
|
|
||||||
|
|
@ -143,12 +143,12 @@ impl MidiEditor {
|
||||||
let (color, length) = if let Some(clip) = self.clip().as_ref().map(|p|p.read().unwrap()) {
|
let (color, length) = if let Some(clip) = self.clip().as_ref().map(|p|p.read().unwrap()) {
|
||||||
(clip.color, clip.length)
|
(clip.color, clip.length)
|
||||||
} else { (ItemPalette::G[64], 0) };
|
} else { (ItemPalette::G[64], 0) };
|
||||||
let time_pos = self.time_pos();
|
let time_pos = self.time_pos();
|
||||||
let time_zoom = self.time_zoom().get();
|
let time_zoom = self.time_zoom().get();
|
||||||
let time_lock = if self.time_lock().get() { "[lock]" } else { " " };
|
let time_lock = if self.time_lock().get() { "[lock]" } else { " " };
|
||||||
let note_pos = format!("{:>3}", self.note_pos());
|
let note_pos = format!("{:>3}", self.note_pos());
|
||||||
let note_name = format!("{:4}", Note::pitch_to_name(self.note_pos()));
|
let note_name = format!("{:4}", Note::pitch_to_name(self.note_pos()));
|
||||||
let note_len = format!("{:>4}", self.note_len());
|
let note_len = format!("{:>4}", self.note_len());
|
||||||
Bsp::e(
|
Bsp::e(
|
||||||
FieldH(color, "Time", format!("{length}/{time_zoom}+{time_pos} {time_lock}")),
|
FieldH(color, "Time", format!("{length}/{time_zoom}+{time_pos} {time_lock}")),
|
||||||
FieldH(color, "Note", format!("{note_name} {note_pos} {note_len}")),
|
FieldH(color, "Note", format!("{note_name} {note_pos} {note_len}")),
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue