shorthand next and prev and page number roll over

This commit is contained in:
ctcl-bregis 2024-12-16 19:51:46 -05:00
parent 15fabbdb1a
commit 79fc190013

View file

@ -572,15 +572,14 @@ fn create_config(
print_flag_page(&pages[usize::from(page)], page).context("failed to print flag page")?;
let mut opts: Vec<&str> = <Preset as VariantNames>::VARIANTS.into();
if page < num_pages.checked_sub(1).unwrap() {
opts.push("next");
}
if page > 0 {
opts.push("prev");
}
opts.push("next");
opts.push("n");
opts.push("prev");
opts.push("p");
writeln!(
io::stdout(),
"Enter 'next' to go to the next page and 'prev' to go to the previous page."
"Enter '[n]ext' to go to the next page and '[p]rev' to go to the previous page."
)
.context("failed to write message to stdout")?;
let selection = literal_input(
@ -595,10 +594,18 @@ fn create_config(
)
.context("failed to ask for choice input")
.context("failed to select preset")?;
if selection == "next" {
page = page.checked_add(1).unwrap();
} else if selection == "prev" {
page = page.checked_sub(1).unwrap();
if selection == "next" || selection == "n" {
if page == num_pages.checked_sub(1).unwrap() {
page = 0
} else {
page = page.checked_add(1).unwrap();
}
} else if selection == "prev" || selection == "p" {
if page == 0 {
page = num_pages.checked_sub(1).unwrap();
} else {
page = page.checked_sub(1).unwrap();
}
} else {
preset = selection.parse().expect("selected preset should be valid");
debug!(?preset, "selected preset");