use crate::enums::Mode;
use crate::prelude::*;
use std::path;
mod channel;
pub use channel::*;
mod event;
pub use event::*;
mod font;
pub use font::*;
mod init;
pub use init::*;
mod rt;
pub use rt::*;
mod screen;
pub use screen::*;
mod state;
pub use state::*;
mod version;
pub use version::*;
mod visual;
pub use visual::*;
mod widget;
pub use widget::*;
mod opts;
pub use opts::*;
pub mod cairo;
pub mod prefs;
#[derive(Debug, Copy, Clone)]
pub struct App {}
impl Default for App {
fn default() -> Self {
init_all();
App {}
}
}
impl App {
pub fn set_scheme(&mut self, scheme: Scheme) {
set_scheme(scheme);
}
pub fn with_scheme(self, scheme: Scheme) -> App {
set_scheme(scheme);
self
}
pub fn scheme(self) -> Scheme {
scheme()
}
pub fn run(self) -> Result<(), FltkError> {
run()
}
pub fn wait(self) -> bool {
wait()
}
pub fn load_system_fonts(self) -> Self {
*FONTS.lock().unwrap() = get_font_names();
self
}
pub fn load_font<P: AsRef<path::Path>>(self, path: P) -> Result<String, FltkError> {
Self::load_font_(path.as_ref())
}
fn load_font_(path: &path::Path) -> Result<String, FltkError> {
if !path.exists() {
return Err::<String, FltkError>(FltkError::Internal(FltkErrorKind::ResourceNotFound));
}
if let Some(p) = path.to_str() {
let name = load_font(p)?;
Ok(name)
} else {
Err(FltkError::Internal(FltkErrorKind::ResourceNotFound))
}
}
pub fn set_visual(self, mode: Mode) -> Result<(), FltkError> {
set_visual(mode)
}
pub fn redraw(self) {
redraw()
}
pub fn quit(self) {
quit()
}
}