Add the Avalonia application and the station network

The entry window types contacts and colours them as they are typed; the log,
check, bandmap, score and packet windows read the same session. Contacts are
shared with the other stations of a multi-operator entry in N1MM's contact
message, so an N1MM station on the same network sees them too.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Erik
2026-08-27 10:56:35 +00:00
parent ffeeb2cdc1
commit 2834f63c8e
45 changed files with 2667 additions and 0 deletions

View File

@@ -0,0 +1,92 @@
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="Nonemm.App.Windows.EntryWindow"
Title="Nonemm"
Width="620" SizeToContent="Height"
CanResize="True"
FontFamily="Inter, sans-serif">
<Window.Styles>
<Style Selector="TextBlock.label">
<Setter Property="FontSize" Value="11" />
<Setter Property="Opacity" Value="0.7" />
<Setter Property="Margin" Value="2,0,0,1" />
</Style>
<Style Selector="TextBox.entry">
<Setter Property="FontFamily" Value="monospace" />
<Setter Property="FontSize" Value="20" />
<Setter Property="Padding" Value="6,2" />
<Setter Property="VerticalContentAlignment" Value="Center" />
</Style>
<Style Selector="Button.fkey">
<Setter Property="FontSize" Value="11" />
<Setter Property="Padding" Value="6,3" />
<Setter Property="Margin" Value="0,0,3,0" />
</Style>
</Window.Styles>
<DockPanel>
<Menu DockPanel.Dock="Top">
<MenuItem Header="_File">
<MenuItem Header="_New Database…" Click="OnNewDatabase" />
<MenuItem Header="_Open Database…" Click="OnOpenDatabase" />
<Separator />
<MenuItem Header="New _Contest…" Click="OnNewContest" />
<MenuItem Header="Open Con_test…" Click="OnOpenContest" />
<Separator />
<MenuItem Header="Export _Cabrillo…" Click="OnExportCabrillo" />
<MenuItem Header="Export _ADIF…" Click="OnExportAdif" />
<MenuItem Header="_Import ADIF…" Click="OnImportAdif" />
<Separator />
<MenuItem Header="E_xit" Click="OnExit" />
</MenuItem>
<MenuItem Header="_View">
<MenuItem Header="_Log" Click="OnShowLog" />
<MenuItem Header="_Check" Click="OnShowCheck" />
<MenuItem Header="_Bandmap" Click="OnShowBandmap" />
<MenuItem Header="_Score Summary" Click="OnShowScore" />
<MenuItem Header="_Packet" Click="OnShowPacket" />
</MenuItem>
<MenuItem Header="_Config">
<MenuItem Header="_Station…" Click="OnStationSettings" />
<MenuItem Header="_Radio…" Click="OnRadioSettings" />
<MenuItem Header="_Cluster…" Click="OnClusterSettings" />
<MenuItem Header="_Network…" Click="OnNetworkSettings" />
<Separator />
<MenuItem Header="Download Country _File" Click="OnDownloadCountryFile" />
<MenuItem Header="Download Check _Partial File" Click="OnDownloadCallDatabase" />
<MenuItem Header="Reload Support Files" Click="OnReloadSupportFiles" />
</MenuItem>
</Menu>
<Border DockPanel.Dock="Bottom" Padding="6,4" BorderThickness="0,1,0,0"
BorderBrush="#33808080">
<WrapPanel Name="FunctionKeys" />
</Border>
<StackPanel Margin="6">
<Grid ColumnDefinitions="Auto,Auto,Auto,*,Auto" Margin="0,0,0,6">
<TextBlock Name="FrequencyText" FontFamily="monospace" FontSize="20" Text="14025.00" />
<TextBlock Grid.Column="1" Name="ModeText" FontFamily="monospace" FontSize="20"
Margin="10,0,0,0" Text="CW" />
<Border Grid.Column="2" Name="RunBorder" Margin="10,2" Padding="6,1" CornerRadius="3"
Background="#22808080">
<TextBlock Name="RunText" FontSize="12" Text="S&amp;P" />
</Border>
<TextBlock Grid.Column="3" Name="ContestText" FontSize="12" Opacity="0.75"
VerticalAlignment="Center" Margin="12,0,12,0" Text="no contest"
TextTrimming="CharacterEllipsis" ClipToBounds="True" />
<TextBlock Grid.Column="4" Name="ClockText" FontFamily="monospace" FontSize="20"
Text="00:00:00Z" />
</Grid>
<Grid Name="EntryGrid" ColumnDefinitions="Auto" RowDefinitions="Auto,Auto" />
<Border Name="VerdictBorder" Margin="0,6,0,0" Padding="6,3" CornerRadius="3"
Background="#22808080">
<TextBlock Name="VerdictText" FontSize="12" Text="" />
</Border>
<TextBlock Name="StatusText" FontSize="11" Opacity="0.7" Margin="2,4,0,0" Text="" />
</StackPanel>
</DockPanel>
</Window>