use crate::op::{Op, OpProgress};
use crate::result::Result;
use crate::ui::Ui;
use lazy_static::lazy_static;
use std::sync::RwLock;
lazy_static! {
static ref GLOBAL: RwLock<Option<Ui>> = RwLock::new(None);
}
#[allow(unused)]
pub fn init_ui(enable_logger: bool) -> Result<()> {
let mut writer = GLOBAL.write().expect("lock is poisoned");
assert!(
writer.is_none(),
"global UI object has already been initialized"
);
*writer = Some(Ui::new(enable_logger)?);
Ok(())
}
#[allow(unused)]
pub fn begin_operation(len: Option<OpProgress>) -> Result<Op> {
let reader = GLOBAL.read().expect("lock is poisoned");
reader
.as_ref()
.expect("global UI object not initialized")
.begin_operation(len)
}