use super::grid;
use super::pack;
use super::widget;
use super::wish;
#[derive(Clone, Debug, PartialEq)]
pub struct TkProgressbar {
pub id: String,
mode: widget::ProgressMode,
}
pub fn make_progressbar(
parent: &impl widget::TkWidget,
orientation: widget::Orientation,
mode: widget::ProgressMode,
) -> TkProgressbar {
let id = wish::next_wid(parent.id());
let msg = format!(
"ttk::progressbar {} -orient {} -mode {}",
id, orientation, mode
);
wish::tell_wish(&msg);
TkProgressbar { id, mode }
}
impl widget::TkWidget for TkProgressbar {
fn id(&self) -> &str {
&self.id
}
}
impl grid::TkGridLayout for TkProgressbar {}
impl pack::TkPackLayout for TkProgressbar {}
impl TkProgressbar {
pub fn length(&self, value: u64) {
widget::configure(&self.id, "length", &value.to_string());
}
pub fn maximum(&self, value: f64) {
widget::configure(&self.id, "maximum", &value.to_string());
}
pub fn start(&self, interval: u64) {
let msg = format!("{} start {}", &self.id, interval);
wish::tell_wish(&msg);
}
pub fn state(&self, value: widget::State) {
widget::configure(&self.id, "state", &value.to_string());
}
pub fn step(&self, value: f64) {
let msg = format!("{} step {}", &self.id, value);
wish::tell_wish(&msg);
}
pub fn stop(&self) {
let msg = format!("{} stop", &self.id);
wish::tell_wish(&msg);
}
pub fn value_get(&self) -> f64 {
let result = widget::TkWidget::cget(self, "value");
result.parse::<f64>().unwrap_or(0.0)
}
pub fn value(&self, value: f64) {
widget::configure(&self.id, "value", &value.to_string());
}
}