use std::fmt;
pub enum WidgetEvent {
None,
Selected {
path: Vec<usize>,
},
Toggled {
path: Vec<usize>,
expanded: bool,
},
Scrolled {
offset: usize,
direction: i32,
},
FilterModeChanged {
active: bool,
filter: String,
},
FilterModeExited {
path: Vec<usize>,
},
MenuSelected {
index: usize,
action: Option<Box<dyn FnOnce() + Send>>,
},
}
impl Default for WidgetEvent {
fn default() -> Self {
WidgetEvent::None
}
}
impl fmt::Debug for WidgetEvent {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
WidgetEvent::None => write!(f, "WidgetEvent::None"),
WidgetEvent::Selected { path } => {
write!(f, "WidgetEvent::Selected {{ path: {:?} }}", path)
}
WidgetEvent::Toggled { path, expanded } => {
write!(
f,
"WidgetEvent::Toggled {{ path: {:?}, expanded: {} }}",
path, expanded
)
}
WidgetEvent::Scrolled { offset, direction } => write!(
f,
"WidgetEvent::Scrolled {{ offset: {}, direction: {} }}",
offset, direction
),
WidgetEvent::FilterModeChanged { active, filter } => write!(
f,
"WidgetEvent::FilterModeChanged {{ active: {}, filter: {:?} }}",
active, filter
),
WidgetEvent::FilterModeExited { path } => {
write!(f, "WidgetEvent::FilterModeExited {{ path: {:?} }}", path)
}
WidgetEvent::MenuSelected { index, action: _ } => {
write!(f, "WidgetEvent::MenuSelected {{ index: {} }}", index)
}
}
}
}