Maraiah/src/tycho/main.rs

56 lines
1.4 KiB
Rust

use gtk::prelude::*;
use gio::prelude::*;
use maraiah::durandal::err::*;
// TODO: add detached draw area mode, make everything detachable
const RESOURCE: &'static [u8] =
include_bytes!(concat!(env!("CARGO_MANIFEST_DIR"), "/data/tycho.res"));
const XML: &'static str =
include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/data/tycho.xml"));
fn run_app(app: &gtk::Application)
{
let b = gtk::Builder::new_from_string(XML);
let win: gtk::Window = b.get_object("win_tycho").unwrap();
let abt: gtk::AboutDialog = b.get_object("win_about").unwrap();
let bt_abt: gtk::MenuItem = b.get_object("btn_about").unwrap();
abt.set_authors(&env!("CARGO_PKG_AUTHORS").split(';').collect::<Vec<_>>());
abt.set_version(env!("CARGO_PKG_VERSION"));
abt.set_website(env!("CARGO_PKG_HOMEPAGE"));
{
let abt = abt.clone();
bt_abt.connect_activate(move |_| {
abt.run();
abt.hide();
});
}
win.set_application(app);
win.show_all();
}
fn main() -> ResultS<()>
{
let rsrc = glib::Bytes::from(&RESOURCE[..]);
let rsrc = gio::Resource::new_from_data(&rsrc)?;
gio::resources_register(&rsrc);
let app = gtk::Application::new("net.greyserv.maraiah.tycho",
gio::ApplicationFlags::empty())?;
app.connect_activate(run_app);
if app.run(&[]) == 0 {
Ok(())
} else {
Err(err_msg("bad return"))
}
}
// EOF