73 lines
1.8 KiB
Rust
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: >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<T>(b: >k::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
|