not1mm 25.1.6__tar.gz → 25.1.23__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-25.1.6 → not1mm-25.1.23}/PKG-INFO +22 -21
- {not1mm-25.1.6 → not1mm-25.1.23}/README.md +20 -19
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/__main__.py +32 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/main.ui +14 -0
- not1mm-25.1.23/not1mm/data/ratewindow.ui +1185 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/lib/database.py +4 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/lib/plugin_common.py +1 -1
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/lib/version.py +1 -1
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/winter_field_day.py +2 -0
- not1mm-25.1.23/not1mm/ratewindow.py +263 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm.egg-info/PKG-INFO +22 -21
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm.egg-info/SOURCES.txt +2 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/pyproject.toml +1 -1
- {not1mm-25.1.6 → not1mm-25.1.23}/LICENSE +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/__init__.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/bandmap.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/checkwindow.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/JetBrainsMono-ExtraLight.ttf +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/MASTER.SCP +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/about.ui +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/alpha bravo charlie delta.txt +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/bandmap.ui +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/check.png +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/checkwindow.ui +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/configuration.ui +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/contests.sql +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/cty.json +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/cwmacros.txt +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/donors.html +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/editcontact.ui +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/editmacro.ui +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/greendot.png +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/k6gte-not1mm.desktop +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/k6gte.not1mm-128.png +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/k6gte.not1mm-32.png +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/k6gte.not1mm-64.png +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/logwindow.ui +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/logwindowx.ui +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/new_contest.ui +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/not1mm.html +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/opon.ui +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/0.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/1.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/2.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/3.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/4.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/5.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/6.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/7.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/73.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/8.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/9.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/a.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/again.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/b.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/c.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/contest.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/cq.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/cq2.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/d.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/e.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/f.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/g.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/h.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/i.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/j.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/k.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/k6gte.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/l.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/m.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/mynumber.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/n.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/nil.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/o.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/p.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/q.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/r.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/roger.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/s.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/space.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/t.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/thankyou.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/thankyouqrz.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/u.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/v.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/w.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/x.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/y.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/yourcall.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/phonetics/z.wav +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/pickcontest.ui +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/radio_green.png +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/radio_grey.png +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/radio_red.png +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/reddot.png +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/rttymacros.txt +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/settings.ui +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/splash.png +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/ssbmacros.txt +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/data/vfo.ui +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/fsutils.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/lib/__init__.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/lib/about.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/lib/cat_interface.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/lib/cwinterface.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/lib/edit_contact.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/lib/edit_macro.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/lib/edit_opon.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/lib/edit_station.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/lib/fldigi_sendstring.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/lib/ft8_watcher.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/lib/ham_utility.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/lib/lookup.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/lib/multicast.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/lib/n1mm.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/lib/new_contest.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/lib/select_contest.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/lib/settings.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/lib/super_check_partial.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/lib/versiontest.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/logwindow.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/lookupservice.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/10_10_fall_cw.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/10_10_spring_cw.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/10_10_summer_phone.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/10_10_winter_phone.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/__init__.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/arrl_10m.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/arrl_160m.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/arrl_dx_cw.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/arrl_dx_ssb.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/arrl_field_day.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/arrl_rtty_ru.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/arrl_ss_cw.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/arrl_ss_phone.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/arrl_vhf_jan.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/arrl_vhf_jun.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/arrl_vhf_sep.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/canada_day.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/cq_160_cw.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/cq_160_ssb.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/cq_wpx_cw.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/cq_wpx_rtty.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/cq_wpx_ssb.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/cq_ww_cw.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/cq_ww_rtty.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/cq_ww_ssb.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/cwt.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/darc_xmas.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/general_logging.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/helvetia.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/iaru_fieldday_r1_cw.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/iaru_fieldday_r1_ssb.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/iaru_hf.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/icwc_mst.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/jidx_cw.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/jidx_ph.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/k1usn_sst.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/lz-dx.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/naqp_cw.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/naqp_rtty.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/naqp_ssb.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/phone_weekly_test.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/raem.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/ref_cw.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/ref_ssb.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/stew_perry_topband.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/plugins/weekly_rtty.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/radio.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/rtc_service.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/test.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/vfo.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm/voice_keying.py +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm.egg-info/dependency_links.txt +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm.egg-info/entry_points.txt +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm.egg-info/requires.txt +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/not1mm.egg-info/top_level.txt +0 -0
- {not1mm-25.1.6 → not1mm-25.1.23}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.2
|
2
2
|
Name: not1mm
|
3
|
-
Version: 25.1.
|
3
|
+
Version: 25.1.23
|
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
|
@@ -51,7 +51,6 @@ Requires-Dist: Levenshtein
|
|
51
51
|
- [The What](#the-what)
|
52
52
|
- [Target Environment](#target-environment)
|
53
53
|
- [The Why](#the-why)
|
54
|
-
- [General logging](#general-logging)
|
55
54
|
- [Current state](#current-state)
|
56
55
|
- [Code maturity](#code-maturity)
|
57
56
|
- [Data and RTTY](#data-and-rtty)
|
@@ -115,6 +114,7 @@ Requires-Dist: Levenshtein
|
|
115
114
|
- [Editing a contact](#editing-a-contact)
|
116
115
|
- [The Bandmap Window](#the-bandmap-window)
|
117
116
|
- [The Check Window](#the-check-window)
|
117
|
+
- [The Rate Window](#the-rate-window)
|
118
118
|
- [The Remote VFO Window](#the-remote-vfo-window)
|
119
119
|
- [Cabrillo](#cabrillo)
|
120
120
|
- [ADIF](#adif)
|
@@ -164,11 +164,6 @@ I'm a casual contester and could not find any contesting software for Linux that
|
|
164
164
|
I wanted to use. There is [Tucnak](http://tucnak.nagano.cz/) which is very robust
|
165
165
|
and mature. It just wasn't for me.
|
166
166
|
|
167
|
-
### General logging
|
168
|
-
|
169
|
-
In short... Don't. There are much better general purpose QSO logging programs.
|
170
|
-
Try QLog or CQRLog.
|
171
|
-
|
172
167
|
## Current state
|
173
168
|
|
174
169
|
### Code maturity
|
@@ -240,6 +235,8 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
|
|
240
235
|
|
241
236
|
## Recent Changes (Polishing the Turd)
|
242
237
|
|
238
|
+
- [25-1-23] Added a basic rate window. Changed DB to WAL mode.
|
239
|
+
- [25-1-15] Fix bug in ADIF output where mode showed as CW-R and not CW.
|
243
240
|
- [25-1-6] Altered RTTY RU UDP ADIF parse.
|
244
241
|
- [25-1-1] Added ARRL RTTY RU.
|
245
242
|
|
@@ -247,7 +244,7 @@ See [CHANGELOG.md](CHANGELOG.md) for prior changes.
|
|
247
244
|
|
248
245
|
## Flatpak
|
249
246
|
|
250
|
-
I've tried for a couple days to get
|
247
|
+
I've tried for a couple days to get Not1MM to build as a flatpak. I've failed.
|
251
248
|
It keeps failing at building numpy. If you happen to be a flatpak savant, please
|
252
249
|
feel free to look at com.github.mbridak.not1mm.yaml and python3-modules.yaml and
|
253
250
|
clue me into the black magic needed to get it to work.
|
@@ -256,7 +253,7 @@ clue me into the black magic needed to get it to work.
|
|
256
253
|
|
257
254
|
### Prerequisites
|
258
255
|
|
259
|
-
|
256
|
+
Not1MM requires:
|
260
257
|
|
261
258
|
- Python 3.9+
|
262
259
|
- PyQt6
|
@@ -268,7 +265,7 @@ You should install these through your distribution's package manager before cont
|
|
268
265
|
### Common installation recipes for Ubuntu and Fedora
|
269
266
|
|
270
267
|
I've taken the time to install some common Linux distributions into a VM and
|
271
|
-
noted the minimum steps needed to install
|
268
|
+
noted the minimum steps needed to install Not1MM.
|
272
269
|
|
273
270
|
<details>
|
274
271
|
|
@@ -392,14 +389,14 @@ python3 -m pipx ensurepath
|
|
392
389
|
|
393
390
|
#### Installing with pipx
|
394
391
|
|
395
|
-
Then installing
|
392
|
+
Then installing Not1MM is as simple as:
|
396
393
|
|
397
394
|
```bash
|
398
395
|
# Install not1mm
|
399
396
|
pipx install not1mm
|
400
397
|
```
|
401
398
|
|
402
|
-
If you need to later update
|
399
|
+
If you need to later update Not1MM, you can do so with:
|
403
400
|
|
404
401
|
```bash
|
405
402
|
# Update not1mm
|
@@ -422,7 +419,7 @@ source rebuild.sh
|
|
422
419
|
```
|
423
420
|
|
424
421
|
from the root directory. This installs a build chain and a local editable copy
|
425
|
-
of
|
422
|
+
of Not1MM.
|
426
423
|
|
427
424
|
There's two ways to launch the program from the local editable copy.
|
428
425
|
|
@@ -625,14 +622,10 @@ On the Options TAB you can:
|
|
625
622
|
|
626
623
|
## Logging WSJT-X FT8/FT4/ETC and FLDIGI RTTY contacts
|
627
624
|
|
628
|
-
|
629
|
-
No setup is needed to be done on
|
625
|
+
Not1MM listens for WSJT-X UDP traffic on the Multicast address 224.0.0.1:2237.
|
626
|
+
No setup is needed to be done on Not1MM's side. That's good because I'm lazy.
|
630
627
|
|
631
|
-
|
632
|
-
way. It just keeps asking what was the last QSO and compares it to the previous response.
|
633
|
-
If it's different, it's new.~~
|
634
|
-
|
635
|
-
not1mm watches for fldigi qso's by watching for UDP traffic from fldigi on 127.0.0.1:9876.
|
628
|
+
Not1MM watches for fldigi qso's by watching for UDP traffic from fldigi on 127.0.0.1:9876.
|
636
629
|
|
637
630
|

|
638
631
|
|
@@ -810,6 +803,14 @@ Clicking on any of these items will change the callsign field.
|
|
810
803
|
|
811
804
|

|
812
805
|
|
806
|
+
### The Rate Window
|
807
|
+
|
808
|
+
`Window`>`Rate Window`
|
809
|
+
|
810
|
+
This window contains QSO rates and counts.
|
811
|
+
|
812
|
+

|
813
|
+
|
813
814
|
### The Remote VFO Window
|
814
815
|
|
815
816
|
You can control the VFO on a remote rig by following the directions listed in
|
@@ -20,7 +20,6 @@
|
|
20
20
|
- [The What](#the-what)
|
21
21
|
- [Target Environment](#target-environment)
|
22
22
|
- [The Why](#the-why)
|
23
|
-
- [General logging](#general-logging)
|
24
23
|
- [Current state](#current-state)
|
25
24
|
- [Code maturity](#code-maturity)
|
26
25
|
- [Data and RTTY](#data-and-rtty)
|
@@ -84,6 +83,7 @@
|
|
84
83
|
- [Editing a contact](#editing-a-contact)
|
85
84
|
- [The Bandmap Window](#the-bandmap-window)
|
86
85
|
- [The Check Window](#the-check-window)
|
86
|
+
- [The Rate Window](#the-rate-window)
|
87
87
|
- [The Remote VFO Window](#the-remote-vfo-window)
|
88
88
|
- [Cabrillo](#cabrillo)
|
89
89
|
- [ADIF](#adif)
|
@@ -133,11 +133,6 @@ I'm a casual contester and could not find any contesting software for Linux that
|
|
133
133
|
I wanted to use. There is [Tucnak](http://tucnak.nagano.cz/) which is very robust
|
134
134
|
and mature. It just wasn't for me.
|
135
135
|
|
136
|
-
### General logging
|
137
|
-
|
138
|
-
In short... Don't. There are much better general purpose QSO logging programs.
|
139
|
-
Try QLog or CQRLog.
|
140
|
-
|
141
136
|
## Current state
|
142
137
|
|
143
138
|
### Code maturity
|
@@ -209,6 +204,8 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
|
|
209
204
|
|
210
205
|
## Recent Changes (Polishing the Turd)
|
211
206
|
|
207
|
+
- [25-1-23] Added a basic rate window. Changed DB to WAL mode.
|
208
|
+
- [25-1-15] Fix bug in ADIF output where mode showed as CW-R and not CW.
|
212
209
|
- [25-1-6] Altered RTTY RU UDP ADIF parse.
|
213
210
|
- [25-1-1] Added ARRL RTTY RU.
|
214
211
|
|
@@ -216,7 +213,7 @@ See [CHANGELOG.md](CHANGELOG.md) for prior changes.
|
|
216
213
|
|
217
214
|
## Flatpak
|
218
215
|
|
219
|
-
I've tried for a couple days to get
|
216
|
+
I've tried for a couple days to get Not1MM to build as a flatpak. I've failed.
|
220
217
|
It keeps failing at building numpy. If you happen to be a flatpak savant, please
|
221
218
|
feel free to look at com.github.mbridak.not1mm.yaml and python3-modules.yaml and
|
222
219
|
clue me into the black magic needed to get it to work.
|
@@ -225,7 +222,7 @@ clue me into the black magic needed to get it to work.
|
|
225
222
|
|
226
223
|
### Prerequisites
|
227
224
|
|
228
|
-
|
225
|
+
Not1MM requires:
|
229
226
|
|
230
227
|
- Python 3.9+
|
231
228
|
- PyQt6
|
@@ -237,7 +234,7 @@ You should install these through your distribution's package manager before cont
|
|
237
234
|
### Common installation recipes for Ubuntu and Fedora
|
238
235
|
|
239
236
|
I've taken the time to install some common Linux distributions into a VM and
|
240
|
-
noted the minimum steps needed to install
|
237
|
+
noted the minimum steps needed to install Not1MM.
|
241
238
|
|
242
239
|
<details>
|
243
240
|
|
@@ -361,14 +358,14 @@ python3 -m pipx ensurepath
|
|
361
358
|
|
362
359
|
#### Installing with pipx
|
363
360
|
|
364
|
-
Then installing
|
361
|
+
Then installing Not1MM is as simple as:
|
365
362
|
|
366
363
|
```bash
|
367
364
|
# Install not1mm
|
368
365
|
pipx install not1mm
|
369
366
|
```
|
370
367
|
|
371
|
-
If you need to later update
|
368
|
+
If you need to later update Not1MM, you can do so with:
|
372
369
|
|
373
370
|
```bash
|
374
371
|
# Update not1mm
|
@@ -391,7 +388,7 @@ source rebuild.sh
|
|
391
388
|
```
|
392
389
|
|
393
390
|
from the root directory. This installs a build chain and a local editable copy
|
394
|
-
of
|
391
|
+
of Not1MM.
|
395
392
|
|
396
393
|
There's two ways to launch the program from the local editable copy.
|
397
394
|
|
@@ -594,14 +591,10 @@ On the Options TAB you can:
|
|
594
591
|
|
595
592
|
## Logging WSJT-X FT8/FT4/ETC and FLDIGI RTTY contacts
|
596
593
|
|
597
|
-
|
598
|
-
No setup is needed to be done on
|
594
|
+
Not1MM listens for WSJT-X UDP traffic on the Multicast address 224.0.0.1:2237.
|
595
|
+
No setup is needed to be done on Not1MM's side. That's good because I'm lazy.
|
599
596
|
|
600
|
-
|
601
|
-
way. It just keeps asking what was the last QSO and compares it to the previous response.
|
602
|
-
If it's different, it's new.~~
|
603
|
-
|
604
|
-
not1mm watches for fldigi qso's by watching for UDP traffic from fldigi on 127.0.0.1:9876.
|
597
|
+
Not1MM watches for fldigi qso's by watching for UDP traffic from fldigi on 127.0.0.1:9876.
|
605
598
|
|
606
599
|

|
607
600
|
|
@@ -779,6 +772,14 @@ Clicking on any of these items will change the callsign field.
|
|
779
772
|
|
780
773
|

|
781
774
|
|
775
|
+
### The Rate Window
|
776
|
+
|
777
|
+
`Window`>`Rate Window`
|
778
|
+
|
779
|
+
This window contains QSO rates and counts.
|
780
|
+
|
781
|
+

|
782
|
+
|
782
783
|
### The Remote VFO Window
|
783
784
|
|
784
785
|
You can control the VFO on a remote rig by following the directions listed in
|
@@ -73,6 +73,7 @@ from not1mm.logwindow import LogWindow
|
|
73
73
|
from not1mm.checkwindow import CheckWindow
|
74
74
|
from not1mm.bandmap import BandMapWindow
|
75
75
|
from not1mm.vfo import VfoWindow
|
76
|
+
from not1mm.ratewindow import RateWindow
|
76
77
|
from not1mm.radio import Radio
|
77
78
|
from not1mm.voice_keying import Voice
|
78
79
|
from not1mm.lookupservice import LookupService
|
@@ -136,6 +137,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
136
137
|
"bandmapwindow": False,
|
137
138
|
"checkwindow": False,
|
138
139
|
"vfowindow": False,
|
140
|
+
"ratewindow": False,
|
139
141
|
"darkmode": True,
|
140
142
|
}
|
141
143
|
appstarted = False
|
@@ -236,6 +238,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
236
238
|
self.actionLog_Window.triggered.connect(self.launch_log_window)
|
237
239
|
self.actionBandmap.triggered.connect(self.launch_bandmap_window)
|
238
240
|
self.actionCheck_Window.triggered.connect(self.launch_check_window)
|
241
|
+
self.actionRate_Window.triggered.connect(self.launch_rate_window)
|
239
242
|
self.actionVFO.triggered.connect(self.launch_vfo)
|
240
243
|
self.actionRecalculate_Mults.triggered.connect(self.recalculate_mults)
|
241
244
|
self.actionLoad_Call_History_File.triggered.connect(self.load_call_history)
|
@@ -642,6 +645,15 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
642
645
|
self.check_window.hide()
|
643
646
|
self.check_window.message.connect(self.dockwidget_message)
|
644
647
|
|
648
|
+
self.show_splash_msg("Setting up RateWindow.")
|
649
|
+
self.rate_window = RateWindow()
|
650
|
+
self.rate_window.setObjectName("rate-window")
|
651
|
+
if os.environ.get("WAYLAND_DISPLAY") and old_Qt is True:
|
652
|
+
self.rate_window.setFeatures(dockfeatures)
|
653
|
+
self.addDockWidget(Qt.DockWidgetArea.RightDockWidgetArea, self.rate_window)
|
654
|
+
self.rate_window.hide()
|
655
|
+
self.rate_window.message.connect(self.dockwidget_message)
|
656
|
+
|
645
657
|
self.show_splash_msg("Setting up VFOWindow.")
|
646
658
|
self.vfo_window = VfoWindow()
|
647
659
|
self.vfo_window.setObjectName("vfo-window")
|
@@ -692,6 +704,15 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
692
704
|
self.check_window.hide()
|
693
705
|
self.check_window.setActive(False)
|
694
706
|
|
707
|
+
self.actionRate_Window.setChecked(self.pref.get("ratewindow", False))
|
708
|
+
if self.actionRate_Window.isChecked():
|
709
|
+
print(f"===============ratewindow=============")
|
710
|
+
self.rate_window.show()
|
711
|
+
self.rate_window.setActive(True)
|
712
|
+
else:
|
713
|
+
self.rate_window.hide()
|
714
|
+
self.rate_window.setActive(False)
|
715
|
+
|
695
716
|
self.actionVFO.setChecked(self.pref.get("vfowindow", False))
|
696
717
|
if self.actionVFO.isChecked():
|
697
718
|
self.vfo_window.show()
|
@@ -1841,6 +1862,17 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
1841
1862
|
self.check_window.hide()
|
1842
1863
|
self.check_window.setActive(False)
|
1843
1864
|
|
1865
|
+
def launch_rate_window(self) -> None:
|
1866
|
+
"""Launch the check window"""
|
1867
|
+
self.pref["ratewindow"] = self.actionRate_Window.isChecked()
|
1868
|
+
self.write_preference()
|
1869
|
+
if self.actionRate_Window.isChecked():
|
1870
|
+
self.rate_window.show()
|
1871
|
+
self.rate_window.setActive(True)
|
1872
|
+
else:
|
1873
|
+
self.rate_window.hide()
|
1874
|
+
self.rate_window.setActive(False)
|
1875
|
+
|
1844
1876
|
def launch_vfo(self) -> None:
|
1845
1877
|
"""Launch the VFO window"""
|
1846
1878
|
self.pref["vfowindow"] = self.actionVFO.isChecked()
|
@@ -1513,6 +1513,7 @@
|
|
1513
1513
|
<addaction name="actionLog_Window"/>
|
1514
1514
|
<addaction name="actionBandmap"/>
|
1515
1515
|
<addaction name="actionCheck_Window"/>
|
1516
|
+
<addaction name="actionRate_Window"/>
|
1516
1517
|
<addaction name="actionVFO"/>
|
1517
1518
|
</widget>
|
1518
1519
|
<widget class="QMenu" name="menuOther">
|
@@ -1961,6 +1962,19 @@
|
|
1961
1962
|
</font>
|
1962
1963
|
</property>
|
1963
1964
|
</action>
|
1965
|
+
<action name="actionRate_Window">
|
1966
|
+
<property name="checkable">
|
1967
|
+
<bool>true</bool>
|
1968
|
+
</property>
|
1969
|
+
<property name="text">
|
1970
|
+
<string>Rate Window</string>
|
1971
|
+
</property>
|
1972
|
+
<property name="font">
|
1973
|
+
<font>
|
1974
|
+
<family>JetBrains Mono ExtraLight</family>
|
1975
|
+
</font>
|
1976
|
+
</property>
|
1977
|
+
</action>
|
1964
1978
|
<action name="actionVFO">
|
1965
1979
|
<property name="checkable">
|
1966
1980
|
<bool>true</bool>
|