mirror of
https://codeberg.org/unspeaker/tek.git
synced 2026-10-08 18:56:42 +02:00
toggle edit mode with editor
This commit is contained in:
parent
ea74aba7b7
commit
767f917302
5 changed files with 156 additions and 144 deletions
119
src/tek_view.rs
119
src/tek_view.rs
|
|
@ -906,61 +906,11 @@ fn view_modes <'a, S: HasModeStack> (state: &'a S) -> impl Draw<Tui> + 'a {
|
|||
})
|
||||
}
|
||||
|
||||
/// Draw clips per scene
|
||||
fn view_scenes_clips <S: TracksView + ScenesView> (state: &S) -> impl Draw<Tui> {
|
||||
let select = state.selection();
|
||||
let editor = state.editor();
|
||||
let editing = state.is_editing();
|
||||
let sized = move|it|state.with_clips_size(true, it).align_c();
|
||||
let tracks = move|it|iter_east(move||state.tracks_with_sizes().map(it));
|
||||
let scenes = move|it|iter_south(move||state.scenes_with_sizes().map(it));
|
||||
sized(tracks(move|(track_index, track, _, _)|{
|
||||
let w = view_track_w(select, track_index, track, editor.as_ref()) as u16;
|
||||
scenes(move|(scene_index, scene, _, _)|{
|
||||
let (name, theme): (Arc<str>, ItemTheme) = view_scene_name_theme(scene, track_index);
|
||||
let f = theme.lightest.term;
|
||||
let (b, o) = view_scene_bg(theme, select, track_index, scene_index);
|
||||
let is_sel = view_scene_sel(select, track_index, scene_index, editing);
|
||||
below(
|
||||
Outer(true, Style::default().fg(o)).full_wh(),
|
||||
above(
|
||||
below(
|
||||
fg_bg(o, b, "".full_wh()),
|
||||
fg_bg(f, b, bold(true, name)).align_nw().full_wh(),
|
||||
),
|
||||
when(is_sel, editor).full_wh()
|
||||
).full_wh()
|
||||
).exact_wh(w, view_scene_y(select, scene_index, editor.as_ref()),)
|
||||
}).exact_w(w)
|
||||
}))
|
||||
}
|
||||
|
||||
pub fn view_scene_bg (
|
||||
theme: ItemTheme, select: &Selection, track_index: usize, scene_index: usize
|
||||
) -> (Color, Color) {
|
||||
let mut outline = theme.base.term;
|
||||
(if select.track() == Some(track_index) && select.scene() == Some(scene_index) {
|
||||
outline = theme.lighter.term;
|
||||
theme.light.term
|
||||
} else if select.track() == Some(track_index) || select.scene() == Some(scene_index) {
|
||||
outline = theme.darkest.term;
|
||||
theme.base.term
|
||||
} else {
|
||||
theme.dark.term
|
||||
}, outline)
|
||||
}
|
||||
|
||||
pub fn view_scene_sel (
|
||||
select: &Selection, track_index: usize, scene_index: usize, editing: bool
|
||||
) -> bool {
|
||||
editing && select.track() == Some(track_index) && select.scene() == Some(scene_index)
|
||||
}
|
||||
|
||||
pub fn view_track_w (
|
||||
select: &Selection, track_index: usize, track: &Track, editor: Option<&MidiEditor>
|
||||
) -> u16 {
|
||||
if select.track() == Some(track_index) && let Some(editor) = editor {
|
||||
(editor.size.w() as usize).max(24).max(track.width) as u16
|
||||
(editor.size.w() as usize).max(20).max(track.width) as u16
|
||||
} else {
|
||||
track.width as u16
|
||||
}
|
||||
|
|
@ -970,16 +920,6 @@ pub(crate) fn track_width (_index: usize, track: &Track) -> u16 {
|
|||
track.width as u16
|
||||
}
|
||||
|
||||
pub fn view_scene_y (
|
||||
select: &Selection, scene_index: usize, editor: Option<&MidiEditor>
|
||||
) -> u16 {
|
||||
if select.scene() == Some(scene_index) && let Some(editor) = editor {
|
||||
editor.size.h().max(12)
|
||||
} else {
|
||||
Scene::DEFAULT_HEIGHT as u16
|
||||
}
|
||||
}
|
||||
|
||||
pub fn draw_sample (
|
||||
to: &mut Tui, x: u16, y: u16, note: Option<&u7>, sample: &Sample, focus: bool
|
||||
) -> Usually<usize> {
|
||||
|
|
@ -1169,6 +1109,61 @@ pub fn view_scene_name <'a> (
|
|||
bg(c, above(a, b.push_y(1)).align_nw().exact_h(h))
|
||||
}
|
||||
|
||||
/// Draw clips per scene
|
||||
fn view_scenes_clips <S: TracksView + ScenesView> (state: &S) -> impl Draw<Tui> {
|
||||
let select = state.selection();
|
||||
let editor = state.editor();
|
||||
let editing = state.is_editing();
|
||||
let sized = move|it|state.with_clips_size(true, it).align_c();
|
||||
let tracks = move|it|iter_east(move||state.tracks_with_sizes().map(it));
|
||||
let scenes = move|it|iter_south(move||state.scenes_with_sizes().map(it));
|
||||
sized(tracks(move|(track_index, track, _, _)|{
|
||||
let w = view_track_w(select, track_index, track, editor.as_ref()) as u16;
|
||||
scenes(move|(scene_index, scene, _, _)|{
|
||||
let (name, theme): (Arc<str>, ItemTheme) = view_scene_name_theme(scene, track_index);
|
||||
let f = theme.lightest.term;
|
||||
let (b, o) = view_scene_bg(theme, select, track_index, scene_index);
|
||||
let is_sel = view_scene_sel(select, track_index, scene_index, editing);
|
||||
let border = Outer(true, Style::default().fg(o)).full_wh();
|
||||
let title = below(fg_bg(o, b, "".full_wh()),
|
||||
fg_bg(f, b, bold(true, name)).align_nw().full_wh());
|
||||
above(border, above(title, when(is_sel, editor).full_wh()).full_wh())
|
||||
.exact_wh(w, view_scene_y(select, scene_index, editor.as_ref()),)
|
||||
}).exact_w(w)
|
||||
}))
|
||||
}
|
||||
|
||||
pub fn view_scene_bg (
|
||||
theme: ItemTheme, select: &Selection, track_index: usize, scene_index: usize
|
||||
) -> (Color, Color) {
|
||||
let mut outline = theme.base.term;
|
||||
(if select.track() == Some(track_index) && select.scene() == Some(scene_index) {
|
||||
outline = theme.lighter.term;
|
||||
theme.light.term
|
||||
} else if select.track() == Some(track_index) || select.scene() == Some(scene_index) {
|
||||
outline = theme.darkest.term;
|
||||
theme.base.term
|
||||
} else {
|
||||
theme.dark.term
|
||||
}, outline)
|
||||
}
|
||||
|
||||
pub fn view_scene_sel (
|
||||
select: &Selection, track_index: usize, scene_index: usize, editing: bool
|
||||
) -> bool {
|
||||
editing && select.track() == Some(track_index) && select.scene() == Some(scene_index)
|
||||
}
|
||||
|
||||
pub fn view_scene_y (
|
||||
select: &Selection, scene_index: usize, editor: Option<&MidiEditor>
|
||||
) -> u16 {
|
||||
if select.scene() == Some(scene_index) && let Some(editor) = editor {
|
||||
editor.size.h().max(13)
|
||||
} else {
|
||||
Scene::DEFAULT_HEIGHT as u16
|
||||
}
|
||||
}
|
||||
|
||||
pub fn view_clip_info (editor: &MidiEditor) -> impl Draw<Tui> + '_ {
|
||||
let (
|
||||
_color, name, length, looped
|
||||
|
|
@ -1512,7 +1507,7 @@ pub fn draw_piano_bg (
|
|||
cell.set_char('=');
|
||||
} else if (127 - note) % 6 == 0 {
|
||||
cell.set_fg(clip.color.darker.term);
|
||||
cell.set_char('—');
|
||||
cell.set_char('-');
|
||||
} else {
|
||||
cell.set_fg(clip.color.darker.term);
|
||||
cell.set_char('·');
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue