mirror of
https://codeberg.org/unspeaker/perch.git
synced 2025-12-06 09:36:42 +01:00
36 lines
1 KiB
Rust
36 lines
1 KiB
Rust
use crate::*;
|
|
|
|
impl Perch {
|
|
pub fn handle_save (&mut self, event: &Event, choice: u8) -> Usually<()> {
|
|
match event {
|
|
press!(Esc) => { self.mode = None }
|
|
press!(Left) => { self.mode = Some(Mode::Save {
|
|
choice: choice.overflowing_sub(1).0.min(2)
|
|
}) },
|
|
press!(Right) => { self.mode = Some(Mode::Save {
|
|
choice: (choice + 1) % 3
|
|
}) },
|
|
press!(Enter) => match choice {
|
|
0 => {
|
|
self.revert_all();
|
|
self.mode = None;
|
|
},
|
|
1 => {
|
|
self.mode = None;
|
|
},
|
|
2 => {
|
|
self.save_all()?;
|
|
self.mode = None
|
|
},
|
|
_ => unreachable!(),
|
|
},
|
|
_ => {}
|
|
}
|
|
Ok(())
|
|
}
|
|
pub fn save_begin (&mut self) {
|
|
if self.changes > 0 {
|
|
self.mode = Some(Mode::Save { choice: 1 })
|
|
}
|
|
}
|
|
}
|