Give the network status window N1MM's tabs and columns
The window was one flat table of columns this program made up. N1MM's has tabs and a fixed set of columns, and an operator who knows one has to be able to read the other. **The window** now has Stations, Actions and Messages. Stations is a grid with N1MM's headers in N1MM's order — Computer, IP Address, Pass, Run, 10, 100, Freq, Op, Msg, Send, Receive, Band, R/M, Mode — and a row per station, this computer included. Right-click a row to pass the contact being worked to that station, to talk, to show the connection log, or to close and open its connection. Actions holds the talk line, the pass frequency, the echo and the networking switch; Messages holds the chat, the connection failures, the echo round trips and a trace of every message that arrives. **`STATUS`** is what fills those columns. N1MM sends it every few seconds whether anything has changed or not — the pass frequency, the frequency, run or search and pounce, the operator, the rates over the last ten and the last hundred contacts, the mode, the categories and the version — so a station sitting on one frequency for an hour still has a current row. `BANDMAP` only says a station moved. The five transmit-interlock flags are sent as false: this program does not block a transmitter. **`Rates.PerHour`** reads the two rate columns out of the log. Count back over the last N contacts, stop at a gap longer than the contest's minimum off time, and treat a span under a minute as a minute, so three contacts in five seconds read as 180 an hour rather than 2160. A connection closed by hand stays closed. Without that flag the next beacon opens it again within ten seconds, which makes the menu item look broken. Left out, because there is nothing behind them: N1MM's Resynchronize and Rescore tabs, the transmit interlocks of its Options tab, the Master column and the call-stacking target tab. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PdAYHcdRktqKry7nk414TU
This commit is contained in:
@@ -2,22 +2,85 @@
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:local="using:Nonemm.App.Windows"
|
||||
x:Class="Nonemm.App.Windows.NetworkStatusWindow"
|
||||
Title="Network status" Width="820" Height="320">
|
||||
<DockPanel Margin="8">
|
||||
<StackPanel DockPanel.Dock="Bottom" Spacing="6" Margin="0,8,0,0">
|
||||
<StackPanel Orientation="Horizontal" Spacing="6">
|
||||
<TextBox Name="TalkBox" Width="420" PlaceholderText="a line to the other operators" />
|
||||
<Button Content="Send" Click="OnTalk" IsDefault="True" />
|
||||
<Button Content="Echo" Click="OnEcho" />
|
||||
<Button Name="LinkButton" Content="Setup…" Click="OnSetup" />
|
||||
</StackPanel>
|
||||
<TextBlock Name="StateText" FontSize="11" Opacity="0.75" TextWrapping="Wrap" />
|
||||
</StackPanel>
|
||||
<ScrollViewer>
|
||||
<StackPanel Spacing="6">
|
||||
<Grid Name="Table" />
|
||||
<TextBlock Name="TalkText" FontFamily="monospace" FontSize="11" TextWrapping="Wrap" />
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
Title="Network Status" Width="900" Height="360">
|
||||
<DockPanel>
|
||||
<TextBlock DockPanel.Dock="Bottom" Name="StateText" Margin="8,4" FontSize="11"
|
||||
Opacity="0.75" TextWrapping="Wrap" />
|
||||
<TabControl Name="Tabs">
|
||||
|
||||
<TabItem Header="Stations">
|
||||
<DataGrid Name="Rows" IsReadOnly="True" GridLinesVisibility="Horizontal"
|
||||
CanUserSortColumns="False" FontSize="12" FontFamily="monospace"
|
||||
AutoGenerateColumns="False" x:DataType="local:StationRow">
|
||||
<DataGrid.Styles>
|
||||
<!-- the grid's own font settings do not reach the cells -->
|
||||
<Style Selector="DataGridCell TextBlock">
|
||||
<Setter Property="FontFamily" Value="monospace" />
|
||||
<Setter Property="FontSize" Value="12" />
|
||||
</Style>
|
||||
</DataGrid.Styles>
|
||||
<DataGrid.ContextMenu>
|
||||
<ContextMenu>
|
||||
<MenuItem Header="Pass Current/Last QSO" Click="OnPassToStation" />
|
||||
<Separator />
|
||||
<MenuItem Header="Talk" Click="OnTalkTo" />
|
||||
<MenuItem Header="Show Connection Log" Click="OnShowMessages" />
|
||||
<Separator />
|
||||
<MenuItem Header="Close Connection" Click="OnCloseConnection" />
|
||||
<MenuItem Header="Open Connection" Click="OnOpenConnection" />
|
||||
<Separator />
|
||||
<MenuItem Header="Edit Computer Addresses" Click="OnSetup" />
|
||||
<MenuItem Header="Stop Networking" Click="OnStopNetworking" />
|
||||
</ContextMenu>
|
||||
</DataGrid.ContextMenu>
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="Computer" Binding="{Binding Computer}" />
|
||||
<DataGridTextColumn Header="IP Address" Binding="{Binding IpAddress}" />
|
||||
<DataGridTextColumn Header="Pass" Binding="{Binding Pass}" />
|
||||
<DataGridTextColumn Header="Run" Binding="{Binding Run}" />
|
||||
<DataGridTextColumn Header="10" Binding="{Binding Last10}" />
|
||||
<DataGridTextColumn Header="100" Binding="{Binding Last100}" />
|
||||
<DataGridTextColumn Header="Freq" Binding="{Binding Freq}" />
|
||||
<DataGridTextColumn Header="Op" Binding="{Binding Op}" />
|
||||
<DataGridTextColumn Header="Msg" Binding="{Binding Msg}" />
|
||||
<DataGridTextColumn Header="Send" Binding="{Binding Send}" />
|
||||
<DataGridTextColumn Header="Receive" Binding="{Binding Receive}" />
|
||||
<DataGridTextColumn Header="Band" Binding="{Binding Band}" />
|
||||
<DataGridTextColumn Header="R/M" Binding="{Binding RunMult}" />
|
||||
<DataGridTextColumn Header="Mode" Binding="{Binding Mode}" />
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
</TabItem>
|
||||
|
||||
<TabItem Header="Actions">
|
||||
<StackPanel Margin="8" Spacing="8">
|
||||
<StackPanel Orientation="Horizontal" Spacing="6">
|
||||
<TextBox Name="TalkBox" Width="460" PlaceholderText="a line to the other operators" />
|
||||
<Button Content="Talk" Click="OnTalk" IsDefault="True" />
|
||||
</StackPanel>
|
||||
<StackPanel Orientation="Horizontal" Spacing="6">
|
||||
<Button Content="Set Your Pass Frequency" Click="OnSetPass" />
|
||||
<Button Content="Ask Every Station If It Is There" Click="OnEcho" />
|
||||
</StackPanel>
|
||||
<StackPanel Orientation="Horizontal" Spacing="6">
|
||||
<Button Content="Edit Computer Addresses" Click="OnSetup" />
|
||||
<Button Name="NetworkingButton" Content="Stop Networking" Click="OnStopNetworking" />
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</TabItem>
|
||||
|
||||
<TabItem Header="Messages">
|
||||
<DockPanel Margin="8">
|
||||
<StackPanel DockPanel.Dock="Top" Orientation="Horizontal" Spacing="8" Margin="0,0,0,6">
|
||||
<CheckBox Name="TraceBox" Content="Trace networked computer messages" />
|
||||
<Button Content="Clear Messages" Click="OnClearMessages" />
|
||||
</StackPanel>
|
||||
<ScrollViewer Name="MessageScroll">
|
||||
<TextBlock Name="MessageText" FontFamily="monospace" FontSize="11" TextWrapping="Wrap" />
|
||||
</ScrollViewer>
|
||||
</DockPanel>
|
||||
</TabItem>
|
||||
|
||||
</TabControl>
|
||||
</DockPanel>
|
||||
</local:RefreshableWindow>
|
||||
|
||||
Reference in New Issue
Block a user