not1mm 24.10.10__tar.gz → 24.10.13__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.10.10 → not1mm-24.10.13}/PKG-INFO +41 -39
- {not1mm-24.10.10 → not1mm-24.10.13}/README.md +40 -38
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/__main__.py +16 -2
- not1mm-24.10.13/not1mm/lib/version.py +3 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/cq_ww_cw.py +3 -10
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/cq_ww_rtty.py +125 -16
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/cq_ww_ssb.py +99 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/cwt.py +99 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/k1usn_sst.py +99 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/weekly_rtty.py +105 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm.egg-info/PKG-INFO +41 -39
- {not1mm-24.10.10 → not1mm-24.10.13}/pyproject.toml +1 -1
- not1mm-24.10.10/not1mm/lib/version.py +0 -3
- {not1mm-24.10.10 → not1mm-24.10.13}/LICENSE +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/__init__.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/bandmap.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/checkwindow.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/JetBrainsMono-ExtraLight.ttf +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/MASTER.SCP +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/about.ui +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/alpha bravo charlie delta.txt +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/bandmap.ui +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/check.png +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/checkwindow.ui +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/configuration.ui +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/contests.sql +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/cty.json +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/cwmacros.txt +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/donors.html +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/editcontact.ui +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/editmacro.ui +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/greendot.png +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/k6gte-not1mm.desktop +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/k6gte.not1mm-128.png +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/k6gte.not1mm-32.png +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/k6gte.not1mm-64.png +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/logwindow.ui +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/logwindowx.ui +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/main.ui +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/new_contest.ui +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/not1mm.html +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/opon.ui +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/0.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/1.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/2.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/3.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/4.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/5.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/6.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/7.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/73.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/8.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/9.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/a.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/again.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/b.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/c.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/contest.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/cq.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/d.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/e.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/f.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/g.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/h.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/i.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/j.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/k.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/k6gte.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/l.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/m.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/mynumber.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/n.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/nil.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/o.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/p.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/q.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/r.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/roger.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/s.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/space.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/t.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/thankyou.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/thankyouqrz.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/u.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/v.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/w.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/x.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/y.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/yourcall.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/phonetics/z.wav +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/pickcontest.ui +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/radio_green.png +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/radio_grey.png +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/radio_red.png +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/reddot.png +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/rttymacros.txt +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/settings.ui +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/splash.png +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/ssbmacros.txt +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/data/vfo.ui +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/fsutils.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/lib/__init__.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/lib/about.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/lib/cat_interface.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/lib/cwinterface.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/lib/database.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/lib/edit_contact.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/lib/edit_macro.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/lib/edit_opon.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/lib/edit_station.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/lib/fldigi_sendstring.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/lib/fldigi_watcher.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/lib/ft8_watcher.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/lib/ham_utility.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/lib/lookup.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/lib/multicast.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/lib/n1mm.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/lib/new_contest.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/lib/playsound.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/lib/plugin_common.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/lib/select_contest.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/lib/settings.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/lib/super_check_partial.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/lib/versiontest.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/logwindow.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/lookupservice.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/10_10_fall_cw.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/10_10_spring_cw.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/10_10_summer_phone.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/10_10_winter_phone.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/__init__.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/arrl_10m.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/arrl_dx_cw.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/arrl_dx_ssb.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/arrl_field_day.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/arrl_rtty_ru.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/arrl_ss_cw.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/arrl_ss_phone.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/arrl_vhf_jan.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/arrl_vhf_jun.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/arrl_vhf_sep.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/canada_day.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/cq_160_cw.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/cq_160_ssb.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/cq_wpx_cw.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/cq_wpx_rtty.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/cq_wpx_ssb.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/general_logging.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/helvetia.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/iaru_fieldday_r1_cw.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/iaru_fieldday_r1_ssb.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/iaru_hf.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/icwc_mst.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/jidx_cw.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/jidx_ph.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/naqp_cw.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/naqp_ssb.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/phone_weekly_test.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/ref_cw.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/stew_perry_topband.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/plugins/winter_field_day.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/radio.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/test.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/vfo.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm/voice_keying.py +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm.egg-info/SOURCES.txt +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm.egg-info/dependency_links.txt +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm.egg-info/entry_points.txt +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm.egg-info/requires.txt +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/not1mm.egg-info/top_level.txt +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/setup.cfg +0 -0
- {not1mm-24.10.10 → not1mm-24.10.13}/test/contests.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: not1mm
|
3
|
-
Version: 24.10.
|
3
|
+
Version: 24.10.13
|
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
|
@@ -118,16 +118,16 @@ Requires-Dist: Levenshtein
|
|
118
118
|
- [Cabrillo](#cabrillo)
|
119
119
|
- [ADIF](#adif)
|
120
120
|
- [Recalulate Mults](#recalulate-mults)
|
121
|
-
- [Testing Out ESM Currently only in CQ WW
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
121
|
+
- [Testing Out ESM Currently only in CQ WW](#testing-out-esm-currently-only-in-cq-ww)
|
122
|
+
- [Run States](#run-states)
|
123
|
+
- [CQ](#cq)
|
124
|
+
- [Call Entered send His Call and the Exchange](#call-entered-send-his-call-and-the-exchange)
|
125
|
+
- [Empty exchange field send AGN till you get it](#empty-exchange-field-send-agn-till-you-get-it)
|
126
|
+
- [Exchange field filled, send TU QRZ and logs it](#exchange-field-filled-send-tu-qrz-and-logs-it)
|
127
|
+
- [S\&P States](#sp-states)
|
128
|
+
- [With his call entered, Send your call](#with-his-call-entered-send-your-call)
|
129
|
+
- [If no exchange entered send AGN](#if-no-exchange-entered-send-agn)
|
130
|
+
- [With exchange entered, send your exchange and log it](#with-exchange-entered-send-your-exchange-and-log-it)
|
131
131
|
- [Contest specific notes](#contest-specific-notes)
|
132
132
|
- [ARRL Sweekstakes](#arrl-sweekstakes)
|
133
133
|
- [The exchange parser](#the-exchange-parser)
|
@@ -181,7 +181,9 @@ when the program craps the bed. I'm only one guy, so if you see a bug let me kno
|
|
181
181
|
|
182
182
|
I've recently added portions of code to watch for WSTJ-X and fldigi QSOs. I've added
|
183
183
|
the Weekly RTTY Test, So RTTY could be tested. Also added FT8/4 and RTTY to ARRL Field
|
184
|
-
Day and ARRL VHF.
|
184
|
+
Day and ARRL VHF. Found works better if you don't use FlDigi for making the QSO at all.
|
185
|
+
Rather just using it as a RTTY modem and sending the text for it to send from Not1MM
|
186
|
+
using the function keys or ESM.
|
185
187
|
|
186
188
|
### Other not so supported contests
|
187
189
|
|
@@ -212,23 +214,25 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
|
|
212
214
|
- ARRL VHF January, June, September
|
213
215
|
- CQ 160 CW, SSB
|
214
216
|
- CQ WPX CW, RTTY, SSB
|
215
|
-
- CQ World Wide CW, RTTY, SSB
|
216
|
-
- CWOps CWT
|
217
|
+
- .CQ World Wide CW, RTTY, SSB
|
218
|
+
- .CWOps CWT
|
217
219
|
- Helvetia
|
218
220
|
- IARU Fieldday R1 CW, SSB
|
219
221
|
- IARU HF
|
220
222
|
- ICWC MST
|
221
223
|
- Japan International DX CW, SSB
|
222
|
-
- K1USN Slow Speed Test
|
224
|
+
- .K1USN Slow Speed Test
|
223
225
|
- NAQP CW, SSB
|
224
226
|
- Phone Weekly Test
|
225
227
|
- RAC Canada Day
|
226
228
|
- Stew Perry Topband
|
227
|
-
- Weekly RTTY
|
229
|
+
- .Weekly RTTY
|
228
230
|
- Winter Field Day
|
229
231
|
|
230
232
|
## Recent Changes
|
231
233
|
|
234
|
+
- [24-10-13] Added ESM to Weekly RTTY, K1USN and CWT.
|
235
|
+
- [24-10-11] added ESM to CQWW SSB and RTTY.
|
232
236
|
- [24-10-10] Add ESM to CQ WW CW to test it out.
|
233
237
|
- [24-10-8] Fix crash on Tune to spot. Change placeholder text for the CW port for those unable to read documentation.
|
234
238
|
- [24-10-6] Removed 60, 30, 17 and 12M from the default list of bands.
|
@@ -730,7 +734,7 @@ is this has happened, since the gridsquare will replace the word "Regional".
|
|
730
734
|
| [TAB] | Move cursor to the right one field. |
|
731
735
|
| [Shift-Tab] | Move cursor left One field. |
|
732
736
|
| [SPACE] | When in the callsign field, will move the input to the first field needed for the exchange. |
|
733
|
-
| [Enter] | Submits the fields to the log. |
|
737
|
+
| [Enter] | Submits the fields to the log. Unless ESM is enabled. |
|
734
738
|
| [F1-F12] | Send (CW/RTTY/Voice) macros. |
|
735
739
|
| [CTRL-S] | Spot Callsign to the cluster. |
|
736
740
|
| [CTRL-M] | Mark Callsign to the bandmap window to work later. |
|
@@ -839,15 +843,14 @@ After editing a contact and before generating a Cabrillo file. There is a Misc
|
|
839
843
|
menu option that will recalculate the multipliers incase an edit had caused a
|
840
844
|
change.
|
841
845
|
|
842
|
-
## Testing Out ESM Currently only in CQ WW
|
846
|
+
## Testing Out ESM Currently only in CQ WW
|
843
847
|
|
844
848
|
I caved and started working on ESM or Enter Sends Message. Currently it is only
|
845
|
-
working in the CQ WW
|
846
|
-
|
847
|
-

|
849
|
+
working in the CQ WW. To test it out you can go to `FILE -> Configuration Settings`
|
848
850
|
|
851
|
+

|
849
852
|
|
850
|
-
Check the mark to
|
853
|
+
Check the mark to Enable ESM and tell it which function keys do what. The keys will need
|
851
854
|
to have the same function in both Run and S&P modes. The function keys will highlight
|
852
855
|
green depending on the state of the input fields. The green keys will be sent if you
|
853
856
|
press the Enter key. You should use the Space bar to move to another field.
|
@@ -855,38 +858,37 @@ press the Enter key. You should use the Space bar to move to another field.
|
|
855
858
|
The contact will be automatically logged once all the needed info is collected and the
|
856
859
|
QRZ (for Run) or Exchange (for S&P) is sent.
|
857
860
|
|
858
|
-
|
859
|
-
|
860
|
-
### CQ
|
861
|
+
### Run States
|
861
862
|
|
862
|
-
|
863
|
+
#### CQ
|
863
864
|
|
864
|
-
|
865
|
+

|
865
866
|
|
866
|
-
|
867
|
+
#### Call Entered send His Call and the Exchange
|
867
868
|
|
868
|
-
|
869
|
+

|
869
870
|
|
870
|
-
|
871
|
+
#### Empty exchange field send AGN till you get it
|
871
872
|
|
872
|
-
|
873
|
+

|
873
874
|
|
874
|
-
|
875
|
+
#### Exchange field filled, send TU QRZ and logs it
|
875
876
|
|
876
|
-
|
877
|
+

|
877
878
|
|
878
|
-
###
|
879
|
+
### S&P States
|
879
880
|
|
880
|
-
|
881
|
+
#### With his call entered, Send your call
|
881
882
|
|
882
|
-
|
883
|
+

|
883
884
|
|
884
|
-
|
885
|
+
#### If no exchange entered send AGN
|
885
886
|
|
886
|
-
|
887
|
+

|
887
888
|
|
888
|
-
|
889
|
+
#### With exchange entered, send your exchange and log it
|
889
890
|
|
891
|
+

|
890
892
|
|
891
893
|
## Contest specific notes
|
892
894
|
|
@@ -87,16 +87,16 @@
|
|
87
87
|
- [Cabrillo](#cabrillo)
|
88
88
|
- [ADIF](#adif)
|
89
89
|
- [Recalulate Mults](#recalulate-mults)
|
90
|
-
- [Testing Out ESM Currently only in CQ WW
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
90
|
+
- [Testing Out ESM Currently only in CQ WW](#testing-out-esm-currently-only-in-cq-ww)
|
91
|
+
- [Run States](#run-states)
|
92
|
+
- [CQ](#cq)
|
93
|
+
- [Call Entered send His Call and the Exchange](#call-entered-send-his-call-and-the-exchange)
|
94
|
+
- [Empty exchange field send AGN till you get it](#empty-exchange-field-send-agn-till-you-get-it)
|
95
|
+
- [Exchange field filled, send TU QRZ and logs it](#exchange-field-filled-send-tu-qrz-and-logs-it)
|
96
|
+
- [S\&P States](#sp-states)
|
97
|
+
- [With his call entered, Send your call](#with-his-call-entered-send-your-call)
|
98
|
+
- [If no exchange entered send AGN](#if-no-exchange-entered-send-agn)
|
99
|
+
- [With exchange entered, send your exchange and log it](#with-exchange-entered-send-your-exchange-and-log-it)
|
100
100
|
- [Contest specific notes](#contest-specific-notes)
|
101
101
|
- [ARRL Sweekstakes](#arrl-sweekstakes)
|
102
102
|
- [The exchange parser](#the-exchange-parser)
|
@@ -150,7 +150,9 @@ when the program craps the bed. I'm only one guy, so if you see a bug let me kno
|
|
150
150
|
|
151
151
|
I've recently added portions of code to watch for WSTJ-X and fldigi QSOs. I've added
|
152
152
|
the Weekly RTTY Test, So RTTY could be tested. Also added FT8/4 and RTTY to ARRL Field
|
153
|
-
Day and ARRL VHF.
|
153
|
+
Day and ARRL VHF. Found works better if you don't use FlDigi for making the QSO at all.
|
154
|
+
Rather just using it as a RTTY modem and sending the text for it to send from Not1MM
|
155
|
+
using the function keys or ESM.
|
154
156
|
|
155
157
|
### Other not so supported contests
|
156
158
|
|
@@ -181,23 +183,25 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
|
|
181
183
|
- ARRL VHF January, June, September
|
182
184
|
- CQ 160 CW, SSB
|
183
185
|
- CQ WPX CW, RTTY, SSB
|
184
|
-
- CQ World Wide CW, RTTY, SSB
|
185
|
-
- CWOps CWT
|
186
|
+
- .CQ World Wide CW, RTTY, SSB
|
187
|
+
- .CWOps CWT
|
186
188
|
- Helvetia
|
187
189
|
- IARU Fieldday R1 CW, SSB
|
188
190
|
- IARU HF
|
189
191
|
- ICWC MST
|
190
192
|
- Japan International DX CW, SSB
|
191
|
-
- K1USN Slow Speed Test
|
193
|
+
- .K1USN Slow Speed Test
|
192
194
|
- NAQP CW, SSB
|
193
195
|
- Phone Weekly Test
|
194
196
|
- RAC Canada Day
|
195
197
|
- Stew Perry Topband
|
196
|
-
- Weekly RTTY
|
198
|
+
- .Weekly RTTY
|
197
199
|
- Winter Field Day
|
198
200
|
|
199
201
|
## Recent Changes
|
200
202
|
|
203
|
+
- [24-10-13] Added ESM to Weekly RTTY, K1USN and CWT.
|
204
|
+
- [24-10-11] added ESM to CQWW SSB and RTTY.
|
201
205
|
- [24-10-10] Add ESM to CQ WW CW to test it out.
|
202
206
|
- [24-10-8] Fix crash on Tune to spot. Change placeholder text for the CW port for those unable to read documentation.
|
203
207
|
- [24-10-6] Removed 60, 30, 17 and 12M from the default list of bands.
|
@@ -699,7 +703,7 @@ is this has happened, since the gridsquare will replace the word "Regional".
|
|
699
703
|
| [TAB] | Move cursor to the right one field. |
|
700
704
|
| [Shift-Tab] | Move cursor left One field. |
|
701
705
|
| [SPACE] | When in the callsign field, will move the input to the first field needed for the exchange. |
|
702
|
-
| [Enter] | Submits the fields to the log. |
|
706
|
+
| [Enter] | Submits the fields to the log. Unless ESM is enabled. |
|
703
707
|
| [F1-F12] | Send (CW/RTTY/Voice) macros. |
|
704
708
|
| [CTRL-S] | Spot Callsign to the cluster. |
|
705
709
|
| [CTRL-M] | Mark Callsign to the bandmap window to work later. |
|
@@ -808,15 +812,14 @@ After editing a contact and before generating a Cabrillo file. There is a Misc
|
|
808
812
|
menu option that will recalculate the multipliers incase an edit had caused a
|
809
813
|
change.
|
810
814
|
|
811
|
-
## Testing Out ESM Currently only in CQ WW
|
815
|
+
## Testing Out ESM Currently only in CQ WW
|
812
816
|
|
813
817
|
I caved and started working on ESM or Enter Sends Message. Currently it is only
|
814
|
-
working in the CQ WW
|
815
|
-
|
816
|
-

|
818
|
+
working in the CQ WW. To test it out you can go to `FILE -> Configuration Settings`
|
817
819
|
|
820
|
+

|
818
821
|
|
819
|
-
Check the mark to
|
822
|
+
Check the mark to Enable ESM and tell it which function keys do what. The keys will need
|
820
823
|
to have the same function in both Run and S&P modes. The function keys will highlight
|
821
824
|
green depending on the state of the input fields. The green keys will be sent if you
|
822
825
|
press the Enter key. You should use the Space bar to move to another field.
|
@@ -824,38 +827,37 @@ press the Enter key. You should use the Space bar to move to another field.
|
|
824
827
|
The contact will be automatically logged once all the needed info is collected and the
|
825
828
|
QRZ (for Run) or Exchange (for S&P) is sent.
|
826
829
|
|
827
|
-
|
828
|
-
|
829
|
-
### CQ
|
830
|
+
### Run States
|
830
831
|
|
831
|
-
|
832
|
+
#### CQ
|
832
833
|
|
833
|
-
|
834
|
+

|
834
835
|
|
835
|
-
|
836
|
+
#### Call Entered send His Call and the Exchange
|
836
837
|
|
837
|
-
|
838
|
+

|
838
839
|
|
839
|
-
|
840
|
+
#### Empty exchange field send AGN till you get it
|
840
841
|
|
841
|
-
|
842
|
+

|
842
843
|
|
843
|
-
|
844
|
+
#### Exchange field filled, send TU QRZ and logs it
|
844
845
|
|
845
|
-
|
846
|
+

|
846
847
|
|
847
|
-
###
|
848
|
+
### S&P States
|
848
849
|
|
849
|
-
|
850
|
+
#### With his call entered, Send your call
|
850
851
|
|
851
|
-
|
852
|
+

|
852
853
|
|
853
|
-
|
854
|
+
#### If no exchange entered send AGN
|
854
855
|
|
855
|
-
|
856
|
+

|
856
857
|
|
857
|
-
|
858
|
+
#### With exchange entered, send your exchange and log it
|
858
859
|
|
860
|
+

|
859
861
|
|
860
862
|
## Contest specific notes
|
861
863
|
|
@@ -199,6 +199,13 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
199
199
|
self.setCorner(Qt.Corner.BottomLeftCorner, Qt.DockWidgetArea.LeftDockWidgetArea)
|
200
200
|
uic.loadUi(fsutils.APP_DATA_PATH / "main.ui", self)
|
201
201
|
QApplication.instance().focusObjectChanged.connect(self.on_focus_changed)
|
202
|
+
self.inputs_dict = {
|
203
|
+
self.callsign: "callsign",
|
204
|
+
self.sent: "sent",
|
205
|
+
self.receive: "receive",
|
206
|
+
self.other_1: "other_1",
|
207
|
+
self.other_2: "other_2",
|
208
|
+
}
|
202
209
|
self.cw_entry.hide()
|
203
210
|
self.leftdot.hide()
|
204
211
|
self.rightdot.hide()
|
@@ -2107,6 +2114,10 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
2107
2114
|
float(self.radio_state.get("vfoa", 0.0)) / 1000, 2
|
2108
2115
|
)
|
2109
2116
|
self.contact["Mode"] = self.radio_state.get("mode", "")
|
2117
|
+
self.contact["Freq"] = round(float(self.radio_state.get("vfoa", 0.0)) / 1000, 2)
|
2118
|
+
self.contact["QSXFreq"] = round(
|
2119
|
+
float(self.radio_state.get("vfoa", 0.0)) / 1000, 2
|
2120
|
+
)
|
2110
2121
|
self.contact["ContestName"] = self.contest.cabrillo_name
|
2111
2122
|
self.contact["ContestNR"] = self.pref.get("contest", "0")
|
2112
2123
|
self.contact["StationPrefix"] = self.station.get("Call", "")
|
@@ -2465,7 +2476,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
2465
2476
|
app.processEvents()
|
2466
2477
|
self.rig_control.ptt_off()
|
2467
2478
|
|
2468
|
-
def process_function_key(self, function_key) -> None:
|
2479
|
+
def process_function_key(self, function_key, rttysendrx=True) -> None:
|
2469
2480
|
"""
|
2470
2481
|
Called when a function key is clicked.
|
2471
2482
|
|
@@ -2495,7 +2506,10 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
2495
2506
|
"DIGI-U",
|
2496
2507
|
"DIGI-L",
|
2497
2508
|
]:
|
2498
|
-
self.fldigi_util.send_string(
|
2509
|
+
self.fldigi_util.send_string(
|
2510
|
+
self.process_macro(function_key.toolTip()), rxafter=rttysendrx
|
2511
|
+
)
|
2512
|
+
return
|
2499
2513
|
if self.cw:
|
2500
2514
|
if self.pref.get("cwtype") == 3 and self.rig_control is not None:
|
2501
2515
|
self.rig_control.sendcw(self.process_macro(function_key.toolTip()))
|
@@ -403,15 +403,8 @@ def process_esm(self, new_focused_widget=None, with_enter=False):
|
|
403
403
|
# self.other_1
|
404
404
|
# self.other_2
|
405
405
|
|
406
|
-
inputs = {
|
407
|
-
self.callsign: "callsign",
|
408
|
-
self.sent: "sent",
|
409
|
-
self.receive: "receive",
|
410
|
-
self.other_1: "other_1",
|
411
|
-
self.other_2: "other_2",
|
412
|
-
}
|
413
406
|
if new_focused_widget is not None:
|
414
|
-
self.current_widget =
|
407
|
+
self.current_widget = self.inputs_dict.get(new_focused_widget)
|
415
408
|
|
416
409
|
# print(f"checking esm {self.current_widget=} {with_enter=} {self.pref.get("run_state")=}")
|
417
410
|
|
@@ -444,7 +437,7 @@ def process_esm(self, new_focused_widget=None, with_enter=False):
|
|
444
437
|
buttons_to_send.append(self.esm_dict["HISCALL"])
|
445
438
|
buttons_to_send.append(self.esm_dict["EXCH"])
|
446
439
|
|
447
|
-
|
440
|
+
elif self.current_widget == "other_2":
|
448
441
|
if self.other_2.text() == "":
|
449
442
|
self.make_button_green(self.esm_dict["AGN"])
|
450
443
|
buttons_to_send.append(self.esm_dict["AGN"])
|
@@ -469,7 +462,7 @@ def process_esm(self, new_focused_widget=None, with_enter=False):
|
|
469
462
|
self.make_button_green(self.esm_dict["MYCALL"])
|
470
463
|
buttons_to_send.append(self.esm_dict["MYCALL"])
|
471
464
|
|
472
|
-
|
465
|
+
elif self.current_widget == "other_2":
|
473
466
|
if self.other_2.text() == "":
|
474
467
|
self.make_button_green(self.esm_dict["AGN"])
|
475
468
|
buttons_to_send.append(self.esm_dict["AGN"])
|
@@ -146,7 +146,7 @@ def set_contact_vars(self):
|
|
146
146
|
self.contact["ZN"] = self.other_1.text()
|
147
147
|
self.contact["Exchange1"] = self.other_2.text()
|
148
148
|
self.contact["SentNr"] = self.contest_settings.get("SentExchange", 0)
|
149
|
-
|
149
|
+
|
150
150
|
|
151
151
|
def predupe(self):
|
152
152
|
"""called after callsign entered"""
|
@@ -195,7 +195,11 @@ def show_mults(self):
|
|
195
195
|
res3_query = f"select count(DISTINCT(Exchange1 || ':' || Band)) as spc_count from dxlog where ContestNR = {self.database.current_contest};"
|
196
196
|
result3 = self.database.exec_sql(res3_query)
|
197
197
|
if result1 and result2 and result3:
|
198
|
-
return
|
198
|
+
return (
|
199
|
+
int(result1.get("zb_count", 0))
|
200
|
+
+ int(result2.get("cb_count", 0))
|
201
|
+
+ int(result3.get("spc_count", 0))
|
202
|
+
)
|
199
203
|
return 0
|
200
204
|
|
201
205
|
|
@@ -366,21 +370,21 @@ def cabrillo(self):
|
|
366
370
|
if themode == "LSB" or themode == "USB":
|
367
371
|
themode = "PH"
|
368
372
|
if themode.strip() in (
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
373
|
+
"RTTY",
|
374
|
+
"RTTY-R",
|
375
|
+
"LSB-D",
|
376
|
+
"USB-D",
|
377
|
+
"AM-D",
|
378
|
+
"FM-D",
|
379
|
+
"DIGI-U",
|
380
|
+
"DIGI-L",
|
381
|
+
"RTTYR",
|
382
|
+
"PKTLSB",
|
383
|
+
"PKTUSB",
|
384
|
+
):
|
381
385
|
themode = "RY"
|
382
|
-
exchange1 = contact.get(
|
383
|
-
if exchange1 ==
|
386
|
+
exchange1 = contact.get("Exchange1", "")
|
387
|
+
if exchange1 == "":
|
384
388
|
exchange1 = "DX"
|
385
389
|
frequency = str(int(contact.get("Freq", "0"))).rjust(5)
|
386
390
|
|
@@ -491,3 +495,108 @@ def ft8_handler(the_packet: dict):
|
|
491
495
|
ALTEREGO.other_1.setText(str(the_packet.get("CQZ", "ERR")))
|
492
496
|
ALTEREGO.other_2.setText(f'{the_packet.get("STATE", "")}'.strip())
|
493
497
|
ALTEREGO.save_contact()
|
498
|
+
|
499
|
+
|
500
|
+
def process_esm(self, new_focused_widget=None, with_enter=False):
|
501
|
+
"""ESM State Machine"""
|
502
|
+
|
503
|
+
# self.pref["run_state"]
|
504
|
+
|
505
|
+
# -----===== Assigned F-Keys =====-----
|
506
|
+
# self.esm_dict["CQ"]
|
507
|
+
# self.esm_dict["EXCH"]
|
508
|
+
# self.esm_dict["QRZ"]
|
509
|
+
# self.esm_dict["AGN"]
|
510
|
+
# self.esm_dict["HISCALL"]
|
511
|
+
# self.esm_dict["MYCALL"]
|
512
|
+
# self.esm_dict["QSOB4"]
|
513
|
+
|
514
|
+
# ----==== text fields ====----
|
515
|
+
# self.callsign
|
516
|
+
# self.sent
|
517
|
+
# self.receive
|
518
|
+
# self.other_1
|
519
|
+
# self.other_2
|
520
|
+
|
521
|
+
if new_focused_widget is not None:
|
522
|
+
self.current_widget = self.inputs_dict.get(new_focused_widget)
|
523
|
+
|
524
|
+
# print(f"checking esm {self.current_widget=} {with_enter=} {self.pref.get("run_state")=}")
|
525
|
+
|
526
|
+
for a_button in [
|
527
|
+
self.F1,
|
528
|
+
self.F2,
|
529
|
+
self.F3,
|
530
|
+
self.F4,
|
531
|
+
self.F5,
|
532
|
+
self.F6,
|
533
|
+
self.F7,
|
534
|
+
self.F8,
|
535
|
+
self.F9,
|
536
|
+
self.F10,
|
537
|
+
self.F11,
|
538
|
+
self.F12,
|
539
|
+
]:
|
540
|
+
self.restore_button_color(a_button)
|
541
|
+
|
542
|
+
buttons_to_send = []
|
543
|
+
|
544
|
+
if self.pref.get("run_state"):
|
545
|
+
if self.current_widget == "callsign":
|
546
|
+
if len(self.callsign.text()) < 3:
|
547
|
+
self.make_button_green(self.esm_dict["CQ"])
|
548
|
+
buttons_to_send.append(self.esm_dict["CQ"])
|
549
|
+
elif len(self.callsign.text()) > 2 and self.callsign.text().isalnum():
|
550
|
+
self.make_button_green(self.esm_dict["HISCALL"])
|
551
|
+
self.make_button_green(self.esm_dict["EXCH"])
|
552
|
+
buttons_to_send.append(self.esm_dict["HISCALL"])
|
553
|
+
buttons_to_send.append(self.esm_dict["EXCH"])
|
554
|
+
|
555
|
+
elif self.current_widget in ["other_1", "other_2"]:
|
556
|
+
if self.other_2.text() == "" or self.other_1.text() == "":
|
557
|
+
self.make_button_green(self.esm_dict["AGN"])
|
558
|
+
buttons_to_send.append(self.esm_dict["AGN"])
|
559
|
+
elif self.other_1.text().isnumeric() and self.other_2.text().isalpha():
|
560
|
+
self.make_button_green(self.esm_dict["QRZ"])
|
561
|
+
buttons_to_send.append(self.esm_dict["QRZ"])
|
562
|
+
buttons_to_send.append("LOGIT")
|
563
|
+
else:
|
564
|
+
self.make_button_green(self.esm_dict["AGN"])
|
565
|
+
buttons_to_send.append(self.esm_dict["AGN"])
|
566
|
+
|
567
|
+
if with_enter is True and bool(len(buttons_to_send)):
|
568
|
+
sendstring = ""
|
569
|
+
for button in buttons_to_send:
|
570
|
+
if button:
|
571
|
+
if button == "LOGIT":
|
572
|
+
self.save_contact()
|
573
|
+
continue
|
574
|
+
sendstring = f"{sendstring}{self.process_macro(button.toolTip())} "
|
575
|
+
self.fldigi_util.send_string(sendstring)
|
576
|
+
else:
|
577
|
+
if self.current_widget == "callsign":
|
578
|
+
if len(self.callsign.text()) > 2 and self.callsign.text().isalnum():
|
579
|
+
self.make_button_green(self.esm_dict["MYCALL"])
|
580
|
+
buttons_to_send.append(self.esm_dict["MYCALL"])
|
581
|
+
|
582
|
+
elif self.current_widget in ["other_1", "other_2"]:
|
583
|
+
if self.other_2.text() == "" or self.other_1.text() == "":
|
584
|
+
self.make_button_green(self.esm_dict["AGN"])
|
585
|
+
buttons_to_send.append(self.esm_dict["AGN"])
|
586
|
+
elif self.other_1.text().isnumeric() and self.other_2.text().isalpha():
|
587
|
+
self.make_button_green(self.esm_dict["EXCH"])
|
588
|
+
buttons_to_send.append(self.esm_dict["EXCH"])
|
589
|
+
buttons_to_send.append("LOGIT")
|
590
|
+
else:
|
591
|
+
self.make_button_green(self.esm_dict["AGN"])
|
592
|
+
buttons_to_send.append(self.esm_dict["AGN"])
|
593
|
+
|
594
|
+
if with_enter is True and bool(len(buttons_to_send)):
|
595
|
+
sendstring = ""
|
596
|
+
for button in buttons_to_send:
|
597
|
+
if button:
|
598
|
+
if button == "LOGIT":
|
599
|
+
self.save_contact()
|
600
|
+
continue
|
601
|
+
sendstring = f"{sendstring}{self.process_macro(button.toolTip())} "
|
602
|
+
self.fldigi_util.send_string(sendstring)
|