Feat: introduce follow up actions
This commit is contained in:
@@ -609,37 +609,45 @@ fn render_modal(
|
||||
speed,
|
||||
quantization,
|
||||
sync_mode,
|
||||
follow_up,
|
||||
} => {
|
||||
use crate::model::FollowUp;
|
||||
use crate::state::PatternPropsField;
|
||||
|
||||
let is_chain = matches!(follow_up, FollowUp::Chain { .. });
|
||||
let modal_height = if is_chain { 16 } else { 14 };
|
||||
|
||||
let inner = ModalFrame::new(&format!(" Pattern B{:02}:P{:02} ", bank + 1, pattern + 1))
|
||||
.width(50)
|
||||
.height(12)
|
||||
.height(modal_height)
|
||||
.border_color(theme.modal.input)
|
||||
.render_centered(frame, term);
|
||||
|
||||
let speed_label = speed.label();
|
||||
let fields: Vec<(&str, &str, bool)> = vec![
|
||||
("Name", name.as_str(), *field == PatternPropsField::Name),
|
||||
(
|
||||
"Length",
|
||||
length.as_str(),
|
||||
*field == PatternPropsField::Length,
|
||||
),
|
||||
("Speed", &speed_label, *field == PatternPropsField::Speed),
|
||||
(
|
||||
"Quantization",
|
||||
quantization.label(),
|
||||
*field == PatternPropsField::Quantization,
|
||||
),
|
||||
(
|
||||
"Sync Mode",
|
||||
sync_mode.label(),
|
||||
*field == PatternPropsField::SyncMode,
|
||||
),
|
||||
let follow_up_label = match follow_up {
|
||||
FollowUp::Loop => "Loop".to_string(),
|
||||
FollowUp::Stop => "Stop".to_string(),
|
||||
FollowUp::Chain { bank: b, pattern: p } => {
|
||||
format!("Chain B{:02}:P{:02}", b + 1, p + 1)
|
||||
}
|
||||
};
|
||||
let mut fields: Vec<(&str, String, bool)> = vec![
|
||||
("Name", name.clone(), *field == PatternPropsField::Name),
|
||||
("Length", length.clone(), *field == PatternPropsField::Length),
|
||||
("Speed", speed_label, *field == PatternPropsField::Speed),
|
||||
("Quantization", quantization.label().to_string(), *field == PatternPropsField::Quantization),
|
||||
("Sync Mode", sync_mode.label().to_string(), *field == PatternPropsField::SyncMode),
|
||||
("Follow Up", follow_up_label, *field == PatternPropsField::FollowUp),
|
||||
];
|
||||
if is_chain {
|
||||
if let FollowUp::Chain { bank: b, pattern: p } = follow_up {
|
||||
fields.push((" Bank", format!("{:02}", b + 1), *field == PatternPropsField::ChainBank));
|
||||
fields.push((" Pattern", format!("{:02}", p + 1), *field == PatternPropsField::ChainPattern));
|
||||
}
|
||||
}
|
||||
|
||||
render_props_form(frame, inner, &fields);
|
||||
let fields_ref: Vec<(&str, &str, bool)> = fields.iter().map(|(l, v, s)| (*l, v.as_str(), *s)).collect();
|
||||
render_props_form(frame, inner, &fields_ref);
|
||||
|
||||
let hint_area = Rect::new(inner.x, inner.y + inner.height - 1, inner.width, 1);
|
||||
let hints = hint_line(&[
|
||||
|
||||
Reference in New Issue
Block a user