not1mm 24.3.21__tar.gz → 24.3.25__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {not1mm-24.3.21 → not1mm-24.3.25}/PKG-INFO +66 -55
- {not1mm-24.3.21 → not1mm-24.3.25}/README.md +65 -54
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/__main__.py +2 -2
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/bandmap.py +64 -54
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/checkwindow.py +14 -9
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/bandmap.ui +15 -3
- not1mm-24.3.25/not1mm/data/checkwindow.ui +119 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/cty.json +1 -1
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/logwindow.ui +29 -9
- not1mm-24.3.25/not1mm/fsutils.py +63 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/lib/super_check_partial.py +3 -1
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/lib/version.py +1 -1
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/logwindow.py +30 -29
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/vfo.py +10 -9
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm.egg-info/PKG-INFO +66 -55
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm.egg-info/SOURCES.txt +0 -1
- {not1mm-24.3.21 → not1mm-24.3.25}/pyproject.toml +1 -1
- not1mm-24.3.21/not1mm/data/checkwindow.ui +0 -96
- not1mm-24.3.21/not1mm/data/vfo2.ui +0 -84
- not1mm-24.3.21/not1mm/fsutils.py +0 -38
- {not1mm-24.3.21 → not1mm-24.3.25}/LICENSE +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/__init__.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/JetBrainsMono-Regular.ttf +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/MASTER.SCP +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/about.ui +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/alpha bravo charlie delta.txt +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/check.png +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/configuration.ui +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/contests.sql +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/cwmacros.txt +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/donors.html +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/editcontact.ui +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/editmacro.ui +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/greendot.png +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/k6gte-not1mm.desktop +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/k6gte.not1mm-128.png +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/k6gte.not1mm-32.png +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/k6gte.not1mm-64.png +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/main.ui +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/new_contest.ui +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/not1mm.html +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/opon.ui +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/0.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/1.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/2.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/3.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/4.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/5.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/6.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/7.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/73.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/8.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/9.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/a.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/again.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/b.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/c.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/contest.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/cq.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/d.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/e.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/f.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/g.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/h.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/i.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/j.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/k.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/k6gte.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/l.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/m.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/mynumber.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/n.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/nil.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/o.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/p.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/q.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/r.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/roger.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/s.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/space.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/t.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/thankyou.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/thankyouqrz.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/u.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/v.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/w.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/x.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/y.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/yourcall.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/phonetics/z.wav +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/pickcontest.ui +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/radio_green.png +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/radio_grey.png +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/radio_red.png +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/reddot.png +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/settings.ui +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/ssbmacros.txt +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/data/vfo.ui +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/lib/__init__.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/lib/about.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/lib/cat_interface.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/lib/cwinterface.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/lib/database.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/lib/edit_contact.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/lib/edit_macro.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/lib/edit_opon.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/lib/edit_station.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/lib/ham_utility.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/lib/lookup.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/lib/multicast.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/lib/n1mm.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/lib/new_contest.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/lib/plugin_common.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/lib/select_contest.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/lib/settings.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/lib/versiontest.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/plugins/10_10_fall_cw.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/plugins/10_10_spring_cw.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/plugins/10_10_summer_phone.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/plugins/10_10_winter_phone.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/plugins/__init__.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/plugins/arrl_10m.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/plugins/arrl_dx_cw.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/plugins/arrl_dx_ssb.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/plugins/arrl_field_day.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/plugins/arrl_rtty_ru.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/plugins/arrl_ss_cw.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/plugins/arrl_ss_phone.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/plugins/arrl_vhf_jan.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/plugins/arrl_vhf_jun.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/plugins/arrl_vhf_sep.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/plugins/canada_day.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/plugins/cq_160_cw.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/plugins/cq_160_ssb.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/plugins/cq_wpx_cw.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/plugins/cq_wpx_ssb.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/plugins/cq_ww_cw.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/plugins/cq_ww_ssb.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/plugins/cwt.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/plugins/general_logging.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/plugins/iaru_hf.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/plugins/jidx_cw.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/plugins/jidx_ph.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/plugins/naqp_cw.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/plugins/naqp_ssb.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/plugins/phone_weekly_test.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/plugins/stew_perry_topband.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/plugins/winter_field_day.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/testing/fakeflrig.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/testing/flrigclient.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/testing/multicast_listener.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/testing/n1mm_listener.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/testing/simulant.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm/testing/test.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm.egg-info/dependency_links.txt +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm.egg-info/entry_points.txt +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm.egg-info/requires.txt +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/not1mm.egg-info/top_level.txt +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/setup.cfg +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/testing/detectdark.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/testing/test.py +0 -0
- {not1mm-24.3.21 → not1mm-24.3.25}/usb_vfo_knob/code.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: not1mm
|
3
|
-
Version: 24.3.
|
3
|
+
Version: 24.3.25
|
4
4
|
Summary: NOT1MM Logger
|
5
5
|
Author-email: Michael Bridak <michael.bridak@gmail.com>
|
6
6
|
Project-URL: Homepage, https://github.com/mbridak/not1mm
|
@@ -48,19 +48,16 @@ The worlds #1 unfinished contest logger <sup>*According to my daughter Corinna.<
|
|
48
48
|
- [Our Code Contributors ✨](#our-code-contributors-)
|
49
49
|
- [List of should be working contests](#list-of-should-be-working-contests)
|
50
50
|
- [Recent Changes](#recent-changes)
|
51
|
-
- [
|
52
|
-
- [Python and
|
53
|
-
- [
|
54
|
-
|
55
|
-
|
56
|
-
|
51
|
+
- [Installation](#installation)
|
52
|
+
- [Python, PyPI, pip and pipx](#python-pypi-pip-and-pipx)
|
53
|
+
- [Bootstrapping pipx](#bootstrapping-pipx)
|
54
|
+
- [Installing with pipx](#installing-with-pipx)
|
55
|
+
- [Installing portaudio](#installing-portaudio)
|
56
|
+
- [After install](#after-install)
|
57
57
|
- [You may or may not get a warning message like](#you-may-or-may-not-get-a-warning-message-like)
|
58
58
|
- [Or this fan favorite](#or-this-fan-favorite)
|
59
|
-
- [Updating with pip/pipx](#updating-with-pippipx)
|
60
|
-
- [Other Libraries](#other-libraries)
|
61
|
-
- [Dark mode on Ubuntu](#dark-mode-on-ubuntu)
|
62
59
|
- [Wayland Compositor](#wayland-compositor)
|
63
|
-
|
60
|
+
- [Running from source](#running-from-source)
|
64
61
|
- [Various data file locations](#various-data-file-locations)
|
65
62
|
- [Data](#data)
|
66
63
|
- [Config](#config)
|
@@ -71,13 +68,14 @@ The worlds #1 unfinished contest logger <sup>*According to my daughter Corinna.<
|
|
71
68
|
- [Revisiting an old friend](#revisiting-an-old-friend)
|
72
69
|
- [Station Settings dialog (REQUIRED)](#station-settings-dialog-required)
|
73
70
|
- [Changing station information](#changing-station-information)
|
74
|
-
- [
|
75
|
-
|
76
|
-
|
71
|
+
- [Selecting a contest (REQUIRED)](#selecting-a-contest-required)
|
72
|
+
- [Selecting a new contest](#selecting-a-new-contest)
|
73
|
+
- [Selecting an existing contest as the current contest](#selecting-an-existing-contest-as-the-current-contest)
|
74
|
+
- [Editing existing contest parameters](#editing-existing-contest-parameters)
|
77
75
|
- [Configuration Settings](#configuration-settings)
|
78
76
|
- [Lookup](#lookup)
|
79
77
|
- [Soundcard](#soundcard)
|
80
|
-
- [CAT](#cat)
|
78
|
+
- [CAT Control](#cat-control)
|
81
79
|
- [CW Keyer interface](#cw-keyer-interface)
|
82
80
|
- [Cluster](#cluster)
|
83
81
|
- [N1MM Packets](#n1mm-packets)
|
@@ -90,7 +88,7 @@ The worlds #1 unfinished contest logger <sup>*According to my daughter Corinna.<
|
|
90
88
|
- [Other uses for the call field](#other-uses-for-the-call-field)
|
91
89
|
- [Windows](#windows)
|
92
90
|
- [The Main Window](#the-main-window)
|
93
|
-
|
91
|
+
- [Keyboard commands](#keyboard-commands)
|
94
92
|
- [Log Display](#log-display)
|
95
93
|
- [Editing a contact](#editing-a-contact)
|
96
94
|
- [Recalulate Mults](#recalulate-mults)
|
@@ -169,6 +167,10 @@ I wish to thank those who've contributed to the project.
|
|
169
167
|
|
170
168
|
## Recent Changes
|
171
169
|
|
170
|
+
- [24-3-25] Yanked version 24-3-24-1. Fixed widget focus issues.
|
171
|
+
- [24-3-24-1] Killed an SQL query bug causing crash when pressing arrow down.
|
172
|
+
- [24-3-24] Reworked fsutil.py to correct directory paths for Linux.
|
173
|
+
- [24-3-23] Yanked version 24-3-21, too many bugs for existing userbase.
|
172
174
|
- [24-3-21] Merged PR from @kyleboyle for docking windows. MacOS and Windows support.
|
173
175
|
- [24-3-19] Removed some useless bloat causing slow interface on FreeBSD 13/14 and maybe others.
|
174
176
|
- [24-3-16] Add Save/Fail confirmation dialogs when saving ADIF of Cabrillo files.
|
@@ -181,43 +183,64 @@ I wish to thank those who've contributed to the project.
|
|
181
183
|
|
182
184
|
See [CHANGELOG.md](CHANGELOG.md) for prior changes.
|
183
185
|
|
184
|
-
##
|
186
|
+
## Installation
|
185
187
|
|
186
|
-
### Python and
|
188
|
+
### Python, PyPI, pip and pipx
|
187
189
|
|
188
|
-
This software is a Python package hosted on
|
190
|
+
This software is a Python package hosted on PyPI, and installable with the pip or pipx command. If this is your first exposure to Python packaging you can get all the details from:
|
189
191
|
|
190
|
-
|
192
|
+
- [The PyPA](https://packaging.python.org/en/latest/tutorials/installing-packages/)
|
193
|
+
- [Install packages in a virtual environment using pip and venv](https://packaging.python.org/en/latest/guides/installing-using-pip-and-virtual-environments/)
|
194
|
+
- [Installing stand alone command line tools](https://packaging.python.org/en/latest/guides/installing-stand-alone-command-line-tools/)
|
191
195
|
|
192
|
-
|
196
|
+
In short, You should install stuff into a Python virtual environment. Newer Linux distros will make you do this unless you include a command line argument akin to '--break-my-system' when using pip. I'm not telling you to use pipx. But... **Use pipx**.
|
193
197
|
|
194
|
-
|
198
|
+
### Bootstrapping pipx
|
199
|
+
|
200
|
+
Assuming you have only Python installed, your path to pipx is:
|
195
201
|
|
196
202
|
```bash
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
pip
|
203
|
+
# First get pip installed. Either with apt or dnf, or the ensurepip command.
|
204
|
+
python3 -m ensurepip
|
205
|
+
|
206
|
+
# Update the pip that was just installed.
|
207
|
+
python3 -m pip install --upgrade pip
|
208
|
+
|
209
|
+
# Install pipx
|
210
|
+
python3 -m pip install --user pipx
|
211
|
+
python3 -m pipx ensurepath
|
201
212
|
```
|
202
213
|
|
203
|
-
|
214
|
+
### Installing with pipx
|
215
|
+
|
216
|
+
Then installing not1mm is as simple as:
|
204
217
|
|
205
218
|
```bash
|
206
|
-
|
207
|
-
sudo apt upgrade
|
208
|
-
sudo apt install -y libportaudio2 adwaita-qt pipx
|
219
|
+
# Install not1mm
|
209
220
|
pipx install not1mm
|
210
|
-
pipx ensurepath
|
211
221
|
```
|
212
222
|
|
213
|
-
|
223
|
+
If you need to later update not1mm, you can do so with:
|
224
|
+
|
225
|
+
```bash
|
226
|
+
# Update not1mm
|
227
|
+
pipx upgrade not1mm
|
228
|
+
```
|
229
|
+
|
230
|
+
### Installing portaudio
|
231
|
+
|
232
|
+
not1mm uses portaudio to play audio. You can install it with:
|
214
233
|
|
215
234
|
```bash
|
216
|
-
|
235
|
+
# Ubuntu
|
236
|
+
sudo apt install -y libportaudio2
|
237
|
+
|
238
|
+
# Fedora
|
217
239
|
sudo dnf install python3-pip portaudio
|
218
|
-
pip install not1mm
|
219
240
|
```
|
220
241
|
|
242
|
+
## After install
|
243
|
+
|
221
244
|
You can now open a new terminal and type `not1mm`. On it's first run, it may or may not install a lovely non AI generated
|
222
245
|
icon, which you can later click on to launch the application.
|
223
246
|
|
@@ -244,27 +267,13 @@ To avoid this you can export an environment variable and launch the app like thi
|
|
244
267
|
|
245
268
|
For a more permanent solution you can place the line `export QT_QPA_PLATFORM=wayland` in your home directories .bashrc file. Then after logging out and back in you should be able to launch it normally.
|
246
269
|
|
247
|
-
### Updating with pip/pipx
|
248
|
-
|
249
|
-
I've been posting updates just about everyday. Sometimes multiple times a day. It's early days, so there is much to do. You can check for and install updates with `pip install -U not1mm` or if installed with pipx `pipx upgrade not1mm`.
|
250
|
-
|
251
|
-
## Other Libraries
|
252
|
-
|
253
|
-
The audio library used, uses pipewire/portaudio. You may need to install portaudio. Ubuntu: `sudo apt install libportaudio2`
|
254
|
-
|
255
|
-
### Dark mode on Ubuntu
|
256
|
-
|
257
|
-
I believe I figured out dark mode in Ubuntu and have it working on my shack PC that runs Ubuntu 22.04. The secret sauce seems to be installing adwaita-qt with apt, and setting an environment variable `QT_STYLE_OVERRIDE` to `Adwaita-Dark`. I set the environment variable in the start of the program if running on a Gnome platform. So you don't need to do that part.
|
258
|
-
|
259
|
-
Or see this discussion [darkmode](https://github.com/mbridak/not1mm/discussions/60).
|
260
|
-
|
261
270
|
## Wayland Compositor
|
262
271
|
|
263
272
|
One side effect of Wayland is that we are not able to request for a window to regain or retain focus. So if you were to click on a spot in the bandmap window to tune to that spot, you would have to then click on the main window to continue entering contest data. I'm aware of this, but I can not change it.
|
264
273
|
|
265
|
-
|
274
|
+
### Running from source
|
266
275
|
|
267
|
-
Since this is packaged for
|
276
|
+
Since this is packaged for PyPI, if you want to work on your own source branch, after cloning from github you would:
|
268
277
|
|
269
278
|
```bash
|
270
279
|
pip install --upgrade pip
|
@@ -333,19 +342,21 @@ You can fill. You can fill. Everyone look at your keys.
|
|
333
342
|
|
334
343
|
Station information can be changed any time by going to `File` > `Station Settings` and editing the information.
|
335
344
|
|
336
|
-
##
|
345
|
+
## Selecting a contest (REQUIRED)
|
346
|
+
|
347
|
+
### Selecting a new contest
|
337
348
|
|
338
349
|
Select `File` > `New Contest`
|
339
350
|
|
340
351
|

|
341
352
|
|
342
|
-
|
353
|
+
### Selecting an existing contest as the current contest
|
343
354
|
|
344
355
|
Select `File` > `Open Contest`
|
345
356
|
|
346
357
|

|
347
358
|
|
348
|
-
|
359
|
+
### Editing existing contest parameters
|
349
360
|
|
350
361
|
You can edit the parameters of a previously defined contest by selecting it as the current contest. Then select `File` > `Edit Current Contest`. Click `OK` to save the new values and reload the contest. `Cancel` to keep the existing parameters.
|
351
362
|
|
@@ -365,7 +376,7 @@ For callsign lookup, Two services are supported. QRZ and HamQTH. They require a
|
|
365
376
|
|
366
377
|
Choose the sound output device for the voice keyer.
|
367
378
|
|
368
|
-
### CAT
|
379
|
+
### CAT Control
|
369
380
|
|
370
381
|
Under the `CAT` TAB, you can choose either `rigctld` normally with an IP of `127.0.0.1` and a port of `4532`. Or `flrig`, IP normally of `127.0.0.1` and a port of `12345`. `None` is always an option, but is it really? There's an onscreen icon for CAT status. Green good, Red bad, Grey neither.
|
371
382
|
|
@@ -448,7 +459,7 @@ After this, a request is made to QRZ for the gridsquare of the callsign. If ther
|
|
448
459
|
|
449
460
|

|
450
461
|
|
451
|
-
|
462
|
+
### Keyboard commands
|
452
463
|
|
453
464
|
| Key | Result |
|
454
465
|
| -------------- | --- |
|
@@ -17,19 +17,16 @@ The worlds #1 unfinished contest logger <sup>*According to my daughter Corinna.<
|
|
17
17
|
- [Our Code Contributors ✨](#our-code-contributors-)
|
18
18
|
- [List of should be working contests](#list-of-should-be-working-contests)
|
19
19
|
- [Recent Changes](#recent-changes)
|
20
|
-
- [
|
21
|
-
- [Python and
|
22
|
-
- [
|
23
|
-
|
24
|
-
|
25
|
-
|
20
|
+
- [Installation](#installation)
|
21
|
+
- [Python, PyPI, pip and pipx](#python-pypi-pip-and-pipx)
|
22
|
+
- [Bootstrapping pipx](#bootstrapping-pipx)
|
23
|
+
- [Installing with pipx](#installing-with-pipx)
|
24
|
+
- [Installing portaudio](#installing-portaudio)
|
25
|
+
- [After install](#after-install)
|
26
26
|
- [You may or may not get a warning message like](#you-may-or-may-not-get-a-warning-message-like)
|
27
27
|
- [Or this fan favorite](#or-this-fan-favorite)
|
28
|
-
- [Updating with pip/pipx](#updating-with-pippipx)
|
29
|
-
- [Other Libraries](#other-libraries)
|
30
|
-
- [Dark mode on Ubuntu](#dark-mode-on-ubuntu)
|
31
28
|
- [Wayland Compositor](#wayland-compositor)
|
32
|
-
|
29
|
+
- [Running from source](#running-from-source)
|
33
30
|
- [Various data file locations](#various-data-file-locations)
|
34
31
|
- [Data](#data)
|
35
32
|
- [Config](#config)
|
@@ -40,13 +37,14 @@ The worlds #1 unfinished contest logger <sup>*According to my daughter Corinna.<
|
|
40
37
|
- [Revisiting an old friend](#revisiting-an-old-friend)
|
41
38
|
- [Station Settings dialog (REQUIRED)](#station-settings-dialog-required)
|
42
39
|
- [Changing station information](#changing-station-information)
|
43
|
-
- [
|
44
|
-
|
45
|
-
|
40
|
+
- [Selecting a contest (REQUIRED)](#selecting-a-contest-required)
|
41
|
+
- [Selecting a new contest](#selecting-a-new-contest)
|
42
|
+
- [Selecting an existing contest as the current contest](#selecting-an-existing-contest-as-the-current-contest)
|
43
|
+
- [Editing existing contest parameters](#editing-existing-contest-parameters)
|
46
44
|
- [Configuration Settings](#configuration-settings)
|
47
45
|
- [Lookup](#lookup)
|
48
46
|
- [Soundcard](#soundcard)
|
49
|
-
- [CAT](#cat)
|
47
|
+
- [CAT Control](#cat-control)
|
50
48
|
- [CW Keyer interface](#cw-keyer-interface)
|
51
49
|
- [Cluster](#cluster)
|
52
50
|
- [N1MM Packets](#n1mm-packets)
|
@@ -59,7 +57,7 @@ The worlds #1 unfinished contest logger <sup>*According to my daughter Corinna.<
|
|
59
57
|
- [Other uses for the call field](#other-uses-for-the-call-field)
|
60
58
|
- [Windows](#windows)
|
61
59
|
- [The Main Window](#the-main-window)
|
62
|
-
|
60
|
+
- [Keyboard commands](#keyboard-commands)
|
63
61
|
- [Log Display](#log-display)
|
64
62
|
- [Editing a contact](#editing-a-contact)
|
65
63
|
- [Recalulate Mults](#recalulate-mults)
|
@@ -138,6 +136,10 @@ I wish to thank those who've contributed to the project.
|
|
138
136
|
|
139
137
|
## Recent Changes
|
140
138
|
|
139
|
+
- [24-3-25] Yanked version 24-3-24-1. Fixed widget focus issues.
|
140
|
+
- [24-3-24-1] Killed an SQL query bug causing crash when pressing arrow down.
|
141
|
+
- [24-3-24] Reworked fsutil.py to correct directory paths for Linux.
|
142
|
+
- [24-3-23] Yanked version 24-3-21, too many bugs for existing userbase.
|
141
143
|
- [24-3-21] Merged PR from @kyleboyle for docking windows. MacOS and Windows support.
|
142
144
|
- [24-3-19] Removed some useless bloat causing slow interface on FreeBSD 13/14 and maybe others.
|
143
145
|
- [24-3-16] Add Save/Fail confirmation dialogs when saving ADIF of Cabrillo files.
|
@@ -150,43 +152,64 @@ I wish to thank those who've contributed to the project.
|
|
150
152
|
|
151
153
|
See [CHANGELOG.md](CHANGELOG.md) for prior changes.
|
152
154
|
|
153
|
-
##
|
155
|
+
## Installation
|
154
156
|
|
155
|
-
### Python and
|
157
|
+
### Python, PyPI, pip and pipx
|
156
158
|
|
157
|
-
This software is a Python package hosted on
|
159
|
+
This software is a Python package hosted on PyPI, and installable with the pip or pipx command. If this is your first exposure to Python packaging you can get all the details from:
|
158
160
|
|
159
|
-
|
161
|
+
- [The PyPA](https://packaging.python.org/en/latest/tutorials/installing-packages/)
|
162
|
+
- [Install packages in a virtual environment using pip and venv](https://packaging.python.org/en/latest/guides/installing-using-pip-and-virtual-environments/)
|
163
|
+
- [Installing stand alone command line tools](https://packaging.python.org/en/latest/guides/installing-stand-alone-command-line-tools/)
|
160
164
|
|
161
|
-
|
165
|
+
In short, You should install stuff into a Python virtual environment. Newer Linux distros will make you do this unless you include a command line argument akin to '--break-my-system' when using pip. I'm not telling you to use pipx. But... **Use pipx**.
|
162
166
|
|
163
|
-
|
167
|
+
### Bootstrapping pipx
|
168
|
+
|
169
|
+
Assuming you have only Python installed, your path to pipx is:
|
164
170
|
|
165
171
|
```bash
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
pip
|
172
|
+
# First get pip installed. Either with apt or dnf, or the ensurepip command.
|
173
|
+
python3 -m ensurepip
|
174
|
+
|
175
|
+
# Update the pip that was just installed.
|
176
|
+
python3 -m pip install --upgrade pip
|
177
|
+
|
178
|
+
# Install pipx
|
179
|
+
python3 -m pip install --user pipx
|
180
|
+
python3 -m pipx ensurepath
|
170
181
|
```
|
171
182
|
|
172
|
-
|
183
|
+
### Installing with pipx
|
184
|
+
|
185
|
+
Then installing not1mm is as simple as:
|
173
186
|
|
174
187
|
```bash
|
175
|
-
|
176
|
-
sudo apt upgrade
|
177
|
-
sudo apt install -y libportaudio2 adwaita-qt pipx
|
188
|
+
# Install not1mm
|
178
189
|
pipx install not1mm
|
179
|
-
pipx ensurepath
|
180
190
|
```
|
181
191
|
|
182
|
-
|
192
|
+
If you need to later update not1mm, you can do so with:
|
193
|
+
|
194
|
+
```bash
|
195
|
+
# Update not1mm
|
196
|
+
pipx upgrade not1mm
|
197
|
+
```
|
198
|
+
|
199
|
+
### Installing portaudio
|
200
|
+
|
201
|
+
not1mm uses portaudio to play audio. You can install it with:
|
183
202
|
|
184
203
|
```bash
|
185
|
-
|
204
|
+
# Ubuntu
|
205
|
+
sudo apt install -y libportaudio2
|
206
|
+
|
207
|
+
# Fedora
|
186
208
|
sudo dnf install python3-pip portaudio
|
187
|
-
pip install not1mm
|
188
209
|
```
|
189
210
|
|
211
|
+
## After install
|
212
|
+
|
190
213
|
You can now open a new terminal and type `not1mm`. On it's first run, it may or may not install a lovely non AI generated
|
191
214
|
icon, which you can later click on to launch the application.
|
192
215
|
|
@@ -213,27 +236,13 @@ To avoid this you can export an environment variable and launch the app like thi
|
|
213
236
|
|
214
237
|
For a more permanent solution you can place the line `export QT_QPA_PLATFORM=wayland` in your home directories .bashrc file. Then after logging out and back in you should be able to launch it normally.
|
215
238
|
|
216
|
-
### Updating with pip/pipx
|
217
|
-
|
218
|
-
I've been posting updates just about everyday. Sometimes multiple times a day. It's early days, so there is much to do. You can check for and install updates with `pip install -U not1mm` or if installed with pipx `pipx upgrade not1mm`.
|
219
|
-
|
220
|
-
## Other Libraries
|
221
|
-
|
222
|
-
The audio library used, uses pipewire/portaudio. You may need to install portaudio. Ubuntu: `sudo apt install libportaudio2`
|
223
|
-
|
224
|
-
### Dark mode on Ubuntu
|
225
|
-
|
226
|
-
I believe I figured out dark mode in Ubuntu and have it working on my shack PC that runs Ubuntu 22.04. The secret sauce seems to be installing adwaita-qt with apt, and setting an environment variable `QT_STYLE_OVERRIDE` to `Adwaita-Dark`. I set the environment variable in the start of the program if running on a Gnome platform. So you don't need to do that part.
|
227
|
-
|
228
|
-
Or see this discussion [darkmode](https://github.com/mbridak/not1mm/discussions/60).
|
229
|
-
|
230
239
|
## Wayland Compositor
|
231
240
|
|
232
241
|
One side effect of Wayland is that we are not able to request for a window to regain or retain focus. So if you were to click on a spot in the bandmap window to tune to that spot, you would have to then click on the main window to continue entering contest data. I'm aware of this, but I can not change it.
|
233
242
|
|
234
|
-
|
243
|
+
### Running from source
|
235
244
|
|
236
|
-
Since this is packaged for
|
245
|
+
Since this is packaged for PyPI, if you want to work on your own source branch, after cloning from github you would:
|
237
246
|
|
238
247
|
```bash
|
239
248
|
pip install --upgrade pip
|
@@ -302,19 +311,21 @@ You can fill. You can fill. Everyone look at your keys.
|
|
302
311
|
|
303
312
|
Station information can be changed any time by going to `File` > `Station Settings` and editing the information.
|
304
313
|
|
305
|
-
##
|
314
|
+
## Selecting a contest (REQUIRED)
|
315
|
+
|
316
|
+
### Selecting a new contest
|
306
317
|
|
307
318
|
Select `File` > `New Contest`
|
308
319
|
|
309
320
|

|
310
321
|
|
311
|
-
|
322
|
+
### Selecting an existing contest as the current contest
|
312
323
|
|
313
324
|
Select `File` > `Open Contest`
|
314
325
|
|
315
326
|

|
316
327
|
|
317
|
-
|
328
|
+
### Editing existing contest parameters
|
318
329
|
|
319
330
|
You can edit the parameters of a previously defined contest by selecting it as the current contest. Then select `File` > `Edit Current Contest`. Click `OK` to save the new values and reload the contest. `Cancel` to keep the existing parameters.
|
320
331
|
|
@@ -334,7 +345,7 @@ For callsign lookup, Two services are supported. QRZ and HamQTH. They require a
|
|
334
345
|
|
335
346
|
Choose the sound output device for the voice keyer.
|
336
347
|
|
337
|
-
### CAT
|
348
|
+
### CAT Control
|
338
349
|
|
339
350
|
Under the `CAT` TAB, you can choose either `rigctld` normally with an IP of `127.0.0.1` and a port of `4532`. Or `flrig`, IP normally of `127.0.0.1` and a port of `12345`. `None` is always an option, but is it really? There's an onscreen icon for CAT status. Green good, Red bad, Grey neither.
|
340
351
|
|
@@ -417,7 +428,7 @@ After this, a request is made to QRZ for the gridsquare of the callsign. If ther
|
|
417
428
|
|
418
429
|

|
419
430
|
|
420
|
-
|
431
|
+
### Keyboard commands
|
421
432
|
|
422
433
|
| Key | Result |
|
423
434
|
| -------------- | --- |
|
@@ -3,7 +3,7 @@
|
|
3
3
|
NOT1MM Logger
|
4
4
|
"""
|
5
5
|
# pylint: disable=unused-import, c-extension-no-member, no-member, invalid-name, too-many-lines, no-name-in-module
|
6
|
-
# pylint: disable=logging-fstring-interpolation, logging-not-lazy, line-too-long
|
6
|
+
# pylint: disable=logging-fstring-interpolation, logging-not-lazy, line-too-long, bare-except
|
7
7
|
|
8
8
|
# alt cluster hamqth.com 7300
|
9
9
|
|
@@ -123,7 +123,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
123
123
|
"contest": "",
|
124
124
|
"multicast_group": "239.1.1.1",
|
125
125
|
"multicast_port": 2239,
|
126
|
-
"interface_ip": "
|
126
|
+
"interface_ip": "0.0.0.0",
|
127
127
|
"send_n1mm_packets": False,
|
128
128
|
"n1mm_station_name": "20M CW Tent",
|
129
129
|
"n1mm_operator": "Bernie",
|