From 5aa29616040777cc4363b3fcc7366a1569e5846b Mon Sep 17 00:00:00 2001 From: geens Date: Tue, 12 Aug 2025 16:21:14 +0200 Subject: [PATCH] Full screen gui --- Cargo.lock | 1 + autorun.sh | 4 ++-- gui/Cargo.toml | 1 + gui/src/args.rs | 21 +++++++++++++++++++++ gui/src/main.rs | 16 +++++++++++++--- 5 files changed, 38 insertions(+), 5 deletions(-) create mode 100644 gui/src/args.rs diff --git a/Cargo.lock b/Cargo.lock index 7c02859..1cebe56 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1663,6 +1663,7 @@ version = "0.1.0" dependencies = [ "anyhow", "bytes", + "clap", "eframe", "egui", "futures", diff --git a/autorun.sh b/autorun.sh index 1aeeb9b..36f88f6 100644 --- a/autorun.sh +++ b/autorun.sh @@ -6,8 +6,8 @@ git pull qjackctl /start-server & JACK_PID=$! -cargo run --release audio_engine & +cargo run --release --bin audio_engine & AUDIO_ENGINE_PID=$! -cargo run --release gui & +cargo run --release --bin gui -- -f& GUI_PID=$! \ No newline at end of file diff --git a/gui/Cargo.toml b/gui/Cargo.toml index b314690..fda6309 100644 --- a/gui/Cargo.toml +++ b/gui/Cargo.toml @@ -9,6 +9,7 @@ path = "src/ui/position_indicator_test.rs" [dependencies] anyhow = "1.0" +clap = { version = "4.0", features = ["derive"] } eframe = { version = "0.29", default-features = true, features = [ "default_fonts", "glow" ] } egui = "0.29" simple_logger = "5" diff --git a/gui/src/args.rs b/gui/src/args.rs new file mode 100644 index 0000000..8de43f6 --- /dev/null +++ b/gui/src/args.rs @@ -0,0 +1,21 @@ +use anyhow::Result; +use clap::Parser; + +#[derive(Parser)] +#[command(name = "gui")] +#[command(version, about = "FCB1010 Looper Pedal GUI")] +pub struct Args { + /// Launch in full screen mode + #[arg(short = 'f', long = "full-screen")] + pub full_screen: bool, +} + +impl Args { + pub fn new() -> Result { + let res = Self::try_parse(); + if let Err(res) = &res { + log::error!("{res}"); + } + res.map_err(|_| anyhow::anyhow!("Failed to parse arguments")) + } +} \ No newline at end of file diff --git a/gui/src/main.rs b/gui/src/main.rs index 104b4be..ae0e291 100644 --- a/gui/src/main.rs +++ b/gui/src/main.rs @@ -1,3 +1,4 @@ +mod args; mod interpolation; mod osc_client; mod pendulum; @@ -26,6 +27,9 @@ impl DisplayStr for osc::TrackState { #[tokio::main] async fn main() -> Result<()> { + // Parse arguments + let args = args::Args::new()?; + // Configuration let socket_path = "fcb_looper.sock"; @@ -49,10 +53,16 @@ async fn main() -> Result<()> { }); // Run egui on main thread + let mut viewport_builder = egui::ViewportBuilder::default() + .with_inner_size([800.0, 600.0]) + .with_min_inner_size([50.0, 50.0]); + + if args.full_screen { + viewport_builder = viewport_builder.with_fullscreen(true); + } + let options = eframe::NativeOptions { - viewport: egui::ViewportBuilder::default() - .with_inner_size([800.0, 600.0]) - .with_min_inner_size([50.0, 50.0]), + viewport: viewport_builder, ..Default::default() };