move expose/impose to tengri; wtf now!

This commit is contained in:
🪞👃🪞 2025-04-15 20:45:56 +03:00
parent 0257aa2b61
commit 1b253dc273
5 changed files with 48 additions and 75 deletions

24
Cargo.lock generated
View file

@ -621,9 +621,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
[[package]]
name = "libc"
version = "0.2.171"
version = "0.2.172"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6"
checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa"
[[package]]
name = "libloading"
@ -1580,8 +1580,8 @@ dependencies = [
[[package]]
name = "tengri"
version = "0.7.1"
source = "git+https://codeberg.org/unspeaker/tengri?rev=3429557#34295570a278fe8ebdea1a17124a9541cbe68d38"
version = "0.9.1"
source = "git+https://codeberg.org/unspeaker/tengri?rev=6048d24#6048d24880324a6b411b6a8723ad95546e2edbe3"
dependencies = [
"tengri_dsl",
"tengri_input",
@ -1591,8 +1591,8 @@ dependencies = [
[[package]]
name = "tengri_dsl"
version = "0.7.1"
source = "git+https://codeberg.org/unspeaker/tengri?rev=3429557#34295570a278fe8ebdea1a17124a9541cbe68d38"
version = "0.9.1"
source = "git+https://codeberg.org/unspeaker/tengri?rev=6048d24#6048d24880324a6b411b6a8723ad95546e2edbe3"
dependencies = [
"itertools 0.14.0",
"konst",
@ -1601,24 +1601,24 @@ dependencies = [
[[package]]
name = "tengri_input"
version = "0.7.1"
source = "git+https://codeberg.org/unspeaker/tengri?rev=3429557#34295570a278fe8ebdea1a17124a9541cbe68d38"
version = "0.9.1"
source = "git+https://codeberg.org/unspeaker/tengri?rev=6048d24#6048d24880324a6b411b6a8723ad95546e2edbe3"
dependencies = [
"tengri_dsl",
]
[[package]]
name = "tengri_output"
version = "0.7.1"
source = "git+https://codeberg.org/unspeaker/tengri?rev=3429557#34295570a278fe8ebdea1a17124a9541cbe68d38"
version = "0.9.1"
source = "git+https://codeberg.org/unspeaker/tengri?rev=6048d24#6048d24880324a6b411b6a8723ad95546e2edbe3"
dependencies = [
"tengri_dsl",
]
[[package]]
name = "tengri_tui"
version = "0.7.1"
source = "git+https://codeberg.org/unspeaker/tengri?rev=3429557#34295570a278fe8ebdea1a17124a9541cbe68d38"
version = "0.9.1"
source = "git+https://codeberg.org/unspeaker/tengri?rev=6048d24#6048d24880324a6b411b6a8723ad95546e2edbe3"
dependencies = [
"atomic_float",
"better-panic",

View file

@ -19,7 +19,7 @@ lto = false
[workspace.dependencies.tengri]
git = "https://codeberg.org/unspeaker/tengri"
rev = "3429557"
rev = "6048d24"
features = [ "tui", "dsl" ]
[workspace.dependencies]

View file

@ -1,33 +1,40 @@
use crate::*;
macro_rules! expose {
($([$self:ident:$State:ty] { $($Type:ty => { $($pat:pat => $expr:expr),* $(,)? })* })*) => {
$(expose!(@impl [$self: $State] { $($Type => { $($pat => $expr),* })* });)*
};
(@impl [$self:ident:$State:ty] { $($Type:ty => { $($pat:pat => $expr:expr),* $(,)? })* }) => {
$(expose!(@type $Type [$self: $State] => { $($pat => $expr),* });)*
};
(@type bool [$self:ident: $State:ty] => { $($pat:pat => $expr:expr),* $(,)? }) => {
provide_bool!(bool: |$self: $State| { $($pat => $expr),* });
};
(@type isize [$self:ident: $State:ty] => { $($pat:pat => $expr:expr),* $(,)? }) => {
provide_num!(isize: |$self: $State| { $($pat => $expr),* });
};
(@type usize [$self:ident: $State:ty] => { $($pat:pat => $expr:expr),* $(,)? }) => {
provide_num!(usize: |$self: $State| { $($pat => $expr),* });
};
(@type $Type:ty [$self:ident: $State:ty] => { $($pat:pat => $expr:expr),* $(,)? }) => {
provide!($Type: |$self: $State| { $($pat => $expr),* });
};
}
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(),
});
expose!([self: Tek] {
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 => {
":scene-last" => self.scenes.len(),
":track-last" => self.tracks.len(),
}
isize => {}
Option<usize> => {
":scene" => self.selected.scene(),
":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] {
TekCommand => {

View file

@ -53,7 +53,7 @@ impl<'a> Content<TuiOut> for ArrangerView<'a> {
}
impl<'a> ArrangerView<'a> {
fn new (app: &'a Tek) -> Self {
pub fn new (app: &'a Tek) -> Self {
Self {
app,
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 () {
let mut tek = Tek::default();
tek.editor = Some(Default::default());