Files
Nonemm/src/Nonemm.App/Windows/TelnetWindow.axaml
T
erikbrockoandClaude Sonnet 5.5 29d3a0f016 Name a monospace font list instead of the generic monospace
The generic name only resolves through fontconfig, so on Windows the
windows fell back to the proportional default.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 01:07:47 +00:00

153 lines
7.7 KiB
XML

<local:RefreshableWindow xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Nonemm.App.Windows"
xmlns:theming="using:Nonemm.App.Theming"
x:Class="Nonemm.App.Windows.TelnetWindow"
Title="Telnet" Width="760" Height="520">
<Window.Styles>
<Style Selector="TextBlock.label">
<Setter Property="FontSize" Value="11" />
<Setter Property="Opacity" Value="0.7" />
<Setter Property="Margin" Value="0,6,0,1" />
</Style>
<!-- the traffic is a terminal: a line is as tall as its text -->
<Style Selector="ListBox#Traffic > ListBoxItem">
<Setter Property="Padding" Value="2,0" />
<Setter Property="MinHeight" Value="0" />
<Setter Property="Margin" Value="0" />
</Style>
</Window.Styles>
<TabControl Name="Tabs">
<TabItem Header="Telnet">
<DockPanel>
<Grid DockPanel.Dock="Top" ColumnDefinitions="*,Auto" Margin="8,6,8,4">
<TextBlock Name="StateText" FontSize="11" Opacity="0.7" VerticalAlignment="Center" />
<Button Grid.Column="1" Name="ReconnectButton" Content="Reconnect" Click="OnReconnect" />
</Grid>
<StackPanel DockPanel.Dock="Bottom" Margin="8,4,8,8" Spacing="4">
<WrapPanel Name="ButtonRow" />
<DockPanel>
<Button DockPanel.Dock="Right" Content="Send" Click="OnSend" IsDefault="True"
Margin="6,0,0,0" />
<TextBox Name="CommandBox" PlaceholderText="command to the node" KeyDown="OnCommandKey" />
</DockPanel>
</StackPanel>
<ListBox Name="Traffic" FontFamily="{x:Static theming:Fonts.Mono}" FontSize="12" Margin="8,0"
DoubleTapped="OnJumpToSpot">
<ListBox.ContextMenu>
<ContextMenu>
<MenuItem Header="Jump to this spot" Click="OnJumpToSpot" />
<MenuItem Header="Copy line" Click="OnCopyLine" />
<MenuItem Header="Clear" Click="OnClearTraffic" />
</ContextMenu>
</ListBox.ContextMenu>
</ListBox>
</DockPanel>
</TabItem>
<TabItem Header="Clusters">
<Grid ColumnDefinitions="*,12,300" Margin="10">
<Grid RowDefinitions="Auto,2*,Auto,Auto,3*">
<TextBlock Classes="label" Text="Favourites" Margin="0,0,0,1" />
<ListBox Grid.Row="1" Name="NodeList" SelectionChanged="OnNodePicked" />
<StackPanel Grid.Row="2" Orientation="Horizontal" Spacing="6" Margin="0,6,0,0">
<Button Content="Connect" Click="OnConnect" />
<Button Content="Disconnect" Click="OnDisconnect" />
<Button Content="Remove" Click="OnRemoveNode" />
</StackPanel>
<Grid Grid.Row="3" ColumnDefinitions="*,Auto" Margin="0,12,0,1">
<TextBlock Classes="label" Name="PublishedText" Text="Published list" VerticalAlignment="Center" />
<Button Grid.Column="1" Content="Download" Click="OnDownloadNodes" />
</Grid>
<ListBox Grid.Row="4" Name="PublishedNodeList" SelectionChanged="OnPublishedNodePicked" />
</Grid>
<ScrollViewer Grid.Column="2">
<StackPanel>
<TextBlock Classes="label" Text="Name" Margin="0,0,0,1" />
<TextBox Name="NameBox" />
<Grid ColumnDefinitions="*,8,80" >
<StackPanel>
<TextBlock Classes="label" Text="Node" />
<TextBox Name="HostBox" PlaceholderText="dxc.example.net" />
</StackPanel>
<StackPanel Grid.Column="2">
<TextBlock Classes="label" Text="Port" />
<TextBox Name="PortBox" />
</StackPanel>
</Grid>
<TextBlock Classes="label" Text="Password, if the node asks for one" />
<TextBox Name="PasswordBox" PasswordChar="•" />
<TextBlock Classes="label" Text="Commands sent after login, one per line" />
<TextBox Name="CommandsBox" AcceptsReturn="True" Height="70" />
<Button Content="Save to favourites" Click="OnStoreNode" Margin="0,8,0,0" />
<TextBlock Classes="label" Text="Options" Margin="0,14,0,1" />
<CheckBox Name="AutoLogonBox" Content="Log on automatically" />
<TextBlock Classes="label" Text="Log on with" />
<TextBox Name="LogonCallBox" PlaceholderText="the station callsign" />
<TextBlock Classes="label" Text="Keep alive every (minutes)" />
<TextBox Name="KeepAliveBox" Width="60" HorizontalAlignment="Left" />
<Button Content="Save options" Click="OnSaveOptions" Margin="0,8,0,0" />
</StackPanel>
</ScrollViewer>
</Grid>
</TabItem>
<TabItem Header="Filters">
<ScrollViewer>
<StackPanel Margin="10" Spacing="2">
<TextBlock Classes="label" Text="Bands — none ticked means every band" />
<WrapPanel Name="BandBoxes" />
<TextBlock Classes="label" Text="Modes — none ticked means every mode" />
<StackPanel Orientation="Horizontal" Spacing="12">
<CheckBox Name="CwBox" Content="CW" />
<CheckBox Name="PhoneBox" Content="Phone" />
<CheckBox Name="DigitalBox" Content="Digital" />
</StackPanel>
<CheckBox Name="BeaconBox" Content="Show beacon spots" Margin="0,6,0,0" />
<CheckBox Name="BustedBox" Content="Remove busted spots — a call one character off one the callsign database knows" />
<CheckBox Name="CallHistoryBox" Content="Only the stations in the call history file" />
<CheckBox Name="RandomizeBox" Content="Randomise incoming CW spot frequencies" />
<TextBlock Classes="label" Text="Preferred spotters, whose lines the traffic paints" />
<TextBox Name="PreferredSpottersBox" PlaceholderText="W3LPL K1TTT" />
<TextBlock Classes="label" Text="Take spots only from" />
<CheckBox Name="MyCountryBox" Content="my country" />
<CheckBox Name="MyContinentBox" Content="my continent" />
<TextBlock Classes="label" Text="these prefixes, separated by spaces" />
<TextBox Name="CallAreasBox" PlaceholderText="K1 K2 VE3" />
<TextBlock Classes="label" Text="Blacklisted spotters" />
<TextBox Name="BlockedSpottersBox" />
<TextBlock Classes="label" Text="Blacklisted calls" />
<TextBox Name="BlockedCallsBox" />
<TextBlock Classes="label" Text="Bandmap spot timeout (minutes)" />
<TextBox Name="TimeoutBox" Width="60" HorizontalAlignment="Left" />
<Button Content="Apply" Click="OnApplyFilters" Margin="0,10,0,0" />
</StackPanel>
</ScrollViewer>
</TabItem>
<TabItem Header="Buttons">
<DockPanel Margin="10">
<TextBlock DockPanel.Dock="Top" Classes="label" Margin="0,0,0,6" TextWrapping="Wrap"
Text="The buttons under the traffic. A button takes the message macros — {MYCALL}, {CALL}, {FREQ} — several commands separated by semicolons, or {CONN} and the name of a favourite to connect to it. Leave the label empty to drop the button." />
<StackPanel DockPanel.Dock="Bottom" Orientation="Horizontal" Spacing="6" Margin="0,10,0,0">
<Button Content="Save" Click="OnSaveButtons" />
<Button Content="Back to the defaults" Click="OnResetButtons" />
</StackPanel>
<ScrollViewer>
<Grid Name="ButtonRows" ColumnDefinitions="140,8,*" />
</ScrollViewer>
</DockPanel>
</TabItem>
<TabItem Header="Spot comment">
<StackPanel Margin="10">
<TextBlock Classes="label" Text="Sent with the spots you put on the cluster" />
<TextBox Name="SpotCommentBox" PlaceholderText="CQ contest" />
<Button Content="Save" Click="OnSaveSpotComment" Margin="0,10,0,0" />
</StackPanel>
</TabItem>
</TabControl>
</local:RefreshableWindow>