mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-06 19:56:42 +01:00
fix arranger cursor width
This commit is contained in:
parent
2b08738992
commit
3a4f069aa6
2 changed files with 14 additions and 13 deletions
|
|
@ -10,16 +10,13 @@ pub fn main () -> Usually<()> {
|
|||
pub struct ArrangerCli {
|
||||
/// Name of JACK client
|
||||
#[arg(short, long)]
|
||||
name: Option<String>,
|
||||
|
||||
name: Option<String>,
|
||||
/// Whether to include a transport toolbar (default: true)
|
||||
#[arg(short, long, default_value_t = true)]
|
||||
transport: bool,
|
||||
|
||||
/// Number of tracks
|
||||
#[arg(short = 'x', long, default_value_t = 4)]
|
||||
tracks: usize,
|
||||
|
||||
/// Number of scenes
|
||||
#[arg(short, long, default_value_t = 8)]
|
||||
scenes: usize,
|
||||
|
|
|
|||
|
|
@ -1,11 +1,15 @@
|
|||
use crate::*;
|
||||
const HEADER_H: u16 = 3;
|
||||
const HEADER_H: u16 = 5;
|
||||
const SCENES_W_OFFSET: u16 = 3;
|
||||
impl ArrangerTui {
|
||||
pub fn render_mode_v (state: &ArrangerTui, factor: usize) -> impl Render<Tui> + use<'_> {
|
||||
lay!([
|
||||
ArrangerVColSep::from(state), ArrangerVRowSep::from((state, factor)),
|
||||
col!([ArrangerVHead::from(state), ArrangerVBody::from((state, factor))]),
|
||||
ArrangerVColSep::from(state),
|
||||
ArrangerVRowSep::from((state, factor)),
|
||||
col!([
|
||||
ArrangerVHead::from(state),
|
||||
ArrangerVClips::from((state, factor))
|
||||
]),
|
||||
ArrangerVCursor::from((state, factor)),
|
||||
])
|
||||
}
|
||||
|
|
@ -172,8 +176,8 @@ render!(<Tui>|self: ArrangerVCursor|render(move|to: &mut TuiOutput|{
|
|||
to.fill_fg([x + width, y, 1, height], bg);
|
||||
}
|
||||
if let Some([_, y, _, height]) = scene_area {
|
||||
to.fill_ul([area.x(), y - 1, area.w(), 1], bg);
|
||||
to.fill_ul([area.x(), y + height - 1, area.w(), 1], bg);
|
||||
to.fill_ul([area.x(), y - 1, area.w() + self.scenes_w, 1], bg);
|
||||
to.fill_ul([area.x(), y + height - 1, area.w() + self.scenes_w, 1], bg);
|
||||
}
|
||||
Ok(if focused {
|
||||
to.render_in(if let Some(clip_area) = clip_area { clip_area }
|
||||
|
|
@ -182,25 +186,25 @@ render!(<Tui>|self: ArrangerVCursor|render(move|to: &mut TuiOutput|{
|
|||
else { area.clip_w(self.scenes_w).clip_h(HEADER_H) }, &RETICLE)?
|
||||
})
|
||||
}));
|
||||
pub struct ArrangerVBody<'a> {
|
||||
pub struct ArrangerVClips<'a> {
|
||||
size: &'a Measure<Tui>,
|
||||
scenes: &'a Vec<ArrangerScene>,
|
||||
tracks: &'a Vec<ArrangerTrack>,
|
||||
rows: Vec<(usize, usize)>,
|
||||
}
|
||||
from!(<'a>|args:(&'a ArrangerTui, usize)|ArrangerVBody<'a> = Self {
|
||||
from!(<'a>|args:(&'a ArrangerTui, usize)|ArrangerVClips<'a> = Self {
|
||||
size: &args.0.size,
|
||||
scenes: &args.0.scenes,
|
||||
tracks: &args.0.tracks,
|
||||
rows: ArrangerScene::ppqs(args.0.scenes(), args.1),
|
||||
});
|
||||
render!(<Tui>|self: ArrangerVBody<'a>|Fixed::h(
|
||||
render!(<Tui>|self: ArrangerVClips<'a>|Fixed::h(
|
||||
(self.size.h() as u16).saturating_sub(HEADER_H),
|
||||
col!((scene, pulses) in self.scenes.iter().zip(self.rows.iter().map(|row|row.0)) => {
|
||||
Self::format_scene(&self.tracks, scene, pulses)
|
||||
})
|
||||
));
|
||||
impl<'a> ArrangerVBody<'a> {
|
||||
impl<'a> ArrangerVClips<'a> {
|
||||
fn format_scene (
|
||||
tracks: &'a [ArrangerTrack], scene: &'a ArrangerScene, pulses: usize
|
||||
) -> impl Render<Tui> + use<'a> {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue