From 766fe39448a4654cd8a878f2806bc488c2df91a1 Mon Sep 17 00:00:00 2001 From: ada Date: Fri, 6 Feb 2026 17:41:27 -0600 Subject: [PATCH] feat: 'screen' console command --- .../src/service/dev/console/commands/mod.rs | 7 +++ .../service/dev/console/commands/screen.rs | 53 +++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 crates/app/src/service/dev/console/commands/mod.rs create mode 100644 crates/app/src/service/dev/console/commands/screen.rs diff --git a/crates/app/src/service/dev/console/commands/mod.rs b/crates/app/src/service/dev/console/commands/mod.rs new file mode 100644 index 0000000..3f6b3d2 --- /dev/null +++ b/crates/app/src/service/dev/console/commands/mod.rs @@ -0,0 +1,7 @@ +mod screen; + +use crate::prelude::*; + +pub fn plugin(app: &mut App) { + app.add_plugins(screen::plugin); +} diff --git a/crates/app/src/service/dev/console/commands/screen.rs b/crates/app/src/service/dev/console/commands/screen.rs new file mode 100644 index 0000000..6758970 --- /dev/null +++ b/crates/app/src/service/dev/console/commands/screen.rs @@ -0,0 +1,53 @@ +use clap::Parser; +use q_cmd_prompt::prelude::*; + +use crate::prelude::*; + +#[derive(Parser, Debug, Message, Clone)] +#[command(name = "screen")] +struct ScreenCmd { + target: Option, + #[arg(short, long)] + list: bool, + #[arg(short, long)] + show: bool, +} + +fn on_msg( + mut reader: MessageReader>, + mut commands: Commands, + screens: Screens, + data: Res, + current_screen: Res, +) { + for msg in reader.read() { + if msg.command.list { + let list = data + .iter() + .filter_map(|i| i.as_ref().map(|i| format!("{}\n", i.name()))) + .collect::(); + msg.println(&mut commands, list); + } + if msg.command.show + && let Some(screen) = &**current_screen.as_ref() + { + let screen = c!(screens.get_by_id(*screen)); + msg.println(&mut commands, screen.name().to_owned()); + } + if let Some(target) = msg.command.target.as_ref() { + match screens.get_by_name(target) { + Ok(screen) => { + commands.write_message(SwitchToScreenMsg(screen.screen_id())); + msg.println(&mut commands, format!("Switching to {}", screen.name())); + } + Err(err) => { + msg.println(&mut commands, err.to_string()); + } + } + } + } +} +pub fn plugin(app: &mut App) { + app.add_systems(PreUpdate, on_msg); + app.add_console_command::(); +} -- 2.51.2