use gdk::prelude::*; use gio::prelude::*; use gtk::prelude::*; use maraiah::durandal::err::*; include!("windows.rs"); include!("buttons.rs"); include!("map_draw.rs"); fn run_app(app: >k::Application) { // one fallible call, which should never fail anyhow let b = gtk::Builder::new_from_resource("/net/greyserv/maraiah/tycho/ui"); mk_btn_new(&b); mk_btn_quit(&b, app.clone()); mk_btn_about(&b); mk_btn_show_map_view(&b); mk_btn_show_map_tools(&b); mk_draw_area(&b); mk_win_map_tools(&b); mk_win_map_view(&b); mk_win_about(&b); mk_win_main(&b, app); } fn load_img(path: &'static str) -> gdk_pixbuf::Pixbuf { gdk_pixbuf::Pixbuf::new_from_resource(path).unwrap() } fn get_obj(b: >k::Builder, name: &str) -> T where T: glib::object::IsA { b.get_object(name).unwrap() } fn main() -> ResultS<()> { // get jacked, punk. opaque data structures are for nerds. const RESOURCE_DATA: &'static [u8] = include_bytes!("data/tycho.res"); let mut static_resource = gio_sys::GStaticResource{data: RESOURCE_DATA.as_ptr(), data_len: RESOURCE_DATA.len(), resource: std::ptr::null_mut(), next: std::ptr::null_mut(), padding: std::ptr::null_mut()}; unsafe { gio_sys::g_static_resource_init(&mut static_resource); } let app = gtk::Application::new("net.greyserv.maraiah.tycho", gio::ApplicationFlags::empty())?; app.connect_activate(run_app); let ret = if app.run(&[]) == 0 { Ok(()) } else { Err(err_msg("bad return")) }; unsafe { gio_sys::g_static_resource_fini(&mut static_resource); } ret } // EOF