browser with target action

This commit is contained in:
🪞👃🪞 2025-05-14 21:31:50 +03:00
parent b7152ef807
commit c66a006120
10 changed files with 102 additions and 56 deletions

View file

@ -64,18 +64,19 @@ impl App {
}
pub fn view_ports_status (&self) -> impl Content<TuiOut> + use<'_> {
self.project.get_track().map(|track|Bsp::s(
Fixed::y(4.max(track.sequencer.midi_ins.len() as u16), Align::n(Map::south(1,
Fixed::y(2.max(track.sequencer.midi_ins.len() as u16), Align::n(Map::south(1,
||track.sequencer.midi_ins.iter(),
|port, index|Fixed::x(20, FieldV(
self.color,
format!("IN {index}: "),
format!("MIDI in {index}: "),
format!("{}", port.name())))))),
Fixed::y(4.max(track.sequencer.midi_outs.len() as u16), Align::n(Map::south(1,
Fixed::y(2.max(track.sequencer.midi_outs.len() as u16), Align::n(Map::south(1,
||track.sequencer.midi_outs.iter(),
|port, index|Fixed::x(20, FieldV(
self.color,
format!("OUT {index}: "),
format!("{}", port.name()))))))))
format!("MIDI out {index}:"),
format!("{}", port.name()))))))
))
}
pub fn view_arranger (&self) -> impl Content<TuiOut> + use<'_> {
ArrangerView::new(&self.project, self.editor.as_ref())
@ -116,10 +117,8 @@ impl App {
self.view_dialog_menu().boxed(),
Dialog::Help(offset) =>
self.view_dialog_help(*offset).boxed(),
Dialog::Save(browser) =>
self.view_dialog_save(browser).boxed(),
Dialog::Load(browser) =>
self.view_dialog_load(browser).boxed(),
Dialog::Browser(target, browser) =>
self.view_dialog_browser(target, browser).boxed(),
Dialog::Options =>
self.view_dialog_options().boxed(),
Dialog::Device(index) =>
@ -162,11 +161,19 @@ impl App {
pub fn view_dialog_message <'a> (&'a self, message: &'a Message) -> impl Content<TuiOut> + use<'a> {
Bsp::s(message, Bsp::s("", "[ OK ]"))
}
pub fn view_dialog_save <'a> (&'a self, browser: &'a Browser) -> impl Content<TuiOut> + use<'a> {
pub fn view_dialog_browser <'a> (&'a self, target: &BrowserTarget, browser: &'a Browser) -> impl Content<TuiOut> + use<'a> {
Bsp::s(
Fill::x(Align::w(Margin::xy(1, 1, Bsp::e(
Tui::bold(true, " Save project: "),
Shrink::x(3, Fixed::y(1, RepeatH("🭻"))))))),
Padding::xy(3, 1, Fill::x(Align::w(FieldV(
self.color,
match target {
BrowserTarget::SaveProject => "Save project:",
BrowserTarget::LoadProject => "Load project:",
BrowserTarget::ImportSample(_) => "Import sample:",
BrowserTarget::ExportSample(_) => "Export sample:",
BrowserTarget::ImportClip(_) => "Import clip:",
BrowserTarget::ExportClip(_) => "Export clip:",
},
Shrink::x(3, Fixed::y(1, Tui::fg(Tui::g(96), RepeatH("🭻")))))))),
Outer(true, Style::default().fg(Tui::g(96)))
.enclose(Fill::xy(browser)))
}
@ -178,6 +185,22 @@ impl App {
Outer(true, Style::default().fg(Tui::g(96)))
.enclose(Fill::xy(browser)))
}
pub fn view_dialog_export <'a> (&'a self, browser: &'a Browser) -> impl Content<TuiOut> + use<'a> {
Bsp::s(
Fill::x(Align::w(Margin::xy(1, 1, Bsp::e(
Tui::bold(true, " Export: "),
Shrink::x(3, Fixed::y(1, RepeatH("🭻"))))))),
Outer(true, Style::default().fg(Tui::g(96)))
.enclose(Fill::xy(browser)))
}
pub fn view_dialog_import <'a> (&'a self, browser: &'a Browser) -> impl Content<TuiOut> + use<'a> {
Bsp::s(
Fill::x(Align::w(Margin::xy(1, 1, Bsp::e(
Tui::bold(true, " Import: "),
Shrink::x(3, Fixed::y(1, RepeatH("🭻"))))))),
Outer(true, Style::default().fg(Tui::g(96)))
.enclose(Fill::xy(browser)))
}
pub fn view_dialog_options <'a> (&'a self) -> impl Content<TuiOut> + use<'a> {
"TODO"
}