diff --git a/apps/magpie/src/protocol.rs b/apps/magpie/src/protocol.rs index a8a016a..d196a83 100644 --- a/apps/magpie/src/protocol.rs +++ b/apps/magpie/src/protocol.rs @@ -26,6 +26,7 @@ pub struct CreatePanel { pub id: PanelId, pub protocol: String, pub script: PathBuf, + pub init_msg: Vec, } /// Sends a panel a message. diff --git a/apps/magpie/src/service/ipc.rs b/apps/magpie/src/service/ipc.rs index ad9dce2..cbc4b1e 100644 --- a/apps/magpie/src/service/ipc.rs +++ b/apps/magpie/src/service/ipc.rs @@ -130,6 +130,7 @@ impl Client { id, protocol, script, + init_msg, }) => { let mut data = self.data.write(); @@ -146,6 +147,7 @@ impl Client { id: window, protocol, script, + init_msg, }; let _ = self.window_sender.send_event(msg); } diff --git a/apps/magpie/src/service/window.rs b/apps/magpie/src/service/window.rs index fd41d39..53aee3c 100644 --- a/apps/magpie/src/service/window.rs +++ b/apps/magpie/src/service/window.rs @@ -21,6 +21,7 @@ pub enum WindowMessage { id: usize, protocol: String, script: PathBuf, + init_msg: Vec, }, CloseWindow { id: usize, @@ -194,11 +195,12 @@ impl WindowStore { id, protocol, script, + init_msg, } => { println!("Opening window {} with script {:?}", id, script); let module = std::fs::read(script)?; let mut script = self.runtime.load_module(&module)?; - let panel = script.create_panel(&protocol, vec![])?; + let panel = script.create_panel(&protocol, init_msg)?; let window = Window::new(self.ipc_sender.to_owned(), id, panel, &event_loop)?; let window_id = window.get_id(); self.windows.insert(window_id, window);