mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-07 12:16:42 +01:00
fix some more of the highlightings
This commit is contained in:
parent
77809ca289
commit
7dc435754a
2 changed files with 55 additions and 66 deletions
117
tek/src/view.rs
117
tek/src/view.rs
|
|
@ -69,7 +69,7 @@ provide_num!(u16: |self: Tek| {
|
||||||
":sample-h" => if self.is_editing() { 0 } else { 5 },
|
":sample-h" => if self.is_editing() { 0 } else { 5 },
|
||||||
":samples-w" => if self.is_editing() { 4 } else { 11 },
|
":samples-w" => if self.is_editing() { 4 } else { 11 },
|
||||||
":samples-y" => if self.is_editing() { 1 } else { 0 },
|
":samples-y" => if self.is_editing() { 1 } else { 0 },
|
||||||
":outs-y" => self.size.h().saturating_sub(self.midi_outs.len() + 7) as u16,
|
":outs-y" => self.size.h().saturating_sub(self.midi_outs.len() + 2) as u16,
|
||||||
});
|
});
|
||||||
macro_rules! per_track {
|
macro_rules! per_track {
|
||||||
($area:expr;|$self:ident,$track:ident,$index:ident|$content:expr) => {{
|
($area:expr;|$self:ident,$track:ident,$index:ident|$content:expr) => {{
|
||||||
|
|
@ -298,41 +298,44 @@ impl Tek {
|
||||||
let selected_track = self.selected().track();
|
let selected_track = self.selected().track();
|
||||||
let selected_scene = self.selected().scene();
|
let selected_scene = self.selected().scene();
|
||||||
let header = move||{
|
let header = move||{
|
||||||
let cell = {
|
let cell = move|s, bg: &ItemPalette, last: Option<ItemPalette>, name: Arc<str>|{
|
||||||
move|i, color: &ItemPalette, last: Option<ItemPalette>, name: Arc<str>|Phat {
|
let selected = self.selected().scene() == Some(s+1);
|
||||||
|
let neighbor = self.selected().scene() == Some(s);
|
||||||
|
Phat {
|
||||||
width: 0,
|
width: 0,
|
||||||
height: 0,
|
height: 0,
|
||||||
selected: self.selected().scene() == Some(i),
|
selected: selected,
|
||||||
content: Tui::bold(true, Bsp::e("🭬", name.clone())),
|
content: Tui::bold(true, Bsp::e("🭬", name.clone())),
|
||||||
fg: color.lightest.rgb,
|
fg: bg.lightest.rgb,
|
||||||
top: if self.selected().scene() == Some(i) { last.map(|last|last.light.rgb) } else { last.map(|last|last.base.rgb) },
|
top: if neighbor { last.map(|last|last.light.rgb) } else { last.map(|last|last.base.rgb) },
|
||||||
mid: if self.selected().scene() == Some(i+1) { color.light } else { color.base }.rgb,
|
mid: if selected { bg.light } else { bg.base }.rgb,
|
||||||
low: Some(Reset)
|
low: Some(Reset)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
Align::y(Map::new(move||self.scenes_sizes(editing, 2, 15)
|
Align::y(Map::new(
|
||||||
.map(|(s, scene, y1, y2)|(s, scene, y1, y2, if s == 0 {
|
move||self.scenes_sizes(editing, 2, 15).map_while(
|
||||||
None
|
move|(s, scene, y1, y2)|if y2 > size_h { None } else { Some((s, scene, y1, y2, if s == 0 {
|
||||||
} else {
|
Some(self.scenes[s].color)
|
||||||
Some(self.scenes[s-1].color)
|
} else {
|
||||||
})), move|(_, scene, y1, y2, last), s| {
|
Some(self.scenes[s-1].color)
|
||||||
let height = (1 + y2 - y1) as u16;
|
})) }),
|
||||||
Either(y2 > size_h, (), map_south(y1 as u16, height,
|
move|(_, scene, y1, y2, last), s| {
|
||||||
Fixed::y(height, Outer(false, bstyle)
|
let height = (1 + y2 - y1) as u16;
|
||||||
.enclose(cell(s, &scene.color, last, scene.name.clone())))))
|
map_south(y1 as u16, height, Fixed::y(height,
|
||||||
})).boxed()
|
cell(s, &scene.color, last, scene.name.clone()))) })).boxed()
|
||||||
};
|
};
|
||||||
let content: ThunkBox<_> = per_track!(self.size.w(); |self, track, t|{
|
let content: ThunkBox<_> = per_track!(self.size.w(); |self, track, t|{
|
||||||
let tab = " Tab ";
|
let tab = " Tab ";
|
||||||
let same_track = selected_track == Some(t+1);
|
let same_track = selected_track == Some(t+1);
|
||||||
Map::new(move||self.scenes_sizes(editing, 2, 15)
|
Map::new(
|
||||||
.map(|(s, scene, y1, y2)|(s, scene, y1, y2, if s == 0 {
|
move||self.scenes_sizes(editing, 2, 15).map_while(
|
||||||
None
|
move|(s, scene, y1, y2)|if y2 > size_h { None } else { Some((s, scene, y1, y2, if s == 0 {
|
||||||
} else {
|
self.scenes[s].clips[t].as_ref().map(|c|c.read().unwrap().color)
|
||||||
Some(self.scenes[s-1].color)
|
} else {
|
||||||
})), move|(_, scene, y1, y2, last), s| {
|
self.scenes[s-1].clips[t].as_ref().map(|c|c.read().unwrap().color)
|
||||||
let height = (1 + y2 - y1) as u16;
|
})) }),
|
||||||
Thunk::new(move||{
|
move|(_, scene, y1, y2, last), s| {
|
||||||
|
let height = (1 + y2 - y1) as u16;
|
||||||
let mut fg = Tui::g(64);
|
let mut fg = Tui::g(64);
|
||||||
let mut bg = ItemPalette::G[32];
|
let mut bg = ItemPalette::G[32];
|
||||||
if let Some(clip) = &scene.clips[t] {
|
if let Some(clip) = &scene.clips[t] {
|
||||||
|
|
@ -343,44 +346,30 @@ impl Tek {
|
||||||
// weird offsetting:
|
// weird offsetting:
|
||||||
let selected = same_track && selected_scene == Some(s+1);
|
let selected = same_track && selected_scene == Some(s+1);
|
||||||
let neighbor = same_track && selected_scene == Some(s);
|
let neighbor = same_track && selected_scene == Some(s);
|
||||||
let active = editing && selected;
|
let active = editing && selected;
|
||||||
let top = if neighbor {
|
let content = move||{
|
||||||
last.map(|last|last.light.rgb)
|
|
||||||
} else {
|
|
||||||
last.map(|last|last.base.rgb)
|
|
||||||
};
|
|
||||||
let label = move||{
|
|
||||||
let clip = scene.clips[t].clone();
|
let clip = scene.clips[t].clone();
|
||||||
let icon = " ⏹ ";
|
let icon = " ⏹ ";
|
||||||
let name = clip.map(|c|c.read().unwrap().name.clone());
|
let name = clip.map(|c|c.read().unwrap().name.clone());
|
||||||
Align::nw(Tui::fg(fg, Bsp::e(icon, Bsp::e(Tui::bold(true, name), " "))))
|
Align::nw(Tui::fg(fg, Bsp::e(icon, Bsp::e(Tui::bold(true, name), " "))))
|
||||||
};
|
};
|
||||||
//map_south(y1 as u16, height, format!("{height}/{size_h}"))
|
map_south(y1 as u16, height, Fixed::y(height, Either::new(active,
|
||||||
Either(y2 > size_h, (), map_south(y1 as u16, height,
|
Thunk::new(move||Bsp::a(
|
||||||
Fixed::y(height, Outer(false, bstyle)
|
Fill::xy(Align::nw(button(tab, content()))),
|
||||||
.enclose(Either::new(active,
|
&self.editor)),
|
||||||
Thunk::new(move||Bsp::a(
|
Thunk::new(move||Bsp::a(
|
||||||
Fill::xy(Align::nw(button(tab, label()))),
|
When::new(selected, Fill::y(Align::n(button(tab, "edit")))),
|
||||||
&self.editor)),
|
Phat {
|
||||||
Thunk::new(move||Bsp::a(
|
width: 0,
|
||||||
When::new(selected, Fill::y(Align::n(button(tab, "edit")))),
|
height: 0,
|
||||||
Phat {
|
selected,
|
||||||
width: 0,
|
content: content(),
|
||||||
height: 3,
|
fg,
|
||||||
selected,
|
top: if neighbor { last.map(|last|last.light.rgb) } else { last.map(|last|last.base.rgb) },
|
||||||
content: {
|
mid: if selected { bg.light } else { bg.base }.rgb,
|
||||||
let clip = scene.clips[t].clone();
|
low: Some(Reset)
|
||||||
let icon = " ⏹ ";
|
})))))
|
||||||
let name = clip.map(|c|c.read().unwrap().name.clone());
|
|
||||||
Align::nw(Tui::fg(fg, Bsp::e(icon, Bsp::e(Tui::bold(true, name), " "))))
|
|
||||||
},
|
|
||||||
fg,
|
|
||||||
top,
|
|
||||||
mid: if selected { bg.light } else { bg.base }.rgb,
|
|
||||||
low: Some(Reset)
|
|
||||||
})))))))
|
|
||||||
})
|
})
|
||||||
})
|
|
||||||
});
|
});
|
||||||
//let border = move|x|Outer(false, bstyle).enclose_bg(x);
|
//let border = move|x|Outer(false, bstyle).enclose_bg(x);
|
||||||
self.view_row(
|
self.view_row(
|
||||||
|
|
@ -397,11 +386,11 @@ impl Tek {
|
||||||
.unwrap_or(0)
|
.unwrap_or(0)
|
||||||
}
|
}
|
||||||
fn w_sidebar (&self) -> u16 {
|
fn w_sidebar (&self) -> u16 {
|
||||||
let w = self.size.w();
|
let w = (self.size.w() / 10);
|
||||||
let w = if w > 80 { 20 } else if w > 70 { 18 } else if w > 60 { 16 }
|
let w = w.min(if w > 80 { 20 } else if w > 70 { 18 } else if w > 60 { 16 }
|
||||||
else if w > 50 { 14 } else if w > 40 { 12 } else { 10 };
|
else if w > 50 { 14 } else if w > 40 { 12 } else { 10 });
|
||||||
let w = if self.is_editing() { w / 2 } else { w };
|
//let w = if self.is_editing() { w / 2 } else { w };
|
||||||
w
|
w as u16
|
||||||
}
|
}
|
||||||
fn button <'a> (
|
fn button <'a> (
|
||||||
&'a self, key: impl Content<TuiOut> + 'a, label: impl Content<TuiOut> + 'a
|
&'a self, key: impl Content<TuiOut> + 'a, label: impl Content<TuiOut> + 'a
|
||||||
|
|
|
||||||
|
|
@ -132,8 +132,8 @@ impl<T> Phat<T> {
|
||||||
}
|
}
|
||||||
impl<T: Content<TuiOut>> Content<TuiOut> for Phat<T> {
|
impl<T: Content<TuiOut>> Content<TuiOut> for Phat<T> {
|
||||||
fn content (&self) -> impl Render<TuiOut> {
|
fn content (&self) -> impl Render<TuiOut> {
|
||||||
let top = self.top.map(|top|Self::lo(self.mid, top));
|
let top = Fixed::y(1, self.top.map(|top|Self::lo(self.mid, top)));
|
||||||
let low = self.low.map(|low|Self::hi(self.mid, low));
|
let low = Fixed::y(1, self.low.map(|low|Self::hi(self.mid, low)));
|
||||||
let content = Tui::fg_bg(self.fg, self.mid, &self.content);
|
let content = Tui::fg_bg(self.fg, self.mid, &self.content);
|
||||||
let phat = Bsp::s(top, Bsp::n(low, Fill::xy(content)));
|
let phat = Bsp::s(top, Bsp::n(low, Fill::xy(content)));
|
||||||
Min::xy(self.width, self.height, phat)
|
Min::xy(self.width, self.height, phat)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue