diff options
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | Cargo.lock | 244 | ||||
| -rw-r--r-- | src/gui.rs | 85 | ||||
| -rw-r--r-- | src/main.rs | 3 |
4 files changed, 53 insertions, 280 deletions
@@ -1,2 +1,3 @@ /target **/*.rs.bk +Cargo.lock diff --git a/Cargo.lock b/Cargo.lock deleted file mode 100644 index 415210e..0000000 --- a/Cargo.lock +++ /dev/null @@ -1,244 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -[[package]] -name = "argparse" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f8ebf5827e4ac4fd5946560e6a99776ea73b596d80898f357007317a7141e47" - -[[package]] -name = "autocfg" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" - -[[package]] -name = "cc" -version = "1.0.61" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed67cbde08356238e75fc4656be4749481eeffb09e19f320a25237d5221c985d" - -[[package]] -name = "cfg-if" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" - -[[package]] -name = "chrono" -version = "0.4.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" -dependencies = [ - "libc", - "num-integer", - "num-traits", - "time", - "winapi", -] - -[[package]] -name = "cmake" -version = "0.1.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e56268c17a6248366d66d4a47a3381369d068cce8409bb1716ed77ea32163bb" -dependencies = [ - "cc", -] - -[[package]] -name = "fltk" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b44ff8334a841f5ee78c4bc369cf6badaee7fdd0921d5db287319b2135b7dd6" -dependencies = [ - "fltk-derive", - "fltk-sys", -] - -[[package]] -name = "fltk-derive" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34165940f1fe1446fa8754f7ba7761b98a941229489dc120ab52bde765f6dd17" -dependencies = [ - "quote", - "syn", -] - -[[package]] -name = "fltk-sys" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c89eca70746f72fa915de02ebd5a468acdc55f7c80bd61b0298027fbe6e72829" -dependencies = [ - "cmake", - "libc", -] - -[[package]] -name = "libc" -version = "0.2.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2448f6066e80e3bfc792e9c98bf705b4b0fc6e8ef5b43e5889aff0eaa9c58743" - -[[package]] -name = "log" -version = "0.4.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "ncurses" -version = "5.99.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15699bee2f37e9f8828c7b35b2bc70d13846db453f2d507713b758fabe536b82" -dependencies = [ - "cc", - "libc", - "pkg-config", -] - -[[package]] -name = "num-integer" -version = "0.1.43" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d59457e662d541ba17869cf51cf177c0b5f0cbf476c66bdc90bf1edac4f875b" -dependencies = [ - "autocfg", - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac267bcc07f48ee5f8935ab0d24f316fb722d7a1292e2913f0cc196b29ffd611" -dependencies = [ - "autocfg", -] - -[[package]] -name = "pancurses" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3058bc37c433096b2ac7afef1c5cdfae49ede0a4ffec3dfc1df1df0959d0ff0" -dependencies = [ - "libc", - "log", - "ncurses", - "pdcurses-sys", - "winreg", -] - -[[package]] -name = "pdcurses-sys" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "084dd22796ff60f1225d4eb6329f33afaf4c85419d51d440ab6b8c6f4529166b" -dependencies = [ - "cc", - "libc", -] - -[[package]] -name = "pkg-config" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d36492546b6af1463394d46f0c834346f31548646f6ba10849802c9c9a27ac33" - -[[package]] -name = "proc-macro2" -version = "1.0.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" -dependencies = [ - "unicode-xid", -] - -[[package]] -name = "quote" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "syn" -version = "1.0.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e03e57e4fcbfe7749842d53e24ccb9aa12b7252dbe5e91d2acad31834c8b8fdd" -dependencies = [ - "proc-macro2", - "quote", - "unicode-xid", -] - -[[package]] -name = "takwrap" -version = "0.2.0" -dependencies = [ - "argparse", - "chrono", - "fltk", - "pancurses", -] - -[[package]] -name = "time" -version = "0.1.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" -dependencies = [ - "libc", - "wasi", - "winapi", -] - -[[package]] -name = "unicode-xid" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" - -[[package]] -name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "winreg" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a27a759395c1195c4cc5cda607ef6f8f6498f64e78f7900f5de0a127a424704a" -dependencies = [ - "winapi", -] @@ -1,50 +1,65 @@ -use fltk::{app, button::*, enums::*, frame::*, text::*, window::*}; +use fltk::{app::*, button::*, frame::*, text::*, window::*}; // enums::*, -#[derive(Debug, Clone, Copy)] -enum Message { - Increment, - Decrement, +#[derive(Clone, Copy)] +enum GUIMessage {} + +pub struct GUI { + app: App, + window: Window, + log: TextDisplay, + sender: Sender<GUIMessage>, + receiver: Receiver<GUIMessage>, } -pub fn gui_test() -> Result<(), Box<dyn std::error::Error>> { - let app = app::App::default(); +impl GUI { + pub fn new() -> GUI { + let app = App::default(); - let mut wind = SingleWindow::default() - .with_size(800, 600) - .center_screen() - .with_label("Test"); - wind.make_resizable(true); + // TODO: Why is this not the same as + /* + let mut window = Window::default() + .with_size(800, 600) + .with_label("Takwrap") + .center_screen(); + */ + // Windows made that way are not resizable? - let mut ptn = TextDisplay::default() - .with_size(20 * 16, 30 * 16) - .with_pos(800 - 20 * 16 - 10, 0); - ptn.set_buffer(Some(TextBuffer::default())); + let mut window = Window::new(0, 0, 800, 600, "Takwrap").center_screen(); + window.make_resizable(true); - let mut but_inc = Button::new(30, 40, 100, 40, "@+"); - let mut but_dec = Button::new(30, 120, 100, 40, "@square"); - wind.end(); - wind.show(); + let mut log = TextDisplay::default() + .with_size(10 * 16, 600 - 10 - 10) + .with_pos(800 - 10 * 16 - 10, 10); + log.set_buffer(Some(TextBuffer::default())); + log.insert("test"); - let (s, r) = app::channel::<Message>(); + window.draw(Box::new(move || { + fltk::draw::set_draw_color(Color::White); + fltk::draw::draw_rectf(20, 20, 30, 30); + })); - but_inc.emit(s, Message::Increment); - but_dec.emit(s, Message::Decrement); + window.end(); - let mut state = 0; + let (sender, receiver) = channel::<GUIMessage>(); + // button.emit(sender, GUIMessage::Foo); - while app.wait()? { - match r.recv() { - Some(Message::Increment) => { - state += 1; - ptn.insert(&format!("Increment {}\n", state)); - } + GUI { + app, + window, + log, + sender, + receiver, + } + } + + pub fn run(&mut self) -> Result<(), fltk::prelude::FltkError> { + self.window.show(); - Some(Message::Decrement) => { - state -= 1; - ptn.insert(&format!("Decrement {}\n", state)); + while self.app.wait()? { + match self.receiver.recv() { + _ => (), } - None => (), } + Ok(()) } - Ok(()) } diff --git a/src/main.rs b/src/main.rs index c7cc30a..88ce6fa 100644 --- a/src/main.rs +++ b/src/main.rs @@ -192,6 +192,7 @@ This program comes with ABSOLUTELY NO WARRANTY; and is made available under the endwin(); } else { - gui_test(); + let mut gui = GUI::new(); + gui.run(); } } |
