wip: providing values to scrollbars

This commit is contained in:
🪞👃🪞 2025-02-03 20:49:04 +01:00
parent 6755f972f3
commit 7b3bbc5590
3 changed files with 22 additions and 14 deletions

View file

@ -21,25 +21,25 @@ impl Tek {
fn scene_scrollbar (&self) -> impl Content<TuiOut> + use<'_> {
Fill::y(Fixed::x(1, ScrollbarV {
offset: self.scene_scroll,
length: 0,
length: self.h_tracks_area() as usize,
total: self.tracks.len()
}))
}
fn track_scrollbar (&self) -> impl Content<TuiOut> + use<'_> {
Fill::x(Fixed::y(1, ScrollbarH {
offset: self.track_scroll,
length: 0,// self.view_track_count(),
length: self.w_tracks() as usize,
total: self.tracks.len()
}))
}
pub fn view_scenes (&self) -> impl Content<TuiOut> + use<'_> {
let w_full = self.w();
let w = self.w_tracks_area();
let h_area = self.h_tracks_area();
let editing = self.is_editing();
let w = self.w_tracks_area();
let w_full = self.w();
let h = self.h_scenes(editing, Self::H_SCENE, Self::H_EDITOR);
let h_area = self.h_tracks_area();
let selected_track = self.selected().track();
let selected_scene = self.selected().scene();
let h = self.h_scenes(editing, Self::H_SCENE, Self::H_EDITOR);
Tui::bg(Reset, Bsp::s(self.track_scrollbar(), Bsp::e(self.scene_scrollbar(),
Fixed::y(self.h_tracks_area(), self.row(self.w_tracks_area(), h,
Map::new(

View file

@ -1,11 +1,11 @@
use crate::*;
impl Tek {
pub(crate) fn w_tracks_area (&self) -> u16 {
self.w().saturating_sub(2 * self.w_sidebar())
}
pub(crate) fn w_tracks (&self, editing: bool, bigger: usize) -> u16 {
self.tracks_sizes(editing, bigger).last().map(|(_, _, _, x)|x as u16).unwrap_or(0)
}
pub(crate) fn w_tracks_area (&self) -> u16 {
self.w().saturating_sub(2 * self.w_sidebar())
}
pub(crate) fn h_tracks_area (&self) -> u16 {
self.h().saturating_sub(self.h_inputs() + self.h_outputs() + 10)
}

View file

@ -126,6 +126,10 @@ impl Content<TuiOut> for ScrollbarV {
cell.set_fg(Rgb(255, 255, 255));
cell.set_bg(Rgb(0, 0, 0));
cell.set_char(Self::ICON_INC[h as usize - i]);
} else if false {
cell.set_fg(Rgb(255, 255, 255));
cell.set_bg(Reset);
cell.set_char('‖'); // ━
} else {
cell.set_fg(Rgb(0, 0, 0));
cell.set_bg(Reset);
@ -159,10 +163,14 @@ impl Content<TuiOut> for ScrollbarH {
cell.set_fg(Rgb(255, 255, 255));
cell.set_bg(Rgb(0, 0, 0));
cell.set_char(Self::ICON_INC[w as usize - i]);
} else if false {
cell.set_fg(Rgb(255, 255, 255));
cell.set_bg(Reset);
cell.set_char('━');
} else {
cell.set_fg(Rgb(0, 0, 0));
cell.set_bg(Reset);
cell.set_char('╌'); // ━
cell.set_char('╌');
}
}
}
@ -172,10 +180,10 @@ impl Content<TuiOut> for ScrollbarH {
/// A cell that takes up 3 rows on its own,
/// but stacks, giving (N+1)*2 rows per N cells.
pub struct Phat<T> {
pub width: u16,
pub height: u16,
pub content: T,
pub colors: [Color;4],
pub width: u16,
pub height: u16,
pub content: T,
pub colors: [Color;4],
}
impl<T> Phat<T> {
/// A phat line