use crate::knob::KnobOverrides;
use teksilo_core::widget::Widget;
pub type ScenarioBuilder = fn() -> Box<dyn Widget>;
#[derive(Debug, Clone)]
pub enum PreviewVariant {
Knobs {
name: &'static str,
overrides: KnobOverrides,
},
Scenario {
name: &'static str,
builder: ScenarioBuilder,
},
}
impl PreviewVariant {
pub fn name(&self) -> &'static str {
match self {
PreviewVariant::Knobs { name, .. } => name,
PreviewVariant::Scenario { name, .. } => name,
}
}
pub fn knobs(name: &'static str, overrides: KnobOverrides) -> Self {
PreviewVariant::Knobs { name, overrides }
}
pub fn defaults(name: &'static str) -> Self {
PreviewVariant::Knobs {
name,
overrides: KnobOverrides::new(),
}
}
pub fn scenario(name: &'static str, builder: ScenarioBuilder) -> Self {
PreviewVariant::Scenario { name, builder }
}
}