mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-08 04:36:45 +01:00
freestanding view_scene_name
This commit is contained in:
parent
7633813ab2
commit
64d520e75c
1 changed files with 66 additions and 55 deletions
|
|
@ -1,12 +1,6 @@
|
||||||
use crate::*;
|
use crate::*;
|
||||||
impl Tek {
|
impl Tek {
|
||||||
|
|
||||||
pub fn view_arranger (&self) -> impl Content<TuiOut> + use<'_> {
|
|
||||||
Bsp::s(self.view_inputs(),
|
|
||||||
Bsp::s(self.view_tracks(),
|
|
||||||
Bsp::n(self.view_outputs(),
|
|
||||||
self.view_scenes())))
|
|
||||||
}
|
|
||||||
|
|
||||||
// FIXME: The memoized arranger is too complex.
|
// FIXME: The memoized arranger is too complex.
|
||||||
// Just render a slice of the arranger for now,
|
// Just render a slice of the arranger for now,
|
||||||
|
|
@ -48,16 +42,24 @@ impl Tek {
|
||||||
/// of the arranger buffer to blit in [view_arranger].
|
/// of the arranger buffer to blit in [view_arranger].
|
||||||
pub fn redraw_arranger (&self) {
|
pub fn redraw_arranger (&self) {
|
||||||
return;
|
return;
|
||||||
let width = self.w_tracks();
|
//let width = self.w_tracks();
|
||||||
let height = self.h_scenes() + self.h_inputs() + self.h_outputs();
|
//let height = self.h_scenes() + self.h_inputs() + self.h_outputs();
|
||||||
let buffer = Buffer::empty(ratatui::prelude::Rect { x: 0, y: 0, width, height });
|
//let buffer = Buffer::empty(ratatui::prelude::Rect { x: 0, y: 0, width, height });
|
||||||
let mut output = TuiOut { buffer, area: [0, 0, width, height] };
|
//let mut output = TuiOut { buffer, area: [0, 0, width, height] };
|
||||||
let layout = Bsp::s(self.view_inputs(),
|
//let layout = Bsp::s(self.view_inputs(),
|
||||||
Bsp::s(self.view_tracks(),
|
//Bsp::s(self.view_tracks(),
|
||||||
Bsp::n(self.view_outputs(),
|
//Bsp::n(self.view_outputs(),
|
||||||
self.view_scenes())));
|
//self.view_scenes())));
|
||||||
Content::render(&layout, &mut output);
|
//Content::render(&layout, &mut output);
|
||||||
*self.arranger.write().unwrap() = output.buffer;
|
//*self.arranger.write().unwrap() = output.buffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn view_arranger (&self) -> impl Content<TuiOut> + use<'_> {
|
||||||
|
let ins = self.view_inputs();
|
||||||
|
let trs = self.view_tracks();
|
||||||
|
let out = self.view_outputs();
|
||||||
|
let scn = self.view_scenes();
|
||||||
|
Bsp::s(ins, Bsp::s(trs, Bsp::n(out, scn)))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn view_tracks (&self) -> impl Content<TuiOut> + use<'_> {
|
pub fn view_tracks (&self) -> impl Content<TuiOut> + use<'_> {
|
||||||
|
|
@ -72,14 +74,14 @@ impl Tek {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn view_scenes (&self) -> impl Content<TuiOut> + use<'_> {
|
pub fn view_scenes (&self) -> impl Content<TuiOut> + use<'_> {
|
||||||
let editing = self.is_editing();
|
let editing = self.is_editing();
|
||||||
let s = self.w_sidebar() as u16;
|
let s = self.w_sidebar() as u16;
|
||||||
let w = self.w_tracks_area();
|
let w = self.w_tracks_area();
|
||||||
let w_full = self.w();
|
let w_full = self.w();
|
||||||
let h = self.h_scenes();
|
let h = self.h_scenes();
|
||||||
let h_area = self.h_tracks_area();
|
let h_area = self.h_tracks_area();
|
||||||
let selected_track = self.selected().track();
|
let st = self.selected().track();
|
||||||
let selected_scene = self.selected().scene();
|
let ss = self.selected().scene();
|
||||||
let track_scroll = {
|
let track_scroll = {
|
||||||
let offset = self.track_scroll;
|
let offset = self.track_scroll;
|
||||||
let length = self.w_tracks_area() as usize;
|
let length = self.w_tracks_area() as usize;
|
||||||
|
|
@ -95,36 +97,25 @@ impl Tek {
|
||||||
Tui::bg(Reset, Bsp::s(track_scroll, Bsp::e(scene_scroll, Fixed::y(h_area, row(w, h, s,
|
Tui::bg(Reset, Bsp::s(track_scroll, Bsp::e(scene_scroll, Fixed::y(h_area, row(w, h, s,
|
||||||
Map::new(
|
Map::new(
|
||||||
move||self.scenes_with_colors(editing, h_area),
|
move||self.scenes_with_colors(editing, h_area),
|
||||||
move|(s, scene, y1, y2, prev): SceneWithColor, _|self.view_scene_name(
|
move|(s, scene, y1, y2, prev): SceneWithColor, _|view_scene_name(
|
||||||
w_full, (1 + y2 - y1) as u16, y1 as u16, s, scene, prev)),
|
w_full,
|
||||||
|
(1 + y2 - y1) as u16,
|
||||||
|
y1 as u16,
|
||||||
|
s,
|
||||||
|
scene,
|
||||||
|
prev,
|
||||||
|
s == self.scenes.len().saturating_sub(1),
|
||||||
|
self.selected().scene(),
|
||||||
|
)
|
||||||
|
),
|
||||||
self.per_track(move|t, track|Map::new(
|
self.per_track(move|t, track|Map::new(
|
||||||
move||self.scenes_with_track_colors(editing, h_area, t),
|
move||self.scenes_with_track_colors(editing, h_area, t),
|
||||||
move|(s, scene, y1, y2, prev): SceneWithColor, _|self.view_scene_clip(
|
move|(s, scene, y1, y2, prev): SceneWithColor, _|self.view_scene_clip(
|
||||||
w, (1 + y2 - y1) as u16, y1 as u16,
|
w, (1 + y2 - y1) as u16, y1 as u16,
|
||||||
scene, prev, s, t, editing, selected_track == Some(t), selected_scene))),
|
scene, prev, s, t, editing, st == Some(t), ss)
|
||||||
() )))))
|
)),
|
||||||
}
|
()
|
||||||
|
)))))
|
||||||
fn view_scene_name (
|
|
||||||
&self,
|
|
||||||
width: u16,
|
|
||||||
height: u16,
|
|
||||||
offset: u16,
|
|
||||||
index: usize,
|
|
||||||
scene: &Scene,
|
|
||||||
prev: Option<ItemPalette>,
|
|
||||||
) -> impl Content<TuiOut> + use<'_> {
|
|
||||||
Fill::x(map_south(offset, height, Fixed::y(height, scene_cell(
|
|
||||||
index == self.scenes.len().saturating_sub(1),
|
|
||||||
self.selected().scene(),
|
|
||||||
true,
|
|
||||||
index,
|
|
||||||
&scene.color,
|
|
||||||
prev,
|
|
||||||
Some(scene.name.clone()),
|
|
||||||
" ⯈ ",
|
|
||||||
scene.color.lightest.rgb
|
|
||||||
))))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn view_scene_clip (
|
fn view_scene_clip (
|
||||||
|
|
@ -252,6 +243,29 @@ impl Tek {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn view_scene_name (
|
||||||
|
width: u16,
|
||||||
|
height: u16,
|
||||||
|
offset: u16,
|
||||||
|
index: usize,
|
||||||
|
scene: &Scene,
|
||||||
|
prev: Option<ItemPalette>,
|
||||||
|
last: bool,
|
||||||
|
selected: Option<usize>,
|
||||||
|
) -> impl Content<TuiOut> {
|
||||||
|
Fill::x(map_south(offset, height, Fixed::y(height, scene_cell(
|
||||||
|
last,
|
||||||
|
selected,
|
||||||
|
true,
|
||||||
|
index,
|
||||||
|
&scene.color,
|
||||||
|
prev,
|
||||||
|
Some(scene.name.clone()),
|
||||||
|
" ⯈ ",
|
||||||
|
scene.color.lightest.rgb
|
||||||
|
))))
|
||||||
|
}
|
||||||
|
|
||||||
fn view_inputs <'a, T, U, V, W> (
|
fn view_inputs <'a, T, U, V, W> (
|
||||||
w: u16,
|
w: u16,
|
||||||
s: u16,
|
s: u16,
|
||||||
|
|
@ -266,11 +280,8 @@ fn view_inputs <'a, T, U, V, W> (
|
||||||
W: Content<TuiOut>,
|
W: Content<TuiOut>,
|
||||||
{
|
{
|
||||||
let headers = Bsp::s(Align::e("Input:"), Align::e("Into:"));
|
let headers = Bsp::s(Align::e("Input:"), Align::e("Into:"));
|
||||||
let separators = per_track_top(
|
let sep = |_, _|Tui::bg(Reset, Align::c(Bsp::s(OctaveVertical::default(), " ------ ")));
|
||||||
w_tracks_area,
|
let separators = per_track_top(w_tracks_area, tracks_sizes, sep);
|
||||||
tracks_sizes,
|
|
||||||
|_, _|Tui::bg(Reset, Align::c(Bsp::s( OctaveVertical::default(), " ------ ")))
|
|
||||||
);
|
|
||||||
Bsp::s(Bsp::s(routes, ports), row_top(w, 2, s, headers, separators, ()))
|
Bsp::s(Bsp::s(routes, ports), row_top(w, 2, s, headers, separators, ()))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue