53 lines
1019 B
Rust
53 lines
1019 B
Rust
|
extern crate gtk;
|
||
|
|
||
|
use gtk::prelude::*;
|
||
|
use gtk::{LevelBar, LevelBarExt, Window, WindowType};
|
||
|
|
||
|
pub struct Gui {
|
||
|
level_bar: gtk::LevelBar,
|
||
|
}
|
||
|
|
||
|
impl Gui {
|
||
|
pub fn new(title: &str) -> Self {
|
||
|
let window = Window::new(WindowType::Toplevel);
|
||
|
window.set_title(title);
|
||
|
window.set_default_size(350, 70);
|
||
|
|
||
|
window.connect_delete_event(|_, _| {
|
||
|
gtk::main_quit();
|
||
|
Inhibit(false)
|
||
|
});
|
||
|
|
||
|
let level_bar = LevelBar::new();
|
||
|
window.add(&level_bar);
|
||
|
window.show_all();
|
||
|
|
||
|
Self {
|
||
|
level_bar: level_bar,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
pub fn set_level(&self, level: f64) {
|
||
|
self.level_bar.set_value(level);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
pub fn add_timeout<F>(interval: u32, mut func: F)
|
||
|
where
|
||
|
F: FnMut() + 'static,
|
||
|
{
|
||
|
gtk::timeout_add(interval, move || {
|
||
|
func();
|
||
|
Continue(true)
|
||
|
});
|
||
|
}
|
||
|
|
||
|
pub fn init() -> Result<(), String> {
|
||
|
gtk::init().map_err(|_| "Failed to initialize GTK")?;
|
||
|
Ok(())
|
||
|
}
|
||
|
|
||
|
pub fn run() {
|
||
|
gtk::main();
|
||
|
}
|