56 lines
1.4 KiB
Rust
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: >k::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
|