not1mm 25.2.6__tar.gz → 25.2.22__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.2.6 → not1mm-25.2.22}/PKG-INFO +24 -6
- {not1mm-25.2.6 → not1mm-25.2.22}/README.md +23 -5
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/__main__.py +45 -22
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/configuration.ui +56 -12
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/main.ui +15 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/new_contest.ui +5 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/lib/settings.py +9 -2
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/lib/version.py +1 -1
- not1mm-25.2.22/not1mm/plugins/randomgram.py +262 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/voice_keying.py +1 -1
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm.egg-info/PKG-INFO +24 -6
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm.egg-info/SOURCES.txt +1 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/pyproject.toml +1 -1
- {not1mm-25.2.6 → not1mm-25.2.22}/LICENSE +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/__init__.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/bandmap.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/checkwindow.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/JetBrainsMono-ExtraLight.ttf +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/MASTER.SCP +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/about.ui +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/alpha bravo charlie delta.txt +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/bandmap.ui +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/check.png +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/checkwindow.ui +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/contests.sql +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/cty.json +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/cwmacros.txt +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/donors.html +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/editcontact.ui +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/editmacro.ui +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/greendot.png +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/k6gte-not1mm.desktop +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/k6gte.not1mm-128.png +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/k6gte.not1mm-32.png +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/k6gte.not1mm-64.png +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/logwindow.ui +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/logwindowx.ui +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/not1mm.html +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/opon.ui +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/0.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/1.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/2.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/3.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/4.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/5.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/6.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/7.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/73.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/8.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/9.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/a.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/again.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/b.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/c.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/contest.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/cq.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/cq2.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/d.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/e.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/f.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/g.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/h.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/i.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/j.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/k.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/k6gte.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/l.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/m.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/mynumber.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/n.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/nil.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/o.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/p.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/q.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/r.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/roger.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/s.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/space.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/t.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/thankyou.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/thankyouqrz.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/u.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/v.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/w.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/x.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/y.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/yourcall.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/phonetics/z.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/pickcontest.ui +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/radio_green.png +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/radio_grey.png +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/radio_red.png +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/ratewindow.ui +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/reddot.png +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/rttymacros.txt +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/settings.ui +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/splash.png +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/ssbmacros.txt +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/data/vfo.ui +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/fsutils.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/lib/__init__.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/lib/about.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/lib/cat_interface.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/lib/cwinterface.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/lib/database.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/lib/edit_contact.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/lib/edit_macro.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/lib/edit_opon.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/lib/edit_station.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/lib/fldigi_sendstring.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/lib/ft8_watcher.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/lib/ham_utility.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/lib/lookup.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/lib/multicast.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/lib/n1mm.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/lib/new_contest.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/lib/plugin_common.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/lib/select_contest.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/lib/super_check_partial.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/lib/versiontest.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/logwindow.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/lookupservice.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/10_10_fall_cw.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/10_10_spring_cw.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/10_10_summer_phone.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/10_10_winter_phone.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/__init__.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/arrl_10m.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/arrl_160m.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/arrl_dx_cw.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/arrl_dx_ssb.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/arrl_field_day.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/arrl_rtty_ru.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/arrl_ss_cw.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/arrl_ss_phone.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/arrl_vhf_jan.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/arrl_vhf_jun.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/arrl_vhf_sep.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/canada_day.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/cq_160_cw.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/cq_160_ssb.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/cq_wpx_cw.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/cq_wpx_rtty.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/cq_wpx_ssb.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/cq_ww_cw.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/cq_ww_rtty.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/cq_ww_ssb.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/cwt.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/darc_xmas.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/general_logging.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/helvetia.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/iaru_fieldday_r1_cw.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/iaru_fieldday_r1_ssb.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/iaru_hf.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/icwc_mst.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/jidx_cw.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/jidx_ph.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/k1usn_sst.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/labre_rs_digi.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/lz-dx.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/naqp_cw.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/naqp_rtty.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/naqp_ssb.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/phone_weekly_test.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/raem.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/ref_cw.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/ref_ssb.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/stew_perry_topband.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/weekly_rtty.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/plugins/winter_field_day.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/radio.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/ratewindow.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/rtc_service.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/test.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm/vfo.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm.egg-info/dependency_links.txt +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm.egg-info/entry_points.txt +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm.egg-info/requires.txt +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/not1mm.egg-info/top_level.txt +0 -0
- {not1mm-25.2.6 → not1mm-25.2.22}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: not1mm
|
3
|
-
Version: 25.2.
|
3
|
+
Version: 25.2.22
|
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
|
@@ -102,7 +102,10 @@ Requires-Dist: Levenshtein
|
|
102
102
|
- [Options](#options)
|
103
103
|
- [Logging WSJT-X FT8/FT4/ETC and FLDIGI RTTY contacts](#logging-wsjt-x-ft8ft4etc-and-fldigi-rtty-contacts)
|
104
104
|
- [Sending CW](#sending-cw)
|
105
|
-
|
105
|
+
- [Sending CW Macros](#sending-cw-macros)
|
106
|
+
- [Auto CQ](#auto-cq)
|
107
|
+
- [Sending CW Free Form](#sending-cw-free-form)
|
108
|
+
- [Editing macro keys](#editing-macro-keys)
|
106
109
|
- [Macro substitutions](#macro-substitutions)
|
107
110
|
- [Macro use with voice](#macro-use-with-voice)
|
108
111
|
- [cty.dat and QRZ lookups for distance and bearing](#ctydat-and-qrz-lookups-for-distance-and-bearing)
|
@@ -228,6 +231,7 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
|
|
228
231
|
- NAQP CW, RTTY, SSB
|
229
232
|
- Phone Weekly Test
|
230
233
|
- RAEM
|
234
|
+
- RandomGram
|
231
235
|
- RAC Canada Day
|
232
236
|
- REF CW, SSB
|
233
237
|
- Stew Perry Topband
|
@@ -236,6 +240,8 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
|
|
236
240
|
|
237
241
|
## Recent Changes
|
238
242
|
|
243
|
+
- [25-2-22] Add Auto CQ.
|
244
|
+
- [25-2-12] Merged PR from @alduhoo Adding RandomGram event.
|
239
245
|
- [25-2-6] Trimmed out newer tags from UI files, 'cause stuff be old sometimes.
|
240
246
|
|
241
247
|
See [CHANGELOG.md](CHANGELOG.md) for prior changes.
|
@@ -631,15 +637,27 @@ Generic Contest. Make sure the Text Capture Order field says CALL EXCHANGE.
|
|
631
637
|
|
632
638
|
## Sending CW
|
633
639
|
|
640
|
+
### Sending CW Macros
|
641
|
+
|
634
642
|
Other than sending CW by hand, you can also send predefined CW text messages by
|
635
|
-
pressing F1 - F12. See next section on Editing macro keys.
|
643
|
+
pressing F1 - F12. See next section on Editing macro keys.
|
644
|
+
|
645
|
+
### Auto CQ
|
646
|
+
|
647
|
+
If you press `SHIFT-F1` The Auto CQ mode will be activated and the F1 macro will be resent
|
648
|
+
after each Auto CQ Delay interval has passed. The delay can be changed by going to the
|
649
|
+
`Options` TAB in the Configuration dialog.
|
650
|
+
|
651
|
+
The auto CQ can be cancelled by either typing in the call sign field, or by pressing ESC.
|
652
|
+
|
653
|
+
### Sending CW Free Form
|
636
654
|
|
637
655
|
If you need to send something freeform, you can press `CTRL-SHIFT-K`, this will
|
638
656
|
expose an entry field at the bottom of the window which you can type directly into.
|
639
657
|
When you're done you can either press CTRL-SHIFT-K again, or press the Enter Key to
|
640
658
|
close the field.
|
641
659
|
|
642
|
-
|
660
|
+
### Editing macro keys
|
643
661
|
|
644
662
|
To edit the macros, choose `File` > `Edit Macros`. This will open your systems
|
645
663
|
registered text editor with current macros loaded. When your done just save the
|
@@ -686,7 +704,7 @@ files in your own voice.
|
|
686
704
|
Aside from the `[filename]` wav files, there are also NATO phonetic wav files
|
687
705
|
for each letter and number. So if your macro key holds
|
688
706
|
`{HISCALL} {SNT} {SENTNR}` and you have entered K5TUX in callsign field during
|
689
|
-
CQ WW SSB while in CQ Zone 3. You'll here Kilo 5 Tango Uniform X-ray, 5 9
|
707
|
+
CQ WW SSB while in CQ Zone 3. You'll here Kilo 5 Tango Uniform X-ray, 5 9, 3.
|
690
708
|
Hopefully not in an idiots voice.
|
691
709
|
|
692
710
|
## cty.dat and QRZ lookups for distance and bearing
|
@@ -694,7 +712,7 @@ Hopefully not in an idiots voice.
|
|
694
712
|
When a callsign is entered, a look up is first done in a cty.dat file to
|
695
713
|
determin the country of origin, geographic center, cq zone and ITU region.
|
696
714
|
Great circle calculations are done to determin the heading and distance from
|
697
|
-
your gridsquare to the
|
715
|
+
your gridsquare to the geographic center. This information then displayed at the
|
698
716
|
bottom left.
|
699
717
|
|
700
718
|

|
@@ -71,7 +71,10 @@
|
|
71
71
|
- [Options](#options)
|
72
72
|
- [Logging WSJT-X FT8/FT4/ETC and FLDIGI RTTY contacts](#logging-wsjt-x-ft8ft4etc-and-fldigi-rtty-contacts)
|
73
73
|
- [Sending CW](#sending-cw)
|
74
|
-
|
74
|
+
- [Sending CW Macros](#sending-cw-macros)
|
75
|
+
- [Auto CQ](#auto-cq)
|
76
|
+
- [Sending CW Free Form](#sending-cw-free-form)
|
77
|
+
- [Editing macro keys](#editing-macro-keys)
|
75
78
|
- [Macro substitutions](#macro-substitutions)
|
76
79
|
- [Macro use with voice](#macro-use-with-voice)
|
77
80
|
- [cty.dat and QRZ lookups for distance and bearing](#ctydat-and-qrz-lookups-for-distance-and-bearing)
|
@@ -197,6 +200,7 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
|
|
197
200
|
- NAQP CW, RTTY, SSB
|
198
201
|
- Phone Weekly Test
|
199
202
|
- RAEM
|
203
|
+
- RandomGram
|
200
204
|
- RAC Canada Day
|
201
205
|
- REF CW, SSB
|
202
206
|
- Stew Perry Topband
|
@@ -205,6 +209,8 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
|
|
205
209
|
|
206
210
|
## Recent Changes
|
207
211
|
|
212
|
+
- [25-2-22] Add Auto CQ.
|
213
|
+
- [25-2-12] Merged PR from @alduhoo Adding RandomGram event.
|
208
214
|
- [25-2-6] Trimmed out newer tags from UI files, 'cause stuff be old sometimes.
|
209
215
|
|
210
216
|
See [CHANGELOG.md](CHANGELOG.md) for prior changes.
|
@@ -600,15 +606,27 @@ Generic Contest. Make sure the Text Capture Order field says CALL EXCHANGE.
|
|
600
606
|
|
601
607
|
## Sending CW
|
602
608
|
|
609
|
+
### Sending CW Macros
|
610
|
+
|
603
611
|
Other than sending CW by hand, you can also send predefined CW text messages by
|
604
|
-
pressing F1 - F12. See next section on Editing macro keys.
|
612
|
+
pressing F1 - F12. See next section on Editing macro keys.
|
613
|
+
|
614
|
+
### Auto CQ
|
615
|
+
|
616
|
+
If you press `SHIFT-F1` The Auto CQ mode will be activated and the F1 macro will be resent
|
617
|
+
after each Auto CQ Delay interval has passed. The delay can be changed by going to the
|
618
|
+
`Options` TAB in the Configuration dialog.
|
619
|
+
|
620
|
+
The auto CQ can be cancelled by either typing in the call sign field, or by pressing ESC.
|
621
|
+
|
622
|
+
### Sending CW Free Form
|
605
623
|
|
606
624
|
If you need to send something freeform, you can press `CTRL-SHIFT-K`, this will
|
607
625
|
expose an entry field at the bottom of the window which you can type directly into.
|
608
626
|
When you're done you can either press CTRL-SHIFT-K again, or press the Enter Key to
|
609
627
|
close the field.
|
610
628
|
|
611
|
-
|
629
|
+
### Editing macro keys
|
612
630
|
|
613
631
|
To edit the macros, choose `File` > `Edit Macros`. This will open your systems
|
614
632
|
registered text editor with current macros loaded. When your done just save the
|
@@ -655,7 +673,7 @@ files in your own voice.
|
|
655
673
|
Aside from the `[filename]` wav files, there are also NATO phonetic wav files
|
656
674
|
for each letter and number. So if your macro key holds
|
657
675
|
`{HISCALL} {SNT} {SENTNR}` and you have entered K5TUX in callsign field during
|
658
|
-
CQ WW SSB while in CQ Zone 3. You'll here Kilo 5 Tango Uniform X-ray, 5 9
|
676
|
+
CQ WW SSB while in CQ Zone 3. You'll here Kilo 5 Tango Uniform X-ray, 5 9, 3.
|
659
677
|
Hopefully not in an idiots voice.
|
660
678
|
|
661
679
|
## cty.dat and QRZ lookups for distance and bearing
|
@@ -663,7 +681,7 @@ Hopefully not in an idiots voice.
|
|
663
681
|
When a callsign is entered, a look up is first done in a cty.dat file to
|
664
682
|
determin the country of origin, geographic center, cq zone and ITU region.
|
665
683
|
Great circle calculations are done to determin the heading and distance from
|
666
|
-
your gridsquare to the
|
684
|
+
your gridsquare to the geographic center. This information then displayed at the
|
667
685
|
bottom left.
|
668
686
|
|
669
687
|

|
@@ -27,12 +27,6 @@ from shutil import copyfile
|
|
27
27
|
|
28
28
|
import notctyparser
|
29
29
|
|
30
|
-
try:
|
31
|
-
import sounddevice as sd
|
32
|
-
except OSError as exception:
|
33
|
-
print(exception)
|
34
|
-
print("portaudio is not installed")
|
35
|
-
sd = None
|
36
30
|
from PyQt6 import QtCore, QtGui, QtWidgets, uic, QtNetwork
|
37
31
|
from PyQt6.QtCore import QDir, Qt, QThread, QSettings, QCoreApplication
|
38
32
|
from PyQt6.QtGui import QFontDatabase, QColorConstants, QPalette, QColor, QPixmap
|
@@ -189,6 +183,10 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
189
183
|
|
190
184
|
current_widget = None
|
191
185
|
|
186
|
+
auto_cq = False
|
187
|
+
auto_cq_time = datetime.datetime.now()
|
188
|
+
auto_cq_delay = 15000
|
189
|
+
|
192
190
|
def __init__(self, splash):
|
193
191
|
super().__init__()
|
194
192
|
logger.info("MainWindow: __init__")
|
@@ -779,8 +777,6 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
779
777
|
group[item] = ""
|
780
778
|
count += 1
|
781
779
|
group_list.append(group)
|
782
|
-
# database.add_callhistory_item(group)
|
783
|
-
# print(f"{group=}")
|
784
780
|
except IndexError:
|
785
781
|
...
|
786
782
|
self.database.add_callhistory_items(group_list)
|
@@ -2030,6 +2026,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
2030
2026
|
|
2031
2027
|
def stop_cw(self):
|
2032
2028
|
""""""
|
2029
|
+
self.auto_cq = False
|
2033
2030
|
if self.cw is not None:
|
2034
2031
|
if self.cw.servertype == 1:
|
2035
2032
|
self.cw.sendcw("\x1b4")
|
@@ -2086,9 +2083,6 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
2086
2083
|
ABCDEFGHIJKLMNOPQRSTUVWXY
|
2087
2084
|
"""
|
2088
2085
|
modifier = event.modifiers()
|
2089
|
-
# the_key = event.key()
|
2090
|
-
|
2091
|
-
# print(f"Modifier is {modifier=} Key is {the_key=}")
|
2092
2086
|
|
2093
2087
|
if (
|
2094
2088
|
event.key() == Qt.Key.Key_Equal
|
@@ -2149,16 +2143,17 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
2149
2143
|
event.key() == Qt.Key.Key_Escape
|
2150
2144
|
and modifier != Qt.KeyboardModifier.ControlModifier
|
2151
2145
|
):
|
2152
|
-
|
2153
|
-
|
2154
|
-
|
2155
|
-
|
2156
|
-
|
2157
|
-
|
2158
|
-
|
2159
|
-
|
2160
|
-
|
2161
|
-
|
2146
|
+
self.stop_cw()
|
2147
|
+
# if self.cw is not None:
|
2148
|
+
# if self.cw.servertype == 1:
|
2149
|
+
# self.cw.sendcw("\x1b4")
|
2150
|
+
# return
|
2151
|
+
# if self.rig_control:
|
2152
|
+
# if self.rig_control.online:
|
2153
|
+
# if self.pref.get("cwtype") == 3 and self.rig_control is not None:
|
2154
|
+
# if self.rig_control.interface == "flrig":
|
2155
|
+
# self.rig_control.cat.set_flrig_cw_send(False)
|
2156
|
+
# self.rig_control.cat.set_flrig_cw_send(True)
|
2162
2157
|
if event.key() == Qt.Key.Key_Up:
|
2163
2158
|
cmd = {}
|
2164
2159
|
cmd["cmd"] = "PREVSPOT"
|
@@ -2274,27 +2269,43 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
2274
2269
|
next_tab.end(False)
|
2275
2270
|
return
|
2276
2271
|
if event.key() == Qt.Key.Key_F1:
|
2272
|
+
if event.modifiers() == Qt.KeyboardModifier.ShiftModifier:
|
2273
|
+
self.auto_cq = True
|
2274
|
+
self.auto_cq_time = datetime.datetime.now() + datetime.timedelta(
|
2275
|
+
milliseconds=self.auto_cq_delay
|
2276
|
+
)
|
2277
2277
|
self.process_function_key(self.F1)
|
2278
|
+
return
|
2278
2279
|
if event.key() == Qt.Key.Key_F2:
|
2279
2280
|
self.process_function_key(self.F2)
|
2281
|
+
return
|
2280
2282
|
if event.key() == Qt.Key.Key_F3:
|
2281
2283
|
self.process_function_key(self.F3)
|
2284
|
+
return
|
2282
2285
|
if event.key() == Qt.Key.Key_F4:
|
2283
2286
|
self.process_function_key(self.F4)
|
2287
|
+
return
|
2284
2288
|
if event.key() == Qt.Key.Key_F5:
|
2285
2289
|
self.process_function_key(self.F5)
|
2290
|
+
return
|
2286
2291
|
if event.key() == Qt.Key.Key_F6:
|
2287
2292
|
self.process_function_key(self.F6)
|
2293
|
+
return
|
2288
2294
|
if event.key() == Qt.Key.Key_F7:
|
2289
2295
|
self.process_function_key(self.F7)
|
2296
|
+
return
|
2290
2297
|
if event.key() == Qt.Key.Key_F8:
|
2291
2298
|
self.process_function_key(self.F8)
|
2299
|
+
return
|
2292
2300
|
if event.key() == Qt.Key.Key_F9:
|
2293
2301
|
self.process_function_key(self.F9)
|
2302
|
+
return
|
2294
2303
|
if event.key() == Qt.Key.Key_F10:
|
2295
2304
|
self.process_function_key(self.F10)
|
2305
|
+
return
|
2296
2306
|
if event.key() == Qt.Key.Key_F11:
|
2297
2307
|
self.process_function_key(self.F11)
|
2308
|
+
return
|
2298
2309
|
if event.key() == Qt.Key.Key_F12:
|
2299
2310
|
self.process_function_key(self.F12)
|
2300
2311
|
|
@@ -2997,12 +3008,16 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
2997
3008
|
self.rtc_pass = self.pref.get("rtc_pass", "")
|
2998
3009
|
self.rtc_interval = self.pref.get("rtc_interval", 2)
|
2999
3010
|
|
3011
|
+
try:
|
3012
|
+
self.auto_cq_delay = int(self.pref.get("auto_cq_interval", 15)) * 1000
|
3013
|
+
except ValueError:
|
3014
|
+
self.auto_cq_delay = 15000
|
3015
|
+
|
3000
3016
|
if self.pref.get("send_rtc_scores", False):
|
3001
3017
|
self.rtc_service = RTCService()
|
3002
3018
|
self.rtc_service.moveToThread(self.rtc_thread)
|
3003
3019
|
self.rtc_thread.started.connect(self.rtc_service.run)
|
3004
3020
|
self.rtc_thread.finished.connect(self.rtc_service.deleteLater)
|
3005
|
-
# self.rtc_service.poll_callback.connect(self.rtc_result)
|
3006
3021
|
self.rtc_thread.start()
|
3007
3022
|
self.rtc_service.rtc_callback.connect(self.rtc_response)
|
3008
3023
|
|
@@ -3336,6 +3351,8 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
3336
3351
|
-------
|
3337
3352
|
None
|
3338
3353
|
"""
|
3354
|
+
if self.auto_cq is True:
|
3355
|
+
self.stop_cw()
|
3339
3356
|
text = self.callsign.text()
|
3340
3357
|
text = text.upper()
|
3341
3358
|
position = self.callsign.cursorPosition()
|
@@ -3696,6 +3713,12 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
3696
3713
|
Passing in a dictionary object with the
|
3697
3714
|
vfo freq, mode, bandwidth, and online state of the radio.
|
3698
3715
|
"""
|
3716
|
+
if self.auto_cq is True:
|
3717
|
+
if datetime.datetime.now() > self.auto_cq_time:
|
3718
|
+
self.auto_cq_time = datetime.datetime.now() + datetime.timedelta(
|
3719
|
+
milliseconds=self.auto_cq_delay
|
3720
|
+
)
|
3721
|
+
self.process_function_key(self.F1)
|
3699
3722
|
logger.debug(f"{the_dict=}")
|
3700
3723
|
self.set_radio_icon(0)
|
3701
3724
|
info_dirty = False
|
@@ -2244,24 +2244,68 @@
|
|
2244
2244
|
</widget>
|
2245
2245
|
</item>
|
2246
2246
|
<item>
|
2247
|
-
<
|
2248
|
-
<property name="
|
2249
|
-
<
|
2247
|
+
<layout class="QFormLayout" name="formLayout_3">
|
2248
|
+
<property name="bottomMargin">
|
2249
|
+
<number>0</number>
|
2250
2250
|
</property>
|
2251
|
-
<
|
2252
|
-
<
|
2251
|
+
<item row="0" column="0">
|
2252
|
+
<widget class="QLabel" name="label_28">
|
2253
|
+
<property name="text">
|
2254
|
+
<string>Post Interval (minutes)</string>
|
2255
|
+
</property>
|
2256
|
+
<property name="alignment">
|
2257
|
+
<set>Qt::AlignCenter</set>
|
2258
|
+
</property>
|
2259
|
+
</widget>
|
2260
|
+
</item>
|
2261
|
+
<item row="0" column="1">
|
2262
|
+
<widget class="QLineEdit" name="rtc_interval">
|
2263
|
+
<property name="text">
|
2264
|
+
<string>2</string>
|
2265
|
+
</property>
|
2266
|
+
<property name="alignment">
|
2267
|
+
<set>Qt::AlignCenter</set>
|
2268
|
+
</property>
|
2269
|
+
</widget>
|
2270
|
+
</item>
|
2271
|
+
</layout>
|
2272
|
+
</item>
|
2273
|
+
<item>
|
2274
|
+
<widget class="Line" name="line_3">
|
2275
|
+
<property name="orientation">
|
2276
|
+
<enum>Qt::Horizontal</enum>
|
2253
2277
|
</property>
|
2254
2278
|
</widget>
|
2255
2279
|
</item>
|
2256
2280
|
<item>
|
2257
|
-
<
|
2258
|
-
<property name="
|
2259
|
-
<
|
2281
|
+
<layout class="QFormLayout" name="formLayout_2">
|
2282
|
+
<property name="horizontalSpacing">
|
2283
|
+
<number>6</number>
|
2260
2284
|
</property>
|
2261
|
-
<property name="
|
2262
|
-
<
|
2285
|
+
<property name="verticalSpacing">
|
2286
|
+
<number>6</number>
|
2263
2287
|
</property>
|
2264
|
-
|
2288
|
+
<property name="bottomMargin">
|
2289
|
+
<number>0</number>
|
2290
|
+
</property>
|
2291
|
+
<item row="0" column="0">
|
2292
|
+
<widget class="QLabel" name="label_30">
|
2293
|
+
<property name="text">
|
2294
|
+
<string>Auto CQ Delay (Seconds)</string>
|
2295
|
+
</property>
|
2296
|
+
</widget>
|
2297
|
+
</item>
|
2298
|
+
<item row="0" column="1">
|
2299
|
+
<widget class="QLineEdit" name="auto_cq_delay">
|
2300
|
+
<property name="text">
|
2301
|
+
<string>15</string>
|
2302
|
+
</property>
|
2303
|
+
<property name="alignment">
|
2304
|
+
<set>Qt::AlignCenter</set>
|
2305
|
+
</property>
|
2306
|
+
</widget>
|
2307
|
+
</item>
|
2308
|
+
</layout>
|
2265
2309
|
</item>
|
2266
2310
|
<item>
|
2267
2311
|
<spacer name="verticalSpacer_8">
|
@@ -2397,7 +2441,7 @@
|
|
2397
2441
|
</property>
|
2398
2442
|
</designerdata>
|
2399
2443
|
<buttongroups>
|
2400
|
-
<buttongroup name="buttonGroup"/>
|
2401
2444
|
<buttongroup name="buttonGroup_2"/>
|
2445
|
+
<buttongroup name="buttonGroup"/>
|
2402
2446
|
</buttongroups>
|
2403
2447
|
</ui>
|
@@ -1745,6 +1745,9 @@
|
|
1745
1745
|
<family>JetBrains Mono ExtraLight</family>
|
1746
1746
|
</font>
|
1747
1747
|
</property>
|
1748
|
+
<property name="shortcut">
|
1749
|
+
<string>Alt+L</string>
|
1750
|
+
</property>
|
1748
1751
|
<property name="autoRepeat">
|
1749
1752
|
<bool>false</bool>
|
1750
1753
|
</property>
|
@@ -1913,6 +1916,9 @@
|
|
1913
1916
|
<family>JetBrains Mono ExtraLight</family>
|
1914
1917
|
</font>
|
1915
1918
|
</property>
|
1919
|
+
<property name="shortcut">
|
1920
|
+
<string>Alt+B</string>
|
1921
|
+
</property>
|
1916
1922
|
</action>
|
1917
1923
|
<action name="actionQuit">
|
1918
1924
|
<property name="text">
|
@@ -1961,6 +1967,9 @@
|
|
1961
1967
|
<family>JetBrains Mono ExtraLight</family>
|
1962
1968
|
</font>
|
1963
1969
|
</property>
|
1970
|
+
<property name="shortcut">
|
1971
|
+
<string>Alt+C</string>
|
1972
|
+
</property>
|
1964
1973
|
</action>
|
1965
1974
|
<action name="actionRate_Window">
|
1966
1975
|
<property name="checkable">
|
@@ -1974,6 +1983,9 @@
|
|
1974
1983
|
<family>JetBrains Mono ExtraLight</family>
|
1975
1984
|
</font>
|
1976
1985
|
</property>
|
1986
|
+
<property name="shortcut">
|
1987
|
+
<string>Alt+R</string>
|
1988
|
+
</property>
|
1977
1989
|
</action>
|
1978
1990
|
<action name="actionVFO">
|
1979
1991
|
<property name="checkable">
|
@@ -1987,6 +1999,9 @@
|
|
1987
1999
|
<family>JetBrains Mono ExtraLight</family>
|
1988
2000
|
</font>
|
1989
2001
|
</property>
|
2002
|
+
<property name="shortcut">
|
2003
|
+
<string>Alt+V</string>
|
2004
|
+
</property>
|
1990
2005
|
</action>
|
1991
2006
|
<action name="actionDark_Mode_2">
|
1992
2007
|
<property name="checkable">
|
@@ -6,8 +6,6 @@ from PyQt6 import QtWidgets, uic
|
|
6
6
|
try:
|
7
7
|
import sounddevice as sd
|
8
8
|
except OSError as exception:
|
9
|
-
print(exception)
|
10
|
-
print("portaudio is not installed")
|
11
9
|
sd = None
|
12
10
|
|
13
11
|
|
@@ -54,6 +52,8 @@ class Settings(QtWidgets.QDialog):
|
|
54
52
|
self.rtc_pass.setText(str(self.preference.get("rtc_pass", "")))
|
55
53
|
self.rtc_interval.setText(str(self.preference.get("rtc_interval", "2")))
|
56
54
|
|
55
|
+
self.auto_cq_delay.setText(str(self.preference.get("auto_cq_interval", "15")))
|
56
|
+
|
57
57
|
self.use_call_history.setChecked(
|
58
58
|
bool(self.preference.get("use_call_history", False))
|
59
59
|
)
|
@@ -221,6 +221,13 @@ class Settings(QtWidgets.QDialog):
|
|
221
221
|
except ValueError:
|
222
222
|
self.preference["rtc_interval"] = 2
|
223
223
|
|
224
|
+
try:
|
225
|
+
self.preference["auto_cq_interval"] = int(self.auto_cq_delay.text())
|
226
|
+
except ValueError:
|
227
|
+
self.preference["auto_cq_interval"] = 15
|
228
|
+
|
229
|
+
self.auto_cq_delay.setText(str(self.preference.get("auto_cq_interval", "15")))
|
230
|
+
|
224
231
|
self.preference["use_call_history"] = self.use_call_history.isChecked()
|
225
232
|
self.preference["use_esm"] = self.use_esm.isChecked()
|
226
233
|
self.preference["esm_cq"] = self.esm_cq.currentText()
|