use nappgui_sys::{
slider_OnMoved, slider_create, slider_get_value, slider_steps, slider_tooltip, slider_value,
slider_vertical,
};
use crate::util::macros::callback;
pub struct Slider {
pub(crate) inner: *mut nappgui_sys::Slider,
}
impl Slider {
pub(crate) fn new(ptr: *mut nappgui_sys::Slider) -> Self {
if ptr.is_null() {
panic!("ptr is null");
}
Self { inner: ptr }
}
pub fn create() -> Self {
let updown = unsafe { slider_create() };
Self::new(updown)
}
pub fn create_vertical() -> Self {
let updown = unsafe { slider_vertical() };
Self::new(updown)
}
callback! {
pub on_moved(Slider) => slider_OnMoved;
}
pub fn tooltip(&self, text: &str) {
let text = std::ffi::CString::new(text).unwrap();
unsafe {
slider_tooltip(self.inner, text.as_ptr());
}
}
pub fn steps(&self, steps: u32) {
unsafe {
slider_steps(self.inner, steps);
}
}
pub fn value(&self, value: f32) {
unsafe {
slider_value(self.inner, value);
}
}
pub fn get_value(&self) -> f32 {
unsafe { slider_get_value(self.inner) }
}
}