mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-04-29 22:10:14 +02:00
freestanding view_scene_name
This commit is contained in:
parent
7633813ab2
commit
64d520e75c
|
@ -1,12 +1,6 @@
|
|||
use crate::*;
|
||||
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.
|
||||
// Just render a slice of the arranger for now,
|
||||
|
@ -48,16 +42,24 @@ impl Tek {
|
|||
/// of the arranger buffer to blit in [view_arranger].
|
||||
pub fn redraw_arranger (&self) {
|
||||
return;
|
||||
let width = self.w_tracks();
|
||||
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 mut output = TuiOut { buffer, area: [0, 0, width, height] };
|
||||
let layout = Bsp::s(self.view_inputs(),
|
||||
Bsp::s(self.view_tracks(),
|
||||
Bsp::n(self.view_outputs(),
|
||||
self.view_scenes())));
|
||||
Content::render(&layout, &mut output);
|
||||
*self.arranger.write().unwrap() = output.buffer;
|
||||
//let width = self.w_tracks();
|
||||
//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 mut output = TuiOut { buffer, area: [0, 0, width, height] };
|
||||
//let layout = Bsp::s(self.view_inputs(),
|
||||
//Bsp::s(self.view_tracks(),
|
||||
//Bsp::n(self.view_outputs(),
|
||||
//self.view_scenes())));
|
||||
//Content::render(&layout, &mut output);
|
||||
//*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<'_> {
|
||||
|
@ -72,14 +74,14 @@ impl Tek {
|
|||
}
|
||||
|
||||
pub fn view_scenes (&self) -> impl Content<TuiOut> + use<'_> {
|
||||
let editing = self.is_editing();
|
||||
let s = self.w_sidebar() as u16;
|
||||
let w = self.w_tracks_area();
|
||||
let w_full = self.w();
|
||||
let h = self.h_scenes();
|
||||
let h_area = self.h_tracks_area();
|
||||
let selected_track = self.selected().track();
|
||||
let selected_scene = self.selected().scene();
|
||||
let editing = self.is_editing();
|
||||
let s = self.w_sidebar() as u16;
|
||||
let w = self.w_tracks_area();
|
||||
let w_full = self.w();
|
||||
let h = self.h_scenes();
|
||||
let h_area = self.h_tracks_area();
|
||||
let st = self.selected().track();
|
||||
let ss = self.selected().scene();
|
||||
let track_scroll = {
|
||||
let offset = self.track_scroll;
|
||||
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,
|
||||
Map::new(
|
||||
move||self.scenes_with_colors(editing, h_area),
|
||||
move|(s, scene, y1, y2, prev): SceneWithColor, _|self.view_scene_name(
|
||||
w_full, (1 + y2 - y1) as u16, y1 as u16, s, scene, prev)),
|
||||
move|(s, scene, y1, y2, prev): SceneWithColor, _|view_scene_name(
|
||||
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(
|
||||
move||self.scenes_with_track_colors(editing, h_area, t),
|
||||
move|(s, scene, y1, y2, prev): SceneWithColor, _|self.view_scene_clip(
|
||||
w, (1 + y2 - y1) as u16, y1 as u16,
|
||||
scene, prev, s, t, editing, selected_track == Some(t), selected_scene))),
|
||||
() )))))
|
||||
}
|
||||
|
||||
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
|
||||
))))
|
||||
scene, prev, s, t, editing, st == Some(t), ss)
|
||||
)),
|
||||
()
|
||||
)))))
|
||||
}
|
||||
|
||||
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> (
|
||||
w: u16,
|
||||
s: u16,
|
||||
|
@ -266,11 +280,8 @@ fn view_inputs <'a, T, U, V, W> (
|
|||
W: Content<TuiOut>,
|
||||
{
|
||||
let headers = Bsp::s(Align::e("Input:"), Align::e("Into:"));
|
||||
let separators = per_track_top(
|
||||
w_tracks_area,
|
||||
tracks_sizes,
|
||||
|_, _|Tui::bg(Reset, Align::c(Bsp::s( OctaveVertical::default(), " ------ ")))
|
||||
);
|
||||
let sep = |_, _|Tui::bg(Reset, Align::c(Bsp::s(OctaveVertical::default(), " ------ ")));
|
||||
let separators = per_track_top(w_tracks_area, tracks_sizes, sep);
|
||||
Bsp::s(Bsp::s(routes, ports), row_top(w, 2, s, headers, separators, ()))
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue