From dc8f2eb8a46309e76ccbc30238a65d728b13de94 Mon Sep 17 00:00:00 2001 From: FallenSigh Date: Thu, 11 Jun 2026 18:01:32 +0800 Subject: [PATCH] feat: restrict DTR/RTS to serial transport; allow manual port input; clean up tool binaries - Only show DTR/RTS toggles when transport is Serial (not TCP/UDP) - Add manual port text entry next to serial port combo box - Reduce combo box width to 180px to make room for text input - Remove compiled ELF binaries from tools/ and add to .gitignore --- .gitignore | 4 ++++ crates/xserial-gui/src/app.rs | 12 +++++++++--- crates/xserial-gui/src/panels/config.rs | 3 ++- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index ea8c4bf..4ac97ad 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,5 @@ /target + +# Compiled binaries in tools/ +tools/test_plot_c +tools/test_text_c diff --git a/crates/xserial-gui/src/app.rs b/crates/xserial-gui/src/app.rs index 054e413..c462876 100644 --- a/crates/xserial-gui/src/app.rs +++ b/crates/xserial-gui/src/app.rs @@ -928,7 +928,9 @@ fn render_session_controls( tab.status = ConnectionStatus::Error(String::from("session not found")); } } - if matches!(tab.status, ConnectionStatus::Connected) { + if matches!(tab.status, ConnectionStatus::Connected) + && matches!(tab.session_config.transport, TransportConfig::Serial { .. }) + { let dtr_changed = ui.checkbox(&mut tab.dtr, "DTR").changed(); let rts_changed = ui.checkbox(&mut tab.rts, "RTS").changed(); if dtr_changed || rts_changed { @@ -936,8 +938,12 @@ fn render_session_controls( let dtr = tab.dtr; let rts = tab.rts; tokio::spawn(async move { - if dtr_changed { let _ = handle.set_dtr(dtr).await; } - if rts_changed { let _ = handle.set_rts(rts).await; } + if dtr_changed { + let _ = handle.set_dtr(dtr).await; + } + if rts_changed { + let _ = handle.set_rts(rts).await; + } }); } else { tab.status = ConnectionStatus::Error(String::from("session not found")); diff --git a/crates/xserial-gui/src/panels/config.rs b/crates/xserial-gui/src/panels/config.rs index 78de1e5..0187830 100644 --- a/crates/xserial-gui/src/panels/config.rs +++ b/crates/xserial-gui/src/panels/config.rs @@ -547,7 +547,7 @@ fn render_serial_port_combo(ui: &mut Ui, form: &mut ConfigForm) { ui.horizontal(|ui| { ui.label("Port:"); ComboBox::from_id_salt("serial_port") - .width(220.0) + .width(180.0) .selected_text(selected_text) .show_ui(ui, |ui| { if available_ports.is_empty() { @@ -570,6 +570,7 @@ fn render_serial_port_combo(ui: &mut Ui, form: &mut ConfigForm) { ); } }); + ui.add(TextEdit::singleline(&mut form.port).desired_width(260.0)); }); }