Send WAE QTC traffic on CW

The QTC window took traffic down and read it out of the log, but nothing left
the window: on CW the operator had to send the lines by hand. It now puts them
on the air through the entry window's keyer, the way N1MM's QTC window sends
through its own entry window, so the same macros are expanded and the same
transmitter is pointed at first.

Sending a series: Send Hdr keys the header, Send1 to Send10 key one line each —
the time, the callsign and the serial number — and Close keys the TU message
when one is set. Taking one down: Hdr Agn asks for the header again, and shift
with Enter in a box asks for that one field again and clears it.

The messages and their defaults are N1MM's: AGN TIME, AGN CALL, AGN SERIAL, the
hard-coded HDR AGN with its two spaces, and a TU that sends nothing until the
operator writes one. So is the field spacing, written N1MM's way with S for a
space. All five are in Setup, where the note about the missing settings used to
be.

Nothing is sent on SSB or RTTY. N1MM plays four recordings on SSB and sends
RTTY from its digital window, and there is neither here, so on those modes the
buttons move the cursor as before. RX Ready sends nothing on any mode, because
a recording is all N1MM ever sends from it. Serial numbers go out as digits:
N1MM can send cut numbers and nothing here does, in any message.

Driven under Xvfb against a fake cwdaemon, in a WAE CW contest with four
contacts logged. Sending, it keyed QTC 1/2, 2257 DL1AAA 01, 2257 DL2BBB 01,
then QTC 2/2 with its two lines and TU DE W1ABC on close. Receiving, HDR  AGN,
AGN TIME, AGN CALL and AGN SERIAL.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RoGtneMQaz4M9w7Kk49AVD
This commit is contained in:
2026-08-30 23:03:17 +00:00
co-authored by Claude Opus 5
parent ff46cb00ed
commit dc1c593b4d
11 changed files with 263 additions and 26 deletions
+16 -1
View File
@@ -18,8 +18,23 @@
FontSize="11" Opacity="0.7" TextWrapping="Wrap" Margin="24,-6,0,0" />
<CheckBox Name="HeaderAgainClearsBox" Content="Hdr Agn clears the header" />
<CheckBox Name="AgainClearsBox" Content="Agn clears the line" />
<TextBlock Text="CW messages" FontWeight="Bold" Margin="0,10,0,0" />
<Grid ColumnDefinitions="Auto,*" RowDefinitions="Auto,Auto,Auto,Auto,Auto" >
<TextBlock Text="Field spacing" VerticalAlignment="Center" Margin="0,2,8,2" />
<TextBox Grid.Column="1" Name="SpacingBox" Margin="0,2" />
<TextBlock Grid.Row="1" Text="Time again" VerticalAlignment="Center" Margin="0,2,8,2" />
<TextBox Grid.Row="1" Grid.Column="1" Name="TimeAgainBox" Margin="0,2" />
<TextBlock Grid.Row="2" Text="Call again" VerticalAlignment="Center" Margin="0,2,8,2" />
<TextBox Grid.Row="2" Grid.Column="1" Name="CallAgainBox" Margin="0,2" />
<TextBlock Grid.Row="3" Text="Serial again" VerticalAlignment="Center" Margin="0,2,8,2" />
<TextBox Grid.Row="3" Grid.Column="1" Name="NumberAgainBox" Margin="0,2" />
<TextBlock Grid.Row="4" Text="TU" VerticalAlignment="Center" Margin="0,2,8,2" />
<TextBox Grid.Row="4" Grid.Column="1" Name="TuBox" Margin="0,2" />
</Grid>
<TextBlock Text="The spacing goes between the fields of a QTC line, written N1MM's way with S for a space. The three again messages go out on shift and Enter in that box while taking traffic down. TU goes out when the window closes after reading a series out; empty sends nothing."
FontSize="11" Opacity="0.7" TextWrapping="Wrap" Margin="0,-2,0,0" />
<TextBlock Name="MissingText" FontSize="11" Opacity="0.7" TextWrapping="Wrap" Margin="0,6,0,0"
Text="N1MM's other QTC settings are for sending: the CW messages for Agn and TU, the field spacing, the SSB recordings and the RTTY message templates. Nothing here transmits, so they are left out rather than shown as settings that do nothing." />
Text="N1MM's SSB recordings and RTTY message templates are left out: sending those needs a voice keyer and a digital window, and this program has neither." />
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Spacing="6" Margin="0,8,0,0">
<Button Content="Cancel" Click="OnCancel" />
<Button Content="Save" Click="OnSave" IsDefault="True" />
@@ -19,6 +19,11 @@ public sealed partial class QtcSetupDialog : Window
SkipConfirmBox.IsChecked = settings.QtcSkipConfirm;
HeaderAgainClearsBox.IsChecked = settings.QtcHeaderAgainClears;
AgainClearsBox.IsChecked = settings.QtcAgainClearsLine;
SpacingBox.Text = settings.QtcCwFieldSpacing;
TimeAgainBox.Text = settings.QtcCwTimeAgain;
CallAgainBox.Text = settings.QtcCwCallAgain;
NumberAgainBox.Text = settings.QtcCwNumberAgain;
TuBox.Text = settings.QtcCwTu;
}
private void OnSave(object? sender, RoutedEventArgs e) => Close(settings with
@@ -30,6 +35,11 @@ public sealed partial class QtcSetupDialog : Window
QtcSkipConfirm = SkipConfirmBox.IsChecked == true,
QtcHeaderAgainClears = HeaderAgainClearsBox.IsChecked == true,
QtcAgainClearsLine = AgainClearsBox.IsChecked == true,
QtcCwFieldSpacing = SpacingBox.Text ?? "",
QtcCwTimeAgain = TimeAgainBox.Text ?? "",
QtcCwCallAgain = CallAgainBox.Text ?? "",
QtcCwNumberAgain = NumberAgainBox.Text ?? "",
QtcCwTu = TuBox.Text ?? "",
});
private void OnCancel(object? sender, RoutedEventArgs e) => Close(null);