mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-06 11:46:41 +01:00
top-level view bindings now use proc macro
This commit is contained in:
parent
ff2e981e18
commit
79bf493004
4 changed files with 62 additions and 33 deletions
10
Cargo.lock
generated
10
Cargo.lock
generated
|
|
@ -1521,6 +1521,7 @@ dependencies = [
|
|||
"tek_device",
|
||||
"tek_engine",
|
||||
"tengri",
|
||||
"tengri_proc",
|
||||
"toml",
|
||||
]
|
||||
|
||||
|
|
@ -1601,6 +1602,15 @@ dependencies = [
|
|||
"tengri_dsl",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tengri_proc"
|
||||
version = "0.13.0"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tengri_tui"
|
||||
version = "0.13.0"
|
||||
|
|
|
|||
|
|
@ -23,15 +23,13 @@ lto = false
|
|||
|
||||
[workspace.dependencies.tengri]
|
||||
path = "./deps/tengri/tengri"
|
||||
#git = "https://codeberg.org/unspeaker/tengri"
|
||||
#rev = "6048d24"
|
||||
features = [ "tui", "dsl" ]
|
||||
|
||||
[workspace.dependencies.tengri_proc]
|
||||
path = "./deps/tengri/proc"
|
||||
|
||||
[workspace.dependencies.jack]
|
||||
#git = "https://codeberg.org/unspeaker/rust-jack"
|
||||
#rev = "a13c1c4"
|
||||
path = "./deps/rust-jack"
|
||||
#default-features = false
|
||||
|
||||
[workspace.dependencies]
|
||||
tek_device = { path = "./crates/device" }
|
||||
|
|
|
|||
|
|
@ -2,12 +2,16 @@ use crate::*;
|
|||
pub(crate) use std::fmt::Write;
|
||||
pub(crate) use ::tengri::tui::ratatui::prelude::Position;
|
||||
|
||||
#[tengri_proc::view(self.config.view)]
|
||||
#[tengri_proc::view(TuiOut)]
|
||||
impl Tek {
|
||||
|
||||
#[view(":nil")] "nil"
|
||||
#[tengri::view(":nil")]
|
||||
fn view_nil (&self) -> impl Content<TuiOut> + use<'_> {
|
||||
"nil"
|
||||
}
|
||||
|
||||
#[view(":status")] {
|
||||
#[tengri::view(":status")]
|
||||
fn view_status (&self) -> impl Content<TuiOut> + use<'_> {
|
||||
self.update_clock();
|
||||
let cache = self.view_cache.read().unwrap();
|
||||
view_status(
|
||||
|
|
@ -16,7 +20,8 @@ impl Tek {
|
|||
)
|
||||
}
|
||||
|
||||
#[view(":transport")] {
|
||||
#[tengri::view(":transport")]
|
||||
fn view_transport (&self) -> impl Content<TuiOut> + use<'_> {
|
||||
self.update_clock();
|
||||
let cache = self.view_cache.read().unwrap();
|
||||
view_transport(
|
||||
|
|
@ -25,24 +30,39 @@ impl Tek {
|
|||
)
|
||||
}
|
||||
|
||||
#[view(":arranger")] ArrangerView::new(self)
|
||||
#[tengri::view(":arranger")]
|
||||
fn view_arranger (&self) -> impl Content<TuiOut> + use<'_> {
|
||||
ArrangerView::new(self)
|
||||
}
|
||||
|
||||
#[view(":pool")] self.pool()
|
||||
.map(|p|Fixed::x(self.w_sidebar(), PoolView(self.is_editing(), p)))
|
||||
#[tengri::view(":pool")]
|
||||
fn view_pool (&self) -> impl Content<TuiOut> + use<'_> {
|
||||
self.pool().map(|p|Fixed::x(self.w_sidebar(), PoolView(self.is_editing(), p)))
|
||||
}
|
||||
|
||||
#[view(":editor")] self.editor()
|
||||
.map(|e|Bsp::n(Bsp::e(e.clip_status(), e.edit_status()), e))
|
||||
#[tengri::view(":editor")]
|
||||
fn view_editor (&self) -> impl Content<TuiOut> + use<'_> {
|
||||
self.editor().map(|e|Bsp::n(Bsp::e(e.clip_status(), e.edit_status()), e))
|
||||
}
|
||||
|
||||
#[view(":samples-keys")] self.sampler()
|
||||
.map(|s|s.view_list(false, self.editor().unwrap()))
|
||||
#[tengri::view(":samples-keys")]
|
||||
fn view_samples_keys (&self) -> impl Content<TuiOut> + use<'_> {
|
||||
self.sampler().map(|s|s.view_list(false, self.editor().unwrap()))
|
||||
}
|
||||
|
||||
#[view(":samples-grid")] self.sampler()
|
||||
.map(|s|s.view_grid())
|
||||
#[tengri::view(":samples-grid")]
|
||||
fn view_samples_grid (&self) -> impl Content<TuiOut> + use<'_> {
|
||||
self.sampler().map(|s|s.view_grid())
|
||||
}
|
||||
|
||||
#[view(":sample-viewer")] self.sampler()
|
||||
.map(|s|s.view_sample(self.editor().unwrap().note_pos()))
|
||||
#[tengri::view(":sample-viewer")]
|
||||
fn view_sample_viewer (&self) -> impl Content<TuiOut> + use<'_> {
|
||||
self.sampler().map(|s|s.view_sample(self.editor().unwrap().note_pos()))
|
||||
}
|
||||
|
||||
#[view(":modal")] When::new(self.modal.is_some(), Bsp::b(
|
||||
#[tengri::view(":modal")]
|
||||
fn view_modal (&self) -> impl Content<TuiOut> + use<'_> {
|
||||
When::new(self.modal.is_some(), Bsp::b(
|
||||
Fill::xy(Tui::fg_bg(Rgb(64,64,64), Rgb(32,32,32), "")),
|
||||
Fixed::xy(30, 15, Tui::fg_bg(Rgb(255,255,255), Rgb(16,16,16), Bsp::b(
|
||||
Repeat(" "),
|
||||
|
|
@ -53,6 +73,7 @@ impl Tek {
|
|||
}))
|
||||
)))
|
||||
))
|
||||
}
|
||||
|
||||
fn view_modal_menu (&self) -> impl Content<TuiOut> {
|
||||
let options = ||["Projects", "Settings", "Help", "Quit"].iter();
|
||||
|
|
|
|||
2
deps/tengri
vendored
2
deps/tengri
vendored
|
|
@ -1 +1 @@
|
|||
Subproject commit 21f7f6b38afc966b7b45af442935d48c8c5067d3
|
||||
Subproject commit b543c43e68154f049019da648064f36af1537434
|
||||
Loading…
Add table
Add a link
Reference in a new issue