1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
use super::state::*; use crate::auto_path::AutoPath; use crate::manifest::Binder; use derive_more::{Deref, DerefMut}; use rill_engine::tracers::tracer::{ControlSender, Tracer}; #[derive(Debug, Deref, DerefMut, Clone)] pub struct Slider { #[deref] #[deref_mut] tracer: Tracer<SliderState>, _binder: Binder, } impl Slider { pub fn new( auto_path: impl Into<AutoPath>, label: impl ToString, min: f64, max: f64, step: f64, sender: ControlSender<SliderState>, ) -> Self { let path = auto_path.into(); let state = SliderState::new(label.to_string(), min, max, step); let tracer = Tracer::new(state, path.into(), None, Some(sender)); let binder = Binder::new(&tracer); Self { tracer, _binder: binder, } } pub fn set(&self, set_value: f64) { let msg = SliderEvent { set_value }; self.tracer.send(msg, None); } }