Maraiah/src/tycho/main.rs

73 lines
1.8 KiB
Rust

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: &gtk::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<T>(b: &gtk::Builder, name: &str) -> T
where T: glib::object::IsA<glib::object::Object>
{
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