diff --git a/src/.gui.rs.swp b/src/.gui.rs.swp index 846497a..0526f43 100644 Binary files a/src/.gui.rs.swp and b/src/.gui.rs.swp differ diff --git a/src/gui.rs b/src/gui.rs index 3062e39..177caf0 100644 --- a/src/gui.rs +++ b/src/gui.rs @@ -5,14 +5,26 @@ use iced::event; use iced::subscription; use iced::{Alignment, Element, Application, Settings, Subscription, Theme, Command}; -pub fn main() -> iced::Result { - Main::run(Settings::default()) +pub fn main(outputEngine: dyn FnMut(Vec)) -> iced::Result { + let settings = Settings{ + flags: Flags { + outputEngine: outputEngine, + }, + ..Settings::::default() + }; + Main::run(settings) } struct Main { ntfy: String, configuring: Option, inputs: Inputs, + flags: Flags, +} + +#[derive(Default)] +struct Flags { + outputEngine: dyn FnMut(Vec), } struct Inputs { @@ -53,11 +65,11 @@ fn controller_button_to_string(msg: Message) -> String { impl Application for Main { type Message = Message; - type Flags = (); + type Flags = Flags; type Theme = Theme; type Executor = executor::Default; - fn new(_flags: ()) -> (Self, Command) { + fn new(flags: Self::Flags) -> (Self, Command) { return (Self { ntfy: String::from(":wave:"), configuring: None, @@ -75,6 +87,7 @@ impl Application for Main { l: iced::keyboard::KeyCode::Q, r: iced::keyboard::KeyCode::E, }, + flags: flags, }, Command::none()) } diff --git a/src/main.rs b/src/main.rs index 0ef5e9e..820ff31 100644 --- a/src/main.rs +++ b/src/main.rs @@ -5,7 +5,10 @@ mod gui; fn main() { let cfg = config::build_config().unwrap(); if cfg.streams.input.engine.name == "gui" { - gui::main().unwrap(); + let output_engine = engine::build_output_engine(&cfg.streams.output.engine); + let mut output_engine = output_engine.unwrap(); + let cb = |v: Vec| output_engine.put(v); + gui::main(cb).unwrap(); } else { main_cli(cfg); }