not1mm 24.10.8__tar.gz → 24.10.11__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.8 → not1mm-24.10.11}/PKG-INFO +61 -2
- {not1mm-24.10.8 → not1mm-24.10.11}/README.md +60 -1
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/__main__.py +94 -11
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/configuration.ui +585 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/lib/settings.py +53 -0
- not1mm-24.10.11/not1mm/lib/version.py +3 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/cq_ww_cw.py +108 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/cq_ww_rtty.py +134 -16
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/cq_ww_ssb.py +108 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm.egg-info/PKG-INFO +61 -2
- {not1mm-24.10.8 → not1mm-24.10.11}/pyproject.toml +1 -1
- not1mm-24.10.8/not1mm/lib/version.py +0 -3
- {not1mm-24.10.8 → not1mm-24.10.11}/LICENSE +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/__init__.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/bandmap.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/checkwindow.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/JetBrainsMono-ExtraLight.ttf +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/MASTER.SCP +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/about.ui +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/alpha bravo charlie delta.txt +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/bandmap.ui +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/check.png +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/checkwindow.ui +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/contests.sql +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/cty.json +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/cwmacros.txt +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/donors.html +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/editcontact.ui +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/editmacro.ui +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/greendot.png +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/k6gte-not1mm.desktop +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/k6gte.not1mm-128.png +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/k6gte.not1mm-32.png +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/k6gte.not1mm-64.png +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/logwindow.ui +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/logwindowx.ui +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/main.ui +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/new_contest.ui +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/not1mm.html +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/opon.ui +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/0.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/1.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/2.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/3.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/4.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/5.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/6.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/7.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/73.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/8.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/9.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/a.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/again.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/b.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/c.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/contest.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/cq.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/d.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/e.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/f.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/g.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/h.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/i.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/j.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/k.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/k6gte.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/l.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/m.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/mynumber.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/n.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/nil.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/o.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/p.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/q.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/r.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/roger.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/s.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/space.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/t.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/thankyou.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/thankyouqrz.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/u.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/v.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/w.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/x.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/y.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/yourcall.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/phonetics/z.wav +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/pickcontest.ui +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/radio_green.png +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/radio_grey.png +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/radio_red.png +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/reddot.png +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/rttymacros.txt +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/settings.ui +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/splash.png +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/ssbmacros.txt +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/data/vfo.ui +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/fsutils.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/lib/__init__.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/lib/about.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/lib/cat_interface.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/lib/cwinterface.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/lib/database.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/lib/edit_contact.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/lib/edit_macro.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/lib/edit_opon.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/lib/edit_station.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/lib/fldigi_sendstring.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/lib/fldigi_watcher.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/lib/ft8_watcher.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/lib/ham_utility.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/lib/lookup.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/lib/multicast.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/lib/n1mm.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/lib/new_contest.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/lib/playsound.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/lib/plugin_common.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/lib/select_contest.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/lib/super_check_partial.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/lib/versiontest.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/logwindow.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/lookupservice.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/10_10_fall_cw.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/10_10_spring_cw.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/10_10_summer_phone.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/10_10_winter_phone.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/__init__.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/arrl_10m.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/arrl_dx_cw.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/arrl_dx_ssb.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/arrl_field_day.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/arrl_rtty_ru.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/arrl_ss_cw.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/arrl_ss_phone.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/arrl_vhf_jan.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/arrl_vhf_jun.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/arrl_vhf_sep.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/canada_day.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/cq_160_cw.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/cq_160_ssb.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/cq_wpx_cw.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/cq_wpx_rtty.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/cq_wpx_ssb.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/cwt.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/general_logging.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/helvetia.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/iaru_fieldday_r1_cw.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/iaru_fieldday_r1_ssb.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/iaru_hf.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/icwc_mst.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/jidx_cw.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/jidx_ph.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/k1usn_sst.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/naqp_cw.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/naqp_ssb.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/phone_weekly_test.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/ref_cw.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/stew_perry_topband.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/weekly_rtty.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/plugins/winter_field_day.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/radio.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/test.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/vfo.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm/voice_keying.py +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm.egg-info/SOURCES.txt +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm.egg-info/dependency_links.txt +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm.egg-info/entry_points.txt +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm.egg-info/requires.txt +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/not1mm.egg-info/top_level.txt +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/setup.cfg +0 -0
- {not1mm-24.10.8 → not1mm-24.10.11}/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.11
|
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,6 +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](#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)
|
121
131
|
- [Contest specific notes](#contest-specific-notes)
|
122
132
|
- [ARRL Sweekstakes](#arrl-sweekstakes)
|
123
133
|
- [The exchange parser](#the-exchange-parser)
|
@@ -219,6 +229,8 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
|
|
219
229
|
|
220
230
|
## Recent Changes
|
221
231
|
|
232
|
+
- [24-10-11] added ESM to CQWW SSB and RTTY.
|
233
|
+
- [24-10-10] Add ESM to CQ WW CW to test it out.
|
222
234
|
- [24-10-8] Fix crash on Tune to spot. Change placeholder text for the CW port for those unable to read documentation.
|
223
235
|
- [24-10-6] Removed 60, 30, 17 and 12M from the default list of bands.
|
224
236
|
- [24-10-5-1] Store the bandmap spots age timer in the preferences.
|
@@ -828,6 +840,53 @@ After editing a contact and before generating a Cabrillo file. There is a Misc
|
|
828
840
|
menu option that will recalculate the multipliers incase an edit had caused a
|
829
841
|
change.
|
830
842
|
|
843
|
+
## Testing Out ESM Currently only in CQ WW
|
844
|
+
|
845
|
+
I caved and started working on ESM or Enter Sends Message. Currently it is only
|
846
|
+
working in the CQ WW. To test it out you can go to `FILE -> Configuration Settings`
|
847
|
+
|
848
|
+

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

|
863
|
+
|
864
|
+
#### Call Entered send His Call and the Exchange
|
865
|
+
|
866
|
+

|
867
|
+
|
868
|
+
#### Empty exchange field send AGN till you get it
|
869
|
+
|
870
|
+

|
871
|
+
|
872
|
+
#### Exchange field filled, send TU QRZ and logs it
|
873
|
+
|
874
|
+

|
875
|
+
|
876
|
+
### S&P States
|
877
|
+
|
878
|
+
#### With his call entered, Send your call
|
879
|
+
|
880
|
+

|
881
|
+
|
882
|
+
#### If no exchange entered send AGN
|
883
|
+
|
884
|
+

|
885
|
+
|
886
|
+
#### With exchange entered, send your exchange and log it
|
887
|
+
|
888
|
+

|
889
|
+
|
831
890
|
## Contest specific notes
|
832
891
|
|
833
892
|
I found it might be beneficial to have a section devoted to wierd quirky things
|
@@ -869,4 +928,4 @@ The best thing you can do is play around with it to see how it behaves.
|
|
869
928
|
In the `Sent Exchange` field of the New Contest dialog put in the Precidence,
|
870
929
|
Call, Check and Section. Example: `A K6GTE 17 ORG`.
|
871
930
|
|
872
|
-
For the Run Exchange macro I'd put `{HISCALL}
|
931
|
+
For the Run Exchange macro I'd put `{HISCALL} {SENTNR} {EXCH}`.
|
@@ -87,6 +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](#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)
|
90
100
|
- [Contest specific notes](#contest-specific-notes)
|
91
101
|
- [ARRL Sweekstakes](#arrl-sweekstakes)
|
92
102
|
- [The exchange parser](#the-exchange-parser)
|
@@ -188,6 +198,8 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
|
|
188
198
|
|
189
199
|
## Recent Changes
|
190
200
|
|
201
|
+
- [24-10-11] added ESM to CQWW SSB and RTTY.
|
202
|
+
- [24-10-10] Add ESM to CQ WW CW to test it out.
|
191
203
|
- [24-10-8] Fix crash on Tune to spot. Change placeholder text for the CW port for those unable to read documentation.
|
192
204
|
- [24-10-6] Removed 60, 30, 17 and 12M from the default list of bands.
|
193
205
|
- [24-10-5-1] Store the bandmap spots age timer in the preferences.
|
@@ -797,6 +809,53 @@ After editing a contact and before generating a Cabrillo file. There is a Misc
|
|
797
809
|
menu option that will recalculate the multipliers incase an edit had caused a
|
798
810
|
change.
|
799
811
|
|
812
|
+
## Testing Out ESM Currently only in CQ WW
|
813
|
+
|
814
|
+
I caved and started working on ESM or Enter Sends Message. Currently it is only
|
815
|
+
working in the CQ WW. To test it out you can go to `FILE -> Configuration Settings`
|
816
|
+
|
817
|
+

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

|
832
|
+
|
833
|
+
#### Call Entered send His Call and the Exchange
|
834
|
+
|
835
|
+

|
836
|
+
|
837
|
+
#### Empty exchange field send AGN till you get it
|
838
|
+
|
839
|
+

|
840
|
+
|
841
|
+
#### Exchange field filled, send TU QRZ and logs it
|
842
|
+
|
843
|
+

|
844
|
+
|
845
|
+
### S&P States
|
846
|
+
|
847
|
+
#### With his call entered, Send your call
|
848
|
+
|
849
|
+

|
850
|
+
|
851
|
+
#### If no exchange entered send AGN
|
852
|
+
|
853
|
+

|
854
|
+
|
855
|
+
#### With exchange entered, send your exchange and log it
|
856
|
+
|
857
|
+

|
858
|
+
|
800
859
|
## Contest specific notes
|
801
860
|
|
802
861
|
I found it might be beneficial to have a section devoted to wierd quirky things
|
@@ -838,4 +897,4 @@ The best thing you can do is play around with it to see how it behaves.
|
|
838
897
|
In the `Sent Exchange` field of the New Contest dialog put in the Precidence,
|
839
898
|
Call, Check and Section. Example: `A K6GTE 17 ORG`.
|
840
899
|
|
841
|
-
For the Run Exchange macro I'd put `{HISCALL}
|
900
|
+
For the Run Exchange macro I'd put `{HISCALL} {SENTNR} {EXCH}`.
|
@@ -37,7 +37,7 @@ except OSError as exception:
|
|
37
37
|
from PyQt6 import QtCore, QtGui, QtWidgets, uic
|
38
38
|
from PyQt6.QtCore import QDir, Qt, QThread, QSettings, QCoreApplication
|
39
39
|
from PyQt6.QtGui import QFontDatabase, QColorConstants, QPalette, QColor, QPixmap
|
40
|
-
from PyQt6.QtWidgets import QFileDialog, QSplashScreen
|
40
|
+
from PyQt6.QtWidgets import QFileDialog, QSplashScreen, QApplication
|
41
41
|
|
42
42
|
from not1mm.lib.about import About
|
43
43
|
from not1mm.lib.cwinterface import CW
|
@@ -162,6 +162,8 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
162
162
|
oldtext = ""
|
163
163
|
text_color = QColorConstants.Black
|
164
164
|
current_palette = None
|
165
|
+
use_esm = False
|
166
|
+
esm_dict = {}
|
165
167
|
|
166
168
|
radio_thread = QThread()
|
167
169
|
voice_thread = QThread()
|
@@ -176,6 +178,8 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
176
178
|
lookup_service = None
|
177
179
|
fldigi_util = None
|
178
180
|
|
181
|
+
current_widget = None
|
182
|
+
|
179
183
|
def __init__(self, splash):
|
180
184
|
super().__init__()
|
181
185
|
logger.info("MainWindow: __init__")
|
@@ -194,6 +198,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
194
198
|
self.setCorner(Qt.Corner.TopLeftCorner, Qt.DockWidgetArea.LeftDockWidgetArea)
|
195
199
|
self.setCorner(Qt.Corner.BottomLeftCorner, Qt.DockWidgetArea.LeftDockWidgetArea)
|
196
200
|
uic.loadUi(fsutils.APP_DATA_PATH / "main.ui", self)
|
201
|
+
QApplication.instance().focusObjectChanged.connect(self.on_focus_changed)
|
197
202
|
self.cw_entry.hide()
|
198
203
|
self.leftdot.hide()
|
199
204
|
self.rightdot.hide()
|
@@ -246,13 +251,18 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
246
251
|
self.radioButton_sp.clicked.connect(self.run_sp_buttons_clicked)
|
247
252
|
self.score.setText("0")
|
248
253
|
self.callsign.textEdited.connect(self.callsign_changed)
|
249
|
-
self.callsign.returnPressed.connect(self.
|
250
|
-
self.
|
251
|
-
self.
|
252
|
-
self.
|
254
|
+
self.callsign.returnPressed.connect(self.check_esm_with_enter)
|
255
|
+
self.callsign.cursorPositionChanged.connect(self.check_esm)
|
256
|
+
self.sent.returnPressed.connect(self.check_esm_with_enter)
|
257
|
+
self.sent.cursorPositionChanged.connect(self.check_esm)
|
258
|
+
self.receive.returnPressed.connect(self.check_esm_with_enter)
|
259
|
+
self.receive.cursorPositionChanged.connect(self.check_esm)
|
260
|
+
self.other_1.returnPressed.connect(self.check_esm_with_enter)
|
253
261
|
self.other_1.textEdited.connect(self.other_1_changed)
|
254
|
-
self.
|
262
|
+
self.other_1.cursorPositionChanged.connect(self.check_esm)
|
263
|
+
self.other_2.returnPressed.connect(self.check_esm_with_enter)
|
255
264
|
self.other_2.textEdited.connect(self.other_2_changed)
|
265
|
+
self.other_2.cursorPositionChanged.connect(self.check_esm)
|
256
266
|
|
257
267
|
self.sent.setText("59")
|
258
268
|
self.receive.setText("59")
|
@@ -651,6 +661,47 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
651
661
|
"You can udate to the current version by using:\npip install -U not1mm"
|
652
662
|
)
|
653
663
|
|
664
|
+
def on_focus_changed(self, new):
|
665
|
+
""""""
|
666
|
+
if self.use_esm:
|
667
|
+
if hasattr(self.contest, "process_esm"):
|
668
|
+
self.contest.process_esm(self, new_focused_widget=new)
|
669
|
+
|
670
|
+
def make_button_green(self, the_button: QtWidgets.QPushButton) -> None:
|
671
|
+
"""Turn the_button green."""
|
672
|
+
if the_button is not None:
|
673
|
+
pal = QPalette()
|
674
|
+
pal.isCopyOf(self.current_palette)
|
675
|
+
greenColor = QColor(0, 128, 0)
|
676
|
+
pal.setBrush(QPalette.ColorRole.Button, greenColor)
|
677
|
+
the_button.setPalette(pal)
|
678
|
+
|
679
|
+
def restore_button_color(self, the_button: QtWidgets.QPushButton) -> None:
|
680
|
+
"""Restores the color of the button"""
|
681
|
+
the_button.setPalette(self.current_palette)
|
682
|
+
|
683
|
+
def check_esm_with_enter(self):
|
684
|
+
"""Check for ESM, otherwise save contact."""
|
685
|
+
if self.use_esm:
|
686
|
+
if hasattr(self.contest, "process_esm"):
|
687
|
+
self.contest.process_esm(self, with_enter=True)
|
688
|
+
else:
|
689
|
+
self.save_contact()
|
690
|
+
else:
|
691
|
+
self.save_contact()
|
692
|
+
|
693
|
+
def check_esm(self):
|
694
|
+
"""Check for ESM, otherwise save contact."""
|
695
|
+
if self.use_esm:
|
696
|
+
if hasattr(self.contest, "process_esm"):
|
697
|
+
self.contest.process_esm(self)
|
698
|
+
else:
|
699
|
+
...
|
700
|
+
# self.save_contact()
|
701
|
+
else:
|
702
|
+
...
|
703
|
+
# self.save_contact()
|
704
|
+
|
654
705
|
def show_splash_msg(self, msg: str) -> None:
|
655
706
|
"""Show text message in the splash window."""
|
656
707
|
self.splash.showMessage(
|
@@ -1719,7 +1770,6 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
1719
1770
|
-------
|
1720
1771
|
None
|
1721
1772
|
"""
|
1722
|
-
|
1723
1773
|
modifier = event.modifiers()
|
1724
1774
|
if event.key() == Qt.Key.Key_K:
|
1725
1775
|
self.toggle_cw_entry()
|
@@ -2027,7 +2077,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
2027
2077
|
|
2028
2078
|
logger.debug("saving contact")
|
2029
2079
|
if self.contest is None:
|
2030
|
-
self.show_message_box("You have no contest defined
|
2080
|
+
self.show_message_box("You have no contest defined...")
|
2031
2081
|
return
|
2032
2082
|
if len(self.callsign.text()) < 3:
|
2033
2083
|
return
|
@@ -2057,6 +2107,10 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
2057
2107
|
float(self.radio_state.get("vfoa", 0.0)) / 1000, 2
|
2058
2108
|
)
|
2059
2109
|
self.contact["Mode"] = self.radio_state.get("mode", "")
|
2110
|
+
self.contact["Freq"] = round(float(self.radio_state.get("vfoa", 0.0)) / 1000, 2)
|
2111
|
+
self.contact["QSXFreq"] = round(
|
2112
|
+
float(self.radio_state.get("vfoa", 0.0)) / 1000, 2
|
2113
|
+
)
|
2060
2114
|
self.contact["ContestName"] = self.contest.cabrillo_name
|
2061
2115
|
self.contact["ContestNR"] = self.pref.get("contest", "0")
|
2062
2116
|
self.contact["StationPrefix"] = self.station.get("Call", "")
|
@@ -2415,7 +2469,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
2415
2469
|
app.processEvents()
|
2416
2470
|
self.rig_control.ptt_off()
|
2417
2471
|
|
2418
|
-
def process_function_key(self, function_key) -> None:
|
2472
|
+
def process_function_key(self, function_key, rttysendrx=True) -> None:
|
2419
2473
|
"""
|
2420
2474
|
Called when a function key is clicked.
|
2421
2475
|
|
@@ -2445,7 +2499,10 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
2445
2499
|
"DIGI-U",
|
2446
2500
|
"DIGI-L",
|
2447
2501
|
]:
|
2448
|
-
self.fldigi_util.send_string(
|
2502
|
+
self.fldigi_util.send_string(
|
2503
|
+
self.process_macro(function_key.toolTip()), rxafter=rttysendrx
|
2504
|
+
)
|
2505
|
+
return
|
2449
2506
|
if self.cw:
|
2450
2507
|
if self.pref.get("cwtype") == 3 and self.rig_control is not None:
|
2451
2508
|
self.rig_control.sendcw(self.process_macro(function_key.toolTip()))
|
@@ -2666,7 +2723,33 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
2666
2723
|
for band_to_show in self.pref.get("bands", []):
|
2667
2724
|
if band_to_show in _indicator:
|
2668
2725
|
_indicator[band_to_show].show()
|
2669
|
-
|
2726
|
+
|
2727
|
+
fkey_dict = {
|
2728
|
+
"F1": self.F1,
|
2729
|
+
"F2": self.F2,
|
2730
|
+
"F3": self.F3,
|
2731
|
+
"F4": self.F4,
|
2732
|
+
"F5": self.F5,
|
2733
|
+
"F6": self.F6,
|
2734
|
+
"F7": self.F7,
|
2735
|
+
"F8": self.F8,
|
2736
|
+
"F9": self.F9,
|
2737
|
+
"F10": self.F10,
|
2738
|
+
"F11": self.F11,
|
2739
|
+
"F12": self.F12,
|
2740
|
+
"DISABLED": None,
|
2741
|
+
}
|
2742
|
+
|
2743
|
+
self.use_esm = self.pref.get("use_esm", False)
|
2744
|
+
self.esm_dict["CQ"] = fkey_dict.get(self.pref.get("esm_cq", "DISABLED"))
|
2745
|
+
self.esm_dict["EXCH"] = fkey_dict.get(self.pref.get("esm_exch", "DISABLED"))
|
2746
|
+
self.esm_dict["QRZ"] = fkey_dict.get(self.pref.get("esm_qrz", "DISABLED"))
|
2747
|
+
self.esm_dict["AGN"] = fkey_dict.get(self.pref.get("esm_agn", "DISABLED"))
|
2748
|
+
self.esm_dict["HISCALL"] = fkey_dict.get(
|
2749
|
+
self.pref.get("esm_hiscall", "DISABLED")
|
2750
|
+
)
|
2751
|
+
self.esm_dict["MYCALL"] = fkey_dict.get(self.pref.get("esm_mycall", "DISABLED"))
|
2752
|
+
self.esm_dict["QSOB4"] = fkey_dict.get(self.pref.get("esm_qsob4", "DISABLED"))
|
2670
2753
|
|
2671
2754
|
def watch_udp(self) -> None:
|
2672
2755
|
"""
|