From d9151a53dd76b86621726ad76ea20a3d0eadd9f4 Mon Sep 17 00:00:00 2001 From: Marrub Date: Mon, 25 Feb 2019 07:06:11 -0500 Subject: [PATCH] begin work on Tycho --- .gitignore | 1 + Cargo.toml | 18 ++- data/tycho.xml | 319 +++++++++++++++++++++++++++++++++++++++++++++ data/tycho1.png | Bin 0 -> 6155 bytes data/tycho2.png | Bin 0 -> 23953 bytes data/tycho_res.xml | 7 + src/build.rs | 14 ++ src/tycho/main.rs | 55 ++++++++ 8 files changed, 412 insertions(+), 2 deletions(-) create mode 100644 data/tycho.xml create mode 100644 data/tycho1.png create mode 100644 data/tycho2.png create mode 100644 data/tycho_res.xml create mode 100644 src/build.rs create mode 100644 src/tycho/main.rs diff --git a/.gitignore b/.gitignore index 86fe16e..ed1e5e0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ /target /out +data/*.res **/*.rs.bk Cargo.lock perf.data* diff --git a/Cargo.toml b/Cargo.toml index 4ff4556..a0ebcbc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,17 +10,27 @@ license = "MIT" edition = "2018" publish = false +build = "src/build.rs" [dependencies] argparse = "0.2" bitflags = "1.0" failure = "0.1" generic-array = "0.12" -#gtk = "0.4" -memmap = "0.6" +memmap = "0.7" serde = {version = "1.0", features = ["derive"]} serde_yaml = "0.8" +# note: these have to be updated all at once, check the gtk crate for versions +atk = "0.6" +cairo-rs = "0.6" +gdk = "0.10" +gdk-pixbuf = "0.6" +gtk = "0.6" +gio = "0.6" +glib = "0.7" +pango = "0.6" + [profile.dev] opt-level = 1 @@ -35,3 +45,7 @@ path = "src/lib.rs" [[bin]] name = "leela" path = "src/leela/main.rs" + +[[bin]] +name = "tycho" +path = "src/tycho/main.rs" diff --git a/data/tycho.xml b/data/tycho.xml new file mode 100644 index 0000000..4459934 --- /dev/null +++ b/data/tycho.xml @@ -0,0 +1,319 @@ + + + + + + + + + + + False + dialog + Tycho + 2018-2019 Alison Sanderson + greetigs i am tico the of superior ai to durdumbal go shoot my soldiers because its funny or ill put you in space + Website + resource:///net/greyserv/maraiah/tycho/tycho2.png + mit-x11 + + + + + + False + vertical + 2 + + + False + end + + + False + False + 0 + + + + + + + + + + False + 440 + 250 + + + + + + True + False + vertical + + + True + False + + + True + False + _File + True + + + True + False + + + gtk-new + True + False + True + True + + + + + gtk-open + True + False + True + True + + + + + gtk-save + True + False + True + True + + + + + gtk-save-as + True + False + True + True + + + + + True + False + + + + + gtk-quit + True + False + True + True + + + + + + + + + True + False + _Edit + True + + + True + False + + + gtk-cut + True + False + True + True + + + + + gtk-copy + True + False + True + True + + + + + gtk-paste + True + False + True + True + + + + + gtk-delete + True + False + True + True + + + + + + + + + True + False + _View + True + + + + + True + False + _Help + True + + + True + False + + + gtk-about + True + False + True + True + + + + + + + + + False + True + 0 + + + + + True + False + + + True + False + vertical + + + True + False + + + True + False + Points + True + gtk-media-play + + + + + False + + + + + False + True + 0 + + + + + True + False + + + False + True + 1 + + + + + True + True + vertical + + + + + + + + + True + True + 2 + + + + + True + True + 1 + + + + + + + Tycho Map Editor + The main window of the Tycho map editor. + window + + + + diff --git a/data/tycho1.png b/data/tycho1.png new file mode 100644 index 0000000000000000000000000000000000000000..19db8cf7e6b47781cb07dbf654c082945c252250 GIT binary patch literal 6155 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 + + + data/tycho1.png + data/tycho2.png + + diff --git a/src/build.rs b/src/build.rs new file mode 100644 index 0000000..30c29dd --- /dev/null +++ b/src/build.rs @@ -0,0 +1,14 @@ +use std::process::Command; + +fn main() +{ + println!("cargo:rerun-if-changed=data"); + + Command::new("glib-compile-resources") + .arg("data/tycho_res.xml") + .arg("--target=data/tycho.res") + .status() + .unwrap(); +} + +// EOF diff --git a/src/tycho/main.rs b/src/tycho/main.rs new file mode 100644 index 0000000..b43a770 --- /dev/null +++ b/src/tycho/main.rs @@ -0,0 +1,55 @@ +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::>()); + 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