use nappgui_sys::{progress_create, progress_undefined, progress_value};
use crate::gui::{control::impl_control, impl_layout};
pub trait ProgressTrait {
fn as_ptr(&self) -> *mut nappgui_sys::Progress;
fn undefined(&self, running: bool) {
unsafe { progress_undefined(self.as_ptr(), running as _) };
}
fn value(&self, value: f32) {
unsafe { progress_value(self.as_ptr(), value) };
}
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug)]
pub struct Progress {
pub(crate) inner: *mut nappgui_sys::Progress,
}
impl ProgressTrait for Progress {
fn as_ptr(&self) -> *mut nappgui_sys::Progress {
self.inner
}
}
impl Progress {
pub fn new() -> Self {
let progress = unsafe { progress_create() };
Self { inner: progress }
}
}
impl_control!(Progress, guicontrol_progress);
impl_layout!(Progress, ProgressTrait, layout_progress);