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
|
|
@ -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,34 +30,50 @@ 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(
|
||||
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(" "),
|
||||
Outer(true, Style::default().fg(Tui::g(96)))
|
||||
.enclose(self.modal.map(|modal|match modal {
|
||||
Modal::Menu => self.view_modal_menu().boxed(),
|
||||
Modal::Help => self.view_modal_help().boxed(),
|
||||
}))
|
||||
)))
|
||||
))
|
||||
#[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(" "),
|
||||
Outer(true, Style::default().fg(Tui::g(96)))
|
||||
.enclose(self.modal.map(|modal|match modal {
|
||||
Modal::Menu => self.view_modal_menu().boxed(),
|
||||
Modal::Help => self.view_modal_help().boxed(),
|
||||
}))
|
||||
)))
|
||||
))
|
||||
}
|
||||
|
||||
fn view_modal_menu (&self) -> impl Content<TuiOut> {
|
||||
let options = ||["Projects", "Settings", "Help", "Quit"].iter();
|
||||
|
|
@ -189,7 +210,7 @@ impl Tek {
|
|||
TrackClip { track, .. } if editing => Some(track),
|
||||
_ => None
|
||||
};
|
||||
let bigger = self.editor_w();
|
||||
let bigger = self.editor_w();
|
||||
self.tracks().iter().enumerate().map(move |(index, track)|{
|
||||
let width = if Some(index) == active.copied() { bigger } else { track.width.max(8) };
|
||||
let data = (index, track, x, x + width);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue