Two themes, and one place that decides what colour a station is

Colours came from static brushes scattered over the windows. They now come
from a Theme, and everything that paints a station, a spot or a log row
asks Themes.Current as it paints, so changing the theme changes every
window without reopening it.

light is N1MM's own palette, read out of ApplicationStyles: the pale blue
behind a window, ivory on a button, white boxes, and the four colours a
station is painted in. dark is the same states in colours for a dark
screen, which is roughly what the program looked like before.

Config > Manage Skins, Colors and Fonts picks one, under N1MM's name for
the same dialog, and shows what each theme paints a callsign. The choice
is kept in settings.json as Theme, and light is the default.

The window chrome follows through resources the Fluent controls read, so a
text box and a button take the theme's colours in every state. Fonts and
skins are not part of it.

Looked at under Xvfb in both themes: the entry window, the theme dialog,
and the log window with its rows still coloured by what each contact was
worth.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-28 13:06:32 +00:00
parent e4b3dc9572
commit da04764756
16 changed files with 452 additions and 49 deletions

View File

@@ -234,6 +234,24 @@ sitting on. How close the radio has to be to a spot is one number per mode in
`DigitalTuningToleranceHertz` — 300 Hz each out of the box, which is how N1MM
keeps them and what it defaults them to.
### Colours
The callsign is coloured as it is typed, in N1MM's own colours: blue for a
station worth working, red when it is new in one multiplier, green when it is
new in more than one, grey for a dupe. A call under three characters stays blue.
The same four colours paint a row in the log, a spot on the bandmap and a line
in the check window, so the three windows cannot disagree.
At the right-hand end of the callsign box is N1MM's mark: a tick when the call
is in `MASTER.SCP`, a question mark while it is not. As in N1MM it only appears
while the check window is open, for three characters or more.
Two themes ship with the program. `light` is N1MM's own palette, down to the
pale blue behind a window and the ivory on a button; `dark` is the same states
in colours for a dark screen. Config ▸ Manage Skins, Colors and Fonts picks one,
and the choice is kept in `settings.json` as `Theme`. Fonts and skins are not
part of it: the name is N1MM's, the dialog only changes colours.
### Where the other station is
Under the entry window is the line N1MM writes there: the beam heading, the