mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-08 20:56:43 +01:00
fix renaming of duplicates; remove Arranger::modal
This commit is contained in:
parent
de4797ab52
commit
f500c717a2
5 changed files with 44 additions and 140 deletions
|
|
@ -16,11 +16,11 @@ impl Content for Arranger<Tui> {
|
|||
add(&self.arrangement)
|
||||
}
|
||||
}))?;
|
||||
if let Some(ref modal) = self.modal {
|
||||
add(&Background(COLOR_BG1))?;
|
||||
add(&Foreground(COLOR_BG2))?;
|
||||
//add(modal as &dyn Widget<Engine = Tui>)?;
|
||||
}
|
||||
//if let Some(ref modal) = self.modal {
|
||||
//add(&Background(COLOR_BG1))?;
|
||||
//add(&Foreground(COLOR_BG2))?;
|
||||
////add(modal as &dyn Widget<Engine = Tui>)?;
|
||||
//}
|
||||
Ok(())
|
||||
})
|
||||
}
|
||||
|
|
@ -40,6 +40,7 @@ impl Handle<Tui> for Arranger<Tui> {
|
|||
};
|
||||
match from.event() {
|
||||
key!(KeyCode::Char('a')) => handle_phrase()?,
|
||||
key!(KeyCode::Char('c')) => handle_phrase()?,
|
||||
key!(KeyCode::Char('i')) => handle_phrase()?,
|
||||
key!(KeyCode::Char('d')) => handle_phrase()?,
|
||||
_ => self.arrangement.handle(from)?
|
||||
|
|
@ -73,22 +74,22 @@ impl Handle<Tui> for Arranger<Tui> {
|
|||
impl Arranger<Tui> {
|
||||
pub fn rename_selected (&mut self) {
|
||||
let Arrangement { selected, ref name, ref tracks, ref scenes, .. } = self.arrangement;
|
||||
self.modal = match selected {
|
||||
ArrangementFocus::Mix => {
|
||||
Some(Box::new(ArrangerRenameModal::new(selected, &name)))
|
||||
},
|
||||
ArrangementFocus::Track(t) => {
|
||||
Some(Box::new(ArrangerRenameModal::new(selected, &tracks[t].name)))
|
||||
},
|
||||
ArrangementFocus::Scene(s) => {
|
||||
Some(Box::new(ArrangerRenameModal::new(selected, &scenes[s].name)))
|
||||
},
|
||||
ArrangementFocus::Clip(t, s) => if let Some(ref clip) = scenes[s].clips[t] {
|
||||
Some(Box::new(ArrangerRenameModal::new(selected, &clip.read().unwrap().name)))
|
||||
} else {
|
||||
None
|
||||
}
|
||||
};
|
||||
//self.modal = match selected {
|
||||
//ArrangementFocus::Mix => {
|
||||
//Some(Box::new(ArrangerRenameModal::new(selected, &*name.read().unwrap())))
|
||||
//},
|
||||
//ArrangementFocus::Track(t) => {
|
||||
//Some(Box::new(ArrangerRenameModal::new(selected, &*tracks[t].name.read().unwrap())))
|
||||
//},
|
||||
//ArrangementFocus::Scene(s) => {
|
||||
//Some(Box::new(ArrangerRenameModal::new(selected, &*scenes[s].name.read().unwrap())))
|
||||
//},
|
||||
//ArrangementFocus::Clip(t, s) => if let Some(ref clip) = scenes[s].clips[t] {
|
||||
//Some(Box::new(ArrangerRenameModal::new(selected, &clip.read().unwrap().name)))
|
||||
//} else {
|
||||
//None
|
||||
//}
|
||||
//};
|
||||
}
|
||||
}
|
||||
impl Handle<Tui> for Arrangement<Tui> {
|
||||
|
|
@ -103,7 +104,6 @@ impl Handle<Tui> for Arrangement<Tui> {
|
|||
key!(Ctrl-KeyCode::Char('a')) => { self.scene_add(None)?; },
|
||||
key!(Ctrl-KeyCode::Char('t')) => { self.track_add(None)?; },
|
||||
key!(KeyCode::Char('n')) => { todo!("rename selected"); },
|
||||
key!(KeyCode::Char('c')) => { todo!("recolor selected"); },
|
||||
key!(KeyCode::Char('l')) => if let Some(phrase) = self.phrase() {
|
||||
phrase.write().unwrap().toggle_loop()
|
||||
},
|
||||
|
|
@ -188,7 +188,7 @@ impl<'a> Content for VerticalArranger<'a, Tui> {
|
|||
match (tracks.get(track), (scene as &Scene).clips.get(track)) {
|
||||
(Some(track), Some(Some(phrase))) => {
|
||||
let name = &(phrase as &Arc<RwLock<Phrase>>).read().unwrap().name;
|
||||
let name = format!("{}", name.read().unwrap());
|
||||
let name = format!("{}", name);
|
||||
add(&name.as_str().push_x(1).fixed_x(w))?;
|
||||
color = (phrase as &Arc<RwLock<Phrase>>).read().unwrap().color;
|
||||
//if let Some(playing_phrase) = &track.player.phrase {
|
||||
|
|
@ -526,7 +526,7 @@ impl<'a> Content for HorizontalArranger<'a, Tui> {
|
|||
let active_track = selected.track() == Some(i);
|
||||
if let Some(clip) = clip {
|
||||
let y2 = y + 2 + i as u16 * 2;
|
||||
let label = format!("{}", clip.read().unwrap().name.read().unwrap());
|
||||
let label = format!("{}", clip.read().unwrap().name);
|
||||
to.blit(&label, x + x2, y2, Some(if active_track && active_scene {
|
||||
Style::default().not_dim().yellow().bold()
|
||||
} else {
|
||||
|
|
@ -544,61 +544,3 @@ impl<'a> Content for HorizontalArranger<'a, Tui> {
|
|||
)
|
||||
}
|
||||
}
|
||||
impl Content for ArrangerRenameModal<Tui> {
|
||||
type Engine = Tui;
|
||||
fn content (&self) -> impl Widget<Engine = Tui> {
|
||||
todo!();
|
||||
Layers::new(|add|{Ok(())})
|
||||
//let area = to.area();
|
||||
//let y = area.y() + area.h() / 2;
|
||||
//let bg_area = [1, y - 1, area.w() - 2, 3];
|
||||
//to.fill_bg(bg_area, COLOR_BG1);
|
||||
//Lozenge(Style::default().bold().white().dim()).draw(to.with_rect(bg_area));
|
||||
//let label = match self.target {
|
||||
//ArrangementFocus::Mix => "Rename project:",
|
||||
//ArrangementFocus::Track(_) => "Rename track:",
|
||||
//ArrangementFocus::Scene(_) => "Rename scene:",
|
||||
//ArrangementFocus::Clip(_, _) => "Rename clip:",
|
||||
//};
|
||||
//let style = Some(Style::default().not_bold().white().not_dim());
|
||||
//to.blit(&label, area.x() + 3, y, style);
|
||||
//let style = Some(Style::default().bold().white().not_dim());
|
||||
//to.blit(&self.value, area.x() + 3 + label.len() as u16 + 1, y, style);
|
||||
//let style = Some(Style::default().bold().white().not_dim().reversed());
|
||||
//to.blit(&"▂", area.x() + 3 + label.len() as u16 + 1 + self.cursor as u16, y, style);
|
||||
//Ok(Some(area))
|
||||
//Ok(())
|
||||
}
|
||||
}
|
||||
impl Handle<Tui> for ArrangerRenameModal<Tui> {
|
||||
fn handle (&mut self, from: &TuiInput) -> Perhaps<bool> {
|
||||
match from.event() {
|
||||
TuiEvent::Input(Event::Key(k)) => {
|
||||
match k.code {
|
||||
KeyCode::Esc => { self.exit(); },
|
||||
KeyCode::Enter => {
|
||||
*self.result.write().unwrap() = self.value.clone();
|
||||
self.exit();
|
||||
},
|
||||
KeyCode::Left => { self.cursor = self.cursor.saturating_sub(1); },
|
||||
KeyCode::Right => { self.cursor = self.value.len().min(self.cursor + 1) },
|
||||
KeyCode::Backspace => {
|
||||
let last = self.value.len().saturating_sub(1);
|
||||
self.value = format!("{}{}",
|
||||
&self.value[0..self.cursor.min(last)],
|
||||
&self.value[self.cursor.min(last)..last]
|
||||
);
|
||||
self.cursor = self.cursor.saturating_sub(1)
|
||||
}
|
||||
KeyCode::Char(c) => {
|
||||
self.value.insert(self.cursor, c);
|
||||
self.cursor = self.value.len().min(self.cursor + 1)
|
||||
},
|
||||
_ => {}
|
||||
}
|
||||
Ok(Some(true))
|
||||
},
|
||||
_ => Ok(None),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue