1use crate::io::DrawMenu;
2use crate::modes::Menu;
3use crate::{impl_content, impl_selectable};
4
5pub enum PickerCaller {
8 Cloud,
9 Menu(Menu),
10 Unknown,
11}
12
13#[derive(Default)]
16pub struct Picker {
17 pub caller: Option<PickerCaller>,
18 pub desc: Option<String>,
19 pub index: usize,
20 pub content: Vec<String>,
21}
22
23impl Picker {
24 pub fn clear(&mut self) {
25 self.caller = None;
26 self.index = 0;
27 self.content = vec![];
28 }
29
30 pub fn set(
31 &mut self,
32 caller: Option<PickerCaller>,
33 desc: Option<String>,
34 content: Vec<String>,
35 ) {
36 self.clear();
37 self.caller = caller;
38 self.desc = desc;
39 self.content = content;
40 }
41}
42
43impl_content!(Picker, String);
44
45impl DrawMenu<String> for Picker {}