mirror of
https://codeberg.org/unspeaker/tek.git
synced 2026-07-17 15:56:57 +02:00
restruct: 65e
This commit is contained in:
parent
ae347eeef7
commit
b3e9cde8a1
4 changed files with 38 additions and 49 deletions
|
|
@ -202,28 +202,28 @@ pub fn view_io_ports <'a, T: PortsSizes<'a>> (
|
|||
})
|
||||
}
|
||||
|
||||
pub fn view_scenes_clips (
|
||||
scenes: impl ScenesSizes<'_>,
|
||||
tracks: impl TracksSizes<'_>,
|
||||
pub fn view_scenes_clips <'a> (
|
||||
scenes: impl ScenesSizes<'a>,
|
||||
tracks: impl TracksSizes<'a>,
|
||||
select: &Selection,
|
||||
editor: Option<&MidiEditor>,
|
||||
size: &Size,
|
||||
is_editing: bool,
|
||||
) -> impl Draw<Tui> {
|
||||
size.of(wh_full(above(wh_full(origin_se(fg(Green, format!("{}x{}", size.w(), size.h())))),
|
||||
thunk(|to: &mut Tui|{
|
||||
thunk(move |to: &mut Tui|{
|
||||
for (index, track, _, _) in tracks {
|
||||
let clips = view_track_clips(scenes, select, editor, index, track, is_editing);
|
||||
let clips = view_track_clips(&scenes, select, editor, index, track, is_editing);
|
||||
w_exact(track.width as u16, h_full(clips)).draw(to);
|
||||
}
|
||||
Ok(XYWH(0, 0, 0, 0))
|
||||
}))))
|
||||
}
|
||||
|
||||
pub fn view_track_clips (
|
||||
scenes: impl ScenesSizes<'_>,
|
||||
pub fn view_track_clips <'a> (
|
||||
scenes: &impl ScenesSizes<'a>,
|
||||
select: &Selection,
|
||||
editor: &Option<MidiEditor>,
|
||||
editor: Option<&MidiEditor>,
|
||||
index: usize,
|
||||
track: &Track,
|
||||
is_editing: bool,
|
||||
|
|
@ -320,7 +320,7 @@ pub fn view_track_names (
|
|||
pub fn view_track_outputs (
|
||||
theme: ItemTheme,
|
||||
tracks: impl TracksSizes<'_>,
|
||||
midi_outs: impl Iterator<Item = ()>,
|
||||
midi_outs: impl Iterator<Item = &MidiOutput>,
|
||||
) -> impl Draw<Tui> {
|
||||
view_track_row_section(theme,
|
||||
south(w_full(origin_w(button_2("o", "utput", false))),
|
||||
|
|
@ -345,14 +345,14 @@ pub fn view_track_outputs (
|
|||
}
|
||||
|
||||
pub fn view_track_inputs (
|
||||
theme: ItemTheme,
|
||||
theme: ItemTheme,
|
||||
tracks: impl TracksSizes<'_>,
|
||||
h: u16,
|
||||
height: u16,
|
||||
) -> impl Draw<Tui> {
|
||||
view_track_row_section(theme, button_2("i", "nput", false), button_2("I", "+", false),
|
||||
bg(theme.darker.term, origin_w(thunk(move|to: &mut Tui|{
|
||||
for (index, track, _x1, _x2) in tracks {
|
||||
wh_exact(Some(track_width(index, track)), Some(h + 1),
|
||||
wh_exact(Some(track_width(index, track)), Some(height + 1),
|
||||
origin_nw(south(
|
||||
bg(track.color.base.term,
|
||||
w_full(origin_w(east!(
|
||||
|
|
@ -370,18 +370,21 @@ pub fn view_track_inputs (
|
|||
}
|
||||
|
||||
pub fn view_scenes_names (
|
||||
scenes: &impl ScenesSizes<'_>
|
||||
scenes: impl ScenesSizes<'_>,
|
||||
select: &Selection,
|
||||
editor: Option<&MidiEditor>,
|
||||
editing: bool,
|
||||
) -> impl Draw<Tui> {
|
||||
w_exact(20, thunk(|to: &mut Tui|{
|
||||
w_exact(20, thunk(move |to: &mut Tui|{
|
||||
for (index, scene, ..) in scenes {
|
||||
view_scene_name(index, scene).draw(to);
|
||||
view_scene_name(select, editor, index, scene, editing).draw(to);
|
||||
}
|
||||
Ok(XYWH(1, 1, 1, 1))
|
||||
}))
|
||||
}
|
||||
|
||||
pub fn view_scene_name (
|
||||
select: Option<&Selection>,
|
||||
select: &Selection,
|
||||
editor: Option<&MidiEditor>,
|
||||
index: usize,
|
||||
scene: &Scene,
|
||||
|
|
@ -422,8 +425,9 @@ pub fn view_audio_outs_status (theme: ItemTheme, track: Option<&Track>) -> impl
|
|||
track.map(move|track|view_ports_status(theme, "Audio outs:", &track.audio_outs()))
|
||||
}
|
||||
|
||||
pub fn view_track_per (
|
||||
tracks: impl TracksSizes<'_>
|
||||
pub fn view_track_per <'a, T: Draw<Tui> + 'a, U: TracksSizes<'a>> (
|
||||
tracks: impl Fn() -> U + Send + Sync + 'a,
|
||||
callback: impl Fn(usize, &'a Track)->T + Send + Sync + 'a
|
||||
) -> impl Draw<Tui> {
|
||||
iter_east(tracks, move|(index, track, x1, x2): (usize, &Track, usize, usize), _|{
|
||||
w_exact((x2 - x1) as u16, fg_bg(
|
||||
|
|
@ -437,12 +441,9 @@ pub fn view_per_track () -> impl Draw<Tui> {}
|
|||
|
||||
pub fn view_per_track_top () -> impl Draw<Tui> {}
|
||||
|
||||
pub fn view_inputs (
|
||||
tracks: impl TracksSizes<'_>,
|
||||
midi_ins: &[MidiIn],
|
||||
) -> impl Draw<Tui> {
|
||||
let header = h_exact(1, view_inputs_header(tracks));
|
||||
south(header, thunk(|to: &mut Tui|{
|
||||
pub fn view_inputs (tracks: impl TracksSizes<'_>, midi_ins: &[MidiInput]) -> impl Draw<Tui> {
|
||||
let header = h_exact(1, view_inputs_header(tracks, midi_ins));
|
||||
south(header, thunk(move |to: &mut Tui|{
|
||||
for (index, port) in midi_ins.iter().enumerate() {
|
||||
x_push(index as u16 * 10, h_exact(1, view_inputs_row(tracks, port))).draw(to);
|
||||
}
|
||||
|
|
@ -450,10 +451,7 @@ pub fn view_inputs (
|
|||
}))
|
||||
}
|
||||
|
||||
pub fn view_inputs_header (
|
||||
tracks: impl TracksSizes<'_>,
|
||||
midi_ins: &[MidiIn],
|
||||
) -> impl Draw<Tui> {
|
||||
pub fn view_inputs_header (tracks: impl TracksSizes<'_>, midi_ins: &[MidiInput]) -> impl Draw<Tui> {
|
||||
east(w_exact(20, origin_w(button_3("i", "nput ", format!("{}", midi_ins.len()), false))),
|
||||
west(w_exact(4, button_2("I", "+", false)), thunk(move|to: &mut Tui|{
|
||||
for (_index, track, x1, _x2) in tracks {
|
||||
|
|
@ -468,10 +466,7 @@ pub fn view_inputs_header (
|
|||
})))
|
||||
}
|
||||
|
||||
pub fn view_inputs_row (
|
||||
tracks: impl TracksSizes<'_>,
|
||||
port: ()
|
||||
) -> impl Draw<Tui> {
|
||||
pub fn view_inputs_row (tracks: impl TracksSizes<'_>, port: &MidiInput) -> impl Draw<Tui> {
|
||||
east(w_exact(20, origin_w(east(" ● ", bold(true, fg(Rgb(255,255,255), port.port_name()))))),
|
||||
west(w_exact(4, ()), thunk(move|to: &mut Tui|{
|
||||
for (_index, track, _x1, _x2) in tracks {
|
||||
|
|
|
|||
|
|
@ -27,13 +27,12 @@ pub trait ClipsView: TracksView + ScenesView {
|
|||
/// Draw clips per scene
|
||||
fn view_scenes_clips <'a> (&'a self) -> impl Draw<Tui> + 'a {
|
||||
crate::view::view_scenes_clips(
|
||||
self.tracks_with_sizes(), self.clips_size()
|
||||
)
|
||||
}
|
||||
/// Draw clips for tracks
|
||||
fn view_track_clips <'a> (&'a self, track_index: usize, track: &'a Track) -> impl Draw<Tui> + 'a {
|
||||
crate::view::view_track_clips(
|
||||
self.scenes_with_sizes(), self.selection(), self.editor(), track_index, track
|
||||
self.scenes_with_sizes(),
|
||||
self.tracks_with_sizes(),
|
||||
self.selection(),
|
||||
self.editor(),
|
||||
self.clips_size(),
|
||||
self.is_editing(),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,12 +61,7 @@ pub trait ScenesView: HasEditor + HasSelection + HasSceneScroll + HasClipsSize +
|
|||
|
||||
fn view_scenes_names (&self) -> impl Draw<Tui> {
|
||||
crate::view::view_scenes_names(
|
||||
self.scenes_with_sizes()
|
||||
)
|
||||
}
|
||||
fn view_scene_name <'a> (&'a self, index: usize, scene: &'a Scene) -> impl Draw<Tui> + 'a {
|
||||
crate::view::view_scene_name(
|
||||
self.selected(), self.editor(), index, scene
|
||||
self.scenes_with_sizes(), self.selection(), self.editor(), self.is_editing()
|
||||
)
|
||||
}
|
||||
fn scenes_with_sizes (&self) -> impl ScenesSizes<'_> {
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ impl Track {
|
|||
tracks: impl Fn() -> U + Send + Sync + 'a,
|
||||
callback: impl Fn(usize, &'a Track)->T + Send + Sync + 'a
|
||||
) -> impl Draw<Tui> + 'a {
|
||||
per(tracks, callback)
|
||||
view_track_per(tracks, callback)
|
||||
}
|
||||
|
||||
/// Create a new track connecting the [Sequencer] to a [Sampler].
|
||||
|
|
@ -180,7 +180,7 @@ pub trait TracksView: ScenesView + HasMidiIns + HasMidiOuts + HasTrackScroll {
|
|||
/// Draw name of each track
|
||||
fn view_track_names (&self, theme: ItemTheme) -> impl Draw<Tui> {
|
||||
crate::view::view_track_names(
|
||||
self.tracks_with_sizes(), self.tracks().len(), self.scenes().len(), self.selection()
|
||||
theme, self.tracks_with_sizes(), self.tracks().len(), self.scenes().len(), self.selection()
|
||||
)
|
||||
}
|
||||
/// Draw outputs per track
|
||||
|
|
@ -251,12 +251,12 @@ impl_as_mut_opt!(Track: |self: Arrangement| self.selected_track_mut());
|
|||
impl Arrangement {
|
||||
#[cfg(feature = "track")]
|
||||
pub fn view_inputs (&self, _theme: ItemTheme) -> impl Draw<Tui> + '_ {
|
||||
crate::view::view_inputs()
|
||||
crate::view::view_inputs(self.tracks_with_sizes(), self.midi_ins().as_slice())
|
||||
}
|
||||
|
||||
#[cfg(feature = "track")]
|
||||
pub fn view_inputs_header (&self) -> impl Draw<Tui> + '_ {
|
||||
crate::view::view_inputs_header(self.tracks_with_sizes())
|
||||
crate::view::view_inputs_header(self.tracks_with_sizes(), self.midi_ins().as_slice())
|
||||
}
|
||||
|
||||
#[cfg(feature = "track")]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue