Recording-settings dialog rework + menu mnemonic clean-up
Recording settings dialog
=========================
Promote what were row attributes inside the format-attributes table
into their own dedicated listboxes. Pre-rework each format's
attribute list contained a row per (quality knob × channel mode)
combination — doubling the row count for no real benefit. WAV had
6 rows, MP3 / OGG-Opus had 8, FLAC had 4. Channel mode is now its
own listbox; per-format attribute lists shrink to 3 (WAV), 4
(MP3 / OGG-Opus), 2 (FLAC).
FLAC compression level was previously a hidden RecordingSettings
field locked at the libFLAC default of 5. Now exposed as its own
conditional listbox with all 9 levels (0..8). Visible only when the
selected file format is FLAC; the column collapses to 0% width
otherwise so the dialog reads cleanly as 4 columns for non-FLAC
formats and 5 for FLAC.
Mnemonics:
* Source Alt+S (unchanged)
* File format Alt+F (unchanged)
* Attributes Alt+A (unchanged)
* Compression Alt+L (new, FLAC-only visible)
* Channels Alt+C (new)
* OK Alt+O (unchanged)
* Cancel Alt+N (was Alt+C — moved to free C for Channels)
Record menu mnemonics
=====================
Item mnemonics inside the Record menu reorganised so the keystroke
inside the menu matches the same letter used for Ctrl+R outside it,
and Settings reads naturally:
* Start recording / Stop recording Alt+R (was Alt+S)
* Recording settings Alt+S (was Alt+T)
* Open recordings folder Alt+O (unchanged)
* Change recordings folder Alt+C (unchanged)
UpdateStartStopRecordingMenuLabel keeps the underline on a literal
R in both states ("Sta&rt recording" → "Stop &recording") so the
keystroke does the same job regardless of which label is active.
No version bump — the running version stays at 1.3.0. These changes
will be bundled with the next public release alongside whatever else
is in flight.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.7
parent
d927b34c9c
commit
45b709d49d
@@ -1139,14 +1139,20 @@ public sealed class MainForm : Form
|
||||
// / Record) and reads as "Recording" naturally enough for the mnemonic to stick.
|
||||
var recordMenu = new ToolStripMenuItem("Rec&ord") { AccessibleName = "Record menu" };
|
||||
|
||||
startStopRecordingMenuItem = new ToolStripMenuItem("&Start recording")
|
||||
// Start/Stop uses Alt+R — matches the Ctrl+R global toggle so the same letter does
|
||||
// the same job from either entry point. The "&" position shifts when the label flips
|
||||
// (Sta&rt → Stop &recording) so the underline stays on an R in both states. See
|
||||
// UpdateStartStopRecordingMenuLabel for the runtime label flip.
|
||||
startStopRecordingMenuItem = new ToolStripMenuItem("Sta&rt recording")
|
||||
{
|
||||
ShortcutKeys = Keys.Control | Keys.R,
|
||||
AccessibleName = "Start recording",
|
||||
};
|
||||
startStopRecordingMenuItem.Click += (_, _) => ToggleRecording();
|
||||
|
||||
var settingsItem = new ToolStripMenuItem("Recording se&ttings...")
|
||||
// Recording settings → Alt+S (was Alt+T). S reads more naturally than T for
|
||||
// "settings", and the slot freed up when Start/Stop moved off Alt+S.
|
||||
var settingsItem = new ToolStripMenuItem("Recording &settings...")
|
||||
{
|
||||
AccessibleName = "Recording settings",
|
||||
};
|
||||
@@ -1216,7 +1222,11 @@ public sealed class MainForm : Form
|
||||
void Apply()
|
||||
{
|
||||
if (startStopRecordingMenuItem is null) return;
|
||||
startStopRecordingMenuItem.Text = nowRecording ? "&Stop recording" : "&Start recording";
|
||||
// Mnemonic stays on an "R" in both states: "Sta&rt recording" (Alt+R activates
|
||||
// the R in Start) when not recording, "Stop &recording" (Alt+R activates the R
|
||||
// in recording) when recording. Same keystroke does the same job in both states
|
||||
// — matches the Ctrl+R global toggle.
|
||||
startStopRecordingMenuItem.Text = nowRecording ? "Stop &recording" : "Sta&rt recording";
|
||||
startStopRecordingMenuItem.AccessibleName = nowRecording ? "Stop recording" : "Start recording";
|
||||
}
|
||||
if (InvokeRequired) BeginInvoke(Apply);
|
||||
|
||||
Reference in New Issue
Block a user