not1mm 25.2.6__tar.gz → 25.2.12__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.12}/PKG-INFO +5 -3
- {not1mm-25.2.6 → not1mm-25.2.12}/README.md +4 -2
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/__main__.py +0 -6
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/new_contest.ui +5 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/lib/settings.py +0 -2
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/lib/version.py +1 -1
- not1mm-25.2.12/not1mm/plugins/randomgram.py +262 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/voice_keying.py +1 -1
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm.egg-info/PKG-INFO +5 -3
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm.egg-info/SOURCES.txt +1 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/pyproject.toml +1 -1
- {not1mm-25.2.6 → not1mm-25.2.12}/LICENSE +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/__init__.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/bandmap.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/checkwindow.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/JetBrainsMono-ExtraLight.ttf +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/MASTER.SCP +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/about.ui +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/alpha bravo charlie delta.txt +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/bandmap.ui +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/check.png +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/checkwindow.ui +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/configuration.ui +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/contests.sql +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/cty.json +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/cwmacros.txt +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/donors.html +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/editcontact.ui +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/editmacro.ui +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/greendot.png +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/k6gte-not1mm.desktop +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/k6gte.not1mm-128.png +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/k6gte.not1mm-32.png +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/k6gte.not1mm-64.png +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/logwindow.ui +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/logwindowx.ui +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/main.ui +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/not1mm.html +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/opon.ui +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/0.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/1.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/2.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/3.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/4.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/5.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/6.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/7.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/73.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/8.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/9.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/a.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/again.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/b.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/c.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/contest.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/cq.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/cq2.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/d.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/e.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/f.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/g.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/h.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/i.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/j.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/k.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/k6gte.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/l.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/m.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/mynumber.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/n.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/nil.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/o.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/p.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/q.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/r.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/roger.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/s.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/space.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/t.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/thankyou.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/thankyouqrz.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/u.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/v.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/w.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/x.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/y.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/yourcall.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/phonetics/z.wav +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/pickcontest.ui +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/radio_green.png +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/radio_grey.png +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/radio_red.png +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/ratewindow.ui +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/reddot.png +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/rttymacros.txt +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/settings.ui +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/splash.png +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/ssbmacros.txt +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/data/vfo.ui +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/fsutils.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/lib/__init__.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/lib/about.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/lib/cat_interface.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/lib/cwinterface.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/lib/database.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/lib/edit_contact.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/lib/edit_macro.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/lib/edit_opon.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/lib/edit_station.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/lib/fldigi_sendstring.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/lib/ft8_watcher.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/lib/ham_utility.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/lib/lookup.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/lib/multicast.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/lib/n1mm.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/lib/new_contest.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/lib/plugin_common.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/lib/select_contest.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/lib/super_check_partial.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/lib/versiontest.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/logwindow.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/lookupservice.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/10_10_fall_cw.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/10_10_spring_cw.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/10_10_summer_phone.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/10_10_winter_phone.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/__init__.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/arrl_10m.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/arrl_160m.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/arrl_dx_cw.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/arrl_dx_ssb.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/arrl_field_day.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/arrl_rtty_ru.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/arrl_ss_cw.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/arrl_ss_phone.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/arrl_vhf_jan.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/arrl_vhf_jun.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/arrl_vhf_sep.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/canada_day.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/cq_160_cw.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/cq_160_ssb.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/cq_wpx_cw.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/cq_wpx_rtty.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/cq_wpx_ssb.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/cq_ww_cw.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/cq_ww_rtty.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/cq_ww_ssb.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/cwt.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/darc_xmas.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/general_logging.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/helvetia.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/iaru_fieldday_r1_cw.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/iaru_fieldday_r1_ssb.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/iaru_hf.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/icwc_mst.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/jidx_cw.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/jidx_ph.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/k1usn_sst.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/labre_rs_digi.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/lz-dx.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/naqp_cw.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/naqp_rtty.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/naqp_ssb.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/phone_weekly_test.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/raem.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/ref_cw.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/ref_ssb.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/stew_perry_topband.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/weekly_rtty.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/plugins/winter_field_day.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/radio.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/ratewindow.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/rtc_service.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/test.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm/vfo.py +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm.egg-info/dependency_links.txt +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm.egg-info/entry_points.txt +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm.egg-info/requires.txt +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/not1mm.egg-info/top_level.txt +0 -0
- {not1mm-25.2.6 → not1mm-25.2.12}/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.12
|
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
|
@@ -228,6 +228,7 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
|
|
228
228
|
- NAQP CW, RTTY, SSB
|
229
229
|
- Phone Weekly Test
|
230
230
|
- RAEM
|
231
|
+
- RandomGram
|
231
232
|
- RAC Canada Day
|
232
233
|
- REF CW, SSB
|
233
234
|
- Stew Perry Topband
|
@@ -236,6 +237,7 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
|
|
236
237
|
|
237
238
|
## Recent Changes
|
238
239
|
|
240
|
+
- [25-2-12] Merged PR from @alduhoo Adding RandomGram event.
|
239
241
|
- [25-2-6] Trimmed out newer tags from UI files, 'cause stuff be old sometimes.
|
240
242
|
|
241
243
|
See [CHANGELOG.md](CHANGELOG.md) for prior changes.
|
@@ -686,7 +688,7 @@ files in your own voice.
|
|
686
688
|
Aside from the `[filename]` wav files, there are also NATO phonetic wav files
|
687
689
|
for each letter and number. So if your macro key holds
|
688
690
|
`{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
|
691
|
+
CQ WW SSB while in CQ Zone 3. You'll here Kilo 5 Tango Uniform X-ray, 5 9, 3.
|
690
692
|
Hopefully not in an idiots voice.
|
691
693
|
|
692
694
|
## cty.dat and QRZ lookups for distance and bearing
|
@@ -694,7 +696,7 @@ Hopefully not in an idiots voice.
|
|
694
696
|
When a callsign is entered, a look up is first done in a cty.dat file to
|
695
697
|
determin the country of origin, geographic center, cq zone and ITU region.
|
696
698
|
Great circle calculations are done to determin the heading and distance from
|
697
|
-
your gridsquare to the
|
699
|
+
your gridsquare to the geographic center. This information then displayed at the
|
698
700
|
bottom left.
|
699
701
|
|
700
702
|

|
@@ -197,6 +197,7 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
|
|
197
197
|
- NAQP CW, RTTY, SSB
|
198
198
|
- Phone Weekly Test
|
199
199
|
- RAEM
|
200
|
+
- RandomGram
|
200
201
|
- RAC Canada Day
|
201
202
|
- REF CW, SSB
|
202
203
|
- Stew Perry Topband
|
@@ -205,6 +206,7 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
|
|
205
206
|
|
206
207
|
## Recent Changes
|
207
208
|
|
209
|
+
- [25-2-12] Merged PR from @alduhoo Adding RandomGram event.
|
208
210
|
- [25-2-6] Trimmed out newer tags from UI files, 'cause stuff be old sometimes.
|
209
211
|
|
210
212
|
See [CHANGELOG.md](CHANGELOG.md) for prior changes.
|
@@ -655,7 +657,7 @@ files in your own voice.
|
|
655
657
|
Aside from the `[filename]` wav files, there are also NATO phonetic wav files
|
656
658
|
for each letter and number. So if your macro key holds
|
657
659
|
`{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
|
660
|
+
CQ WW SSB while in CQ Zone 3. You'll here Kilo 5 Tango Uniform X-ray, 5 9, 3.
|
659
661
|
Hopefully not in an idiots voice.
|
660
662
|
|
661
663
|
## cty.dat and QRZ lookups for distance and bearing
|
@@ -663,7 +665,7 @@ Hopefully not in an idiots voice.
|
|
663
665
|
When a callsign is entered, a look up is first done in a cty.dat file to
|
664
666
|
determin the country of origin, geographic center, cq zone and ITU region.
|
665
667
|
Great circle calculations are done to determin the heading and distance from
|
666
|
-
your gridsquare to the
|
668
|
+
your gridsquare to the geographic center. This information then displayed at the
|
667
669
|
bottom left.
|
668
670
|
|
669
671
|

|
@@ -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
|
@@ -0,0 +1,262 @@
|
|
1
|
+
"""RandomGram plugin"""
|
2
|
+
|
3
|
+
# pylint: disable=invalid-name, unused-argument, unused-variable, c-extension-no-member, unused-import
|
4
|
+
|
5
|
+
import logging
|
6
|
+
import os
|
7
|
+
|
8
|
+
from PyQt6 import QtWidgets
|
9
|
+
|
10
|
+
from not1mm.lib.plugin_common import gen_adif
|
11
|
+
from not1mm.lib.version import __version__
|
12
|
+
|
13
|
+
logger = logging.getLogger(__name__)
|
14
|
+
EXCHANGE_HINT = ""
|
15
|
+
name = "RandomGram"
|
16
|
+
cabrillo_name = "RANDOMGRAM"
|
17
|
+
mode = "CW" # CW SSB BOTH RTTY
|
18
|
+
columns = [
|
19
|
+
"YYYY-MM-DD HH:MM:SS",
|
20
|
+
"Call",
|
21
|
+
"Freq",
|
22
|
+
"Snt",
|
23
|
+
"Rcv",
|
24
|
+
"SentNr",
|
25
|
+
"RcvNr",
|
26
|
+
]
|
27
|
+
|
28
|
+
# 1 once per contest, 2 work each band, 3 each band/mode, 4 no dupe checking
|
29
|
+
dupe_type = 4
|
30
|
+
|
31
|
+
rgGroupsPath = os.path.join(os.path.expanduser("~"), "rg.txt")
|
32
|
+
try:
|
33
|
+
with open(rgGroupsPath, "r") as f:
|
34
|
+
rgGroups = f.readlines()
|
35
|
+
except:
|
36
|
+
rgGroups = []
|
37
|
+
|
38
|
+
def init_contest(self):
|
39
|
+
"""setup plugin"""
|
40
|
+
set_tab_next(self)
|
41
|
+
set_tab_prev(self)
|
42
|
+
interface(self)
|
43
|
+
self.next_field = self.other_2
|
44
|
+
|
45
|
+
|
46
|
+
def interface(self):
|
47
|
+
"""Setup user interface"""
|
48
|
+
self.field1.show()
|
49
|
+
self.field2.show()
|
50
|
+
self.field3.show()
|
51
|
+
self.field4.show()
|
52
|
+
self.snt_label.setText("SNT")
|
53
|
+
self.field1.setAccessibleName("RST Sent")
|
54
|
+
self.other_label.setText("SentRG")
|
55
|
+
self.field3.setAccessibleName("Sent RandomGram")
|
56
|
+
self.exch_label.setText("RcvRG")
|
57
|
+
self.field4.setAccessibleName("Received RandomGram")
|
58
|
+
|
59
|
+
|
60
|
+
def reset_label(self):
|
61
|
+
"""reset label after field cleared"""
|
62
|
+
|
63
|
+
|
64
|
+
def set_tab_next(self):
|
65
|
+
"""Set TAB Advances"""
|
66
|
+
self.tab_next = {
|
67
|
+
self.callsign: self.sent,
|
68
|
+
self.sent: self.receive,
|
69
|
+
self.receive: self.other_1,
|
70
|
+
self.other_1: self.other_2,
|
71
|
+
self.other_2: self.callsign,
|
72
|
+
}
|
73
|
+
|
74
|
+
|
75
|
+
def set_tab_prev(self):
|
76
|
+
"""Set TAB Advances"""
|
77
|
+
self.tab_prev = {
|
78
|
+
self.callsign: self.other_2,
|
79
|
+
self.sent: self.callsign,
|
80
|
+
self.receive: self.sent,
|
81
|
+
self.other_1: self.receive,
|
82
|
+
self.other_2: self.other_1,
|
83
|
+
}
|
84
|
+
|
85
|
+
|
86
|
+
def set_contact_vars(self):
|
87
|
+
"""Contest Specific"""
|
88
|
+
self.contact["SNT"] = self.sent.text()
|
89
|
+
self.contact["RCV"] = self.receive.text()
|
90
|
+
self.contact["Comment"] = self.other_2.text()
|
91
|
+
self.contact["SentNr"] = self.other_1.text()
|
92
|
+
self.contact["NR"] = self.other_2.text()
|
93
|
+
|
94
|
+
|
95
|
+
def predupe(self):
|
96
|
+
"""called after callsign entered"""
|
97
|
+
|
98
|
+
|
99
|
+
def prefill(self):
|
100
|
+
"""Fill SentNR"""
|
101
|
+
qso_count = show_qso(self)
|
102
|
+
if len(rgGroups) <= qso_count:
|
103
|
+
return
|
104
|
+
|
105
|
+
nextRG = rgGroups[qso_count]
|
106
|
+
if len(nextRG) > 0:
|
107
|
+
self.other_1.setText(nextRG)
|
108
|
+
|
109
|
+
|
110
|
+
def points(self):
|
111
|
+
"""Calc point"""
|
112
|
+
return 2
|
113
|
+
|
114
|
+
|
115
|
+
def show_mults(self):
|
116
|
+
"""Return display string for mults"""
|
117
|
+
|
118
|
+
|
119
|
+
def show_qso(self):
|
120
|
+
"""Return qso count"""
|
121
|
+
result = self.database.fetch_qso_count()
|
122
|
+
if result:
|
123
|
+
return int(result.get("qsos", 0))
|
124
|
+
return 0
|
125
|
+
|
126
|
+
|
127
|
+
def calc_score(self):
|
128
|
+
"""Return calculated score"""
|
129
|
+
result = self.database.fetch_points()
|
130
|
+
|
131
|
+
|
132
|
+
def adif(self):
|
133
|
+
"""Call the generate ADIF function"""
|
134
|
+
gen_adif(self, cabrillo_name)
|
135
|
+
|
136
|
+
|
137
|
+
def cabrillo(self, file_encoding):
|
138
|
+
"""Generates Cabrillo file. Maybe."""
|
139
|
+
|
140
|
+
|
141
|
+
def recalculate_mults(self):
|
142
|
+
"""Recalculates multipliers after change in logged qso."""
|
143
|
+
|
144
|
+
|
145
|
+
def process_esm(self, new_focused_widget=None, with_enter=False):
|
146
|
+
"""ESM State Machine"""
|
147
|
+
|
148
|
+
# self.pref["run_state"]
|
149
|
+
|
150
|
+
# -----===== Assigned F-Keys =====-----
|
151
|
+
# self.esm_dict["CQ"]
|
152
|
+
# self.esm_dict["EXCH"]
|
153
|
+
# self.esm_dict["QRZ"]
|
154
|
+
# self.esm_dict["AGN"]
|
155
|
+
# self.esm_dict["HISCALL"]
|
156
|
+
# self.esm_dict["MYCALL"]
|
157
|
+
# self.esm_dict["QSOB4"]
|
158
|
+
|
159
|
+
# ----==== text fields ====----
|
160
|
+
# self.callsign
|
161
|
+
# self.sent
|
162
|
+
# self.receive
|
163
|
+
# self.other_1
|
164
|
+
# self.other_2
|
165
|
+
|
166
|
+
if new_focused_widget is not None:
|
167
|
+
self.current_widget = self.inputs_dict.get(new_focused_widget)
|
168
|
+
|
169
|
+
# print(f"checking esm {self.current_widget=} {with_enter=} {self.pref.get("run_state")=}")
|
170
|
+
|
171
|
+
for a_button in [
|
172
|
+
self.F1,
|
173
|
+
self.F2,
|
174
|
+
self.F3,
|
175
|
+
self.F4,
|
176
|
+
self.F5,
|
177
|
+
self.F6,
|
178
|
+
self.F7,
|
179
|
+
self.F8,
|
180
|
+
self.F9,
|
181
|
+
self.F10,
|
182
|
+
self.F11,
|
183
|
+
self.F12,
|
184
|
+
]:
|
185
|
+
self.restore_button_color(a_button)
|
186
|
+
|
187
|
+
buttons_to_send = []
|
188
|
+
|
189
|
+
if self.pref.get("run_state"):
|
190
|
+
if self.current_widget == "callsign":
|
191
|
+
if len(self.callsign.text()) < 3:
|
192
|
+
self.make_button_green(self.esm_dict["CQ"])
|
193
|
+
buttons_to_send.append(self.esm_dict["CQ"])
|
194
|
+
elif len(self.callsign.text()) > 2:
|
195
|
+
self.make_button_green(self.esm_dict["HISCALL"])
|
196
|
+
self.make_button_green(self.esm_dict["EXCH"])
|
197
|
+
buttons_to_send.append(self.esm_dict["HISCALL"])
|
198
|
+
buttons_to_send.append(self.esm_dict["EXCH"])
|
199
|
+
|
200
|
+
# elif self.current_widget in ["other_1", "other_2"]:
|
201
|
+
# if self.other_2.text() == "" and self.other_1.text() == "":
|
202
|
+
# self.make_button_green(self.esm_dict["AGN"])
|
203
|
+
# buttons_to_send.append(self.esm_dict["AGN"])
|
204
|
+
# else:
|
205
|
+
# self.make_button_green(self.esm_dict["QRZ"])
|
206
|
+
# buttons_to_send.append(self.esm_dict["QRZ"])
|
207
|
+
# buttons_to_send.append("LOGIT")
|
208
|
+
|
209
|
+
elif self.current_widget in ["other_1", "other_2"]:
|
210
|
+
buttons_to_send.append("LOGIT")
|
211
|
+
|
212
|
+
if with_enter is True and bool(len(buttons_to_send)):
|
213
|
+
for button in buttons_to_send:
|
214
|
+
if button:
|
215
|
+
if button == "LOGIT":
|
216
|
+
self.save_contact()
|
217
|
+
continue
|
218
|
+
self.process_function_key(button)
|
219
|
+
else:
|
220
|
+
if self.current_widget == "callsign":
|
221
|
+
if len(self.callsign.text()) > 2:
|
222
|
+
self.make_button_green(self.esm_dict["MYCALL"])
|
223
|
+
buttons_to_send.append(self.esm_dict["MYCALL"])
|
224
|
+
|
225
|
+
# elif self.current_widget in ["other_1", "other_2"]:
|
226
|
+
# if self.other_2.text() == "" and self.other_1.text() == "":
|
227
|
+
# self.make_button_green(self.esm_dict["AGN"])
|
228
|
+
# buttons_to_send.append(self.esm_dict["AGN"])
|
229
|
+
# else:
|
230
|
+
# self.make_button_green(self.esm_dict["EXCH"])
|
231
|
+
# buttons_to_send.append(self.esm_dict["EXCH"])
|
232
|
+
# buttons_to_send.append("LOGIT")
|
233
|
+
|
234
|
+
elif self.current_widget in ["other_1", "other_2"]:
|
235
|
+
buttons_to_send.append("LOGIT")
|
236
|
+
|
237
|
+
if with_enter is True and bool(len(buttons_to_send)):
|
238
|
+
for button in buttons_to_send:
|
239
|
+
if button:
|
240
|
+
if button == "LOGIT":
|
241
|
+
self.save_contact()
|
242
|
+
continue
|
243
|
+
self.process_function_key(button)
|
244
|
+
|
245
|
+
|
246
|
+
def populate_history_info_line(self):
|
247
|
+
result = self.database.fetch_call_history(self.callsign.text())
|
248
|
+
if result:
|
249
|
+
self.history_info.setText(
|
250
|
+
f"{result.get('Call', '')}, {result.get('Name', '')}, {result.get('UserText','...')}"
|
251
|
+
)
|
252
|
+
else:
|
253
|
+
self.history_info.setText("")
|
254
|
+
|
255
|
+
|
256
|
+
def check_call_history(self):
|
257
|
+
""""""
|
258
|
+
result = self.database.fetch_call_history(self.callsign.text())
|
259
|
+
if result:
|
260
|
+
self.history_info.setText(f"{result.get('UserText','')}")
|
261
|
+
if self.other_1.text() == "":
|
262
|
+
self.other_1.setText(f"{result.get('Name', '')}")
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: not1mm
|
3
|
-
Version: 25.2.
|
3
|
+
Version: 25.2.12
|
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
|
@@ -228,6 +228,7 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
|
|
228
228
|
- NAQP CW, RTTY, SSB
|
229
229
|
- Phone Weekly Test
|
230
230
|
- RAEM
|
231
|
+
- RandomGram
|
231
232
|
- RAC Canada Day
|
232
233
|
- REF CW, SSB
|
233
234
|
- Stew Perry Topband
|
@@ -236,6 +237,7 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
|
|
236
237
|
|
237
238
|
## Recent Changes
|
238
239
|
|
240
|
+
- [25-2-12] Merged PR from @alduhoo Adding RandomGram event.
|
239
241
|
- [25-2-6] Trimmed out newer tags from UI files, 'cause stuff be old sometimes.
|
240
242
|
|
241
243
|
See [CHANGELOG.md](CHANGELOG.md) for prior changes.
|
@@ -686,7 +688,7 @@ files in your own voice.
|
|
686
688
|
Aside from the `[filename]` wav files, there are also NATO phonetic wav files
|
687
689
|
for each letter and number. So if your macro key holds
|
688
690
|
`{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
|
691
|
+
CQ WW SSB while in CQ Zone 3. You'll here Kilo 5 Tango Uniform X-ray, 5 9, 3.
|
690
692
|
Hopefully not in an idiots voice.
|
691
693
|
|
692
694
|
## cty.dat and QRZ lookups for distance and bearing
|
@@ -694,7 +696,7 @@ Hopefully not in an idiots voice.
|
|
694
696
|
When a callsign is entered, a look up is first done in a cty.dat file to
|
695
697
|
determin the country of origin, geographic center, cq zone and ITU region.
|
696
698
|
Great circle calculations are done to determin the heading and distance from
|
697
|
-
your gridsquare to the
|
699
|
+
your gridsquare to the geographic center. This information then displayed at the
|
698
700
|
bottom left.
|
699
701
|
|
700
702
|

|
@@ -170,6 +170,7 @@ not1mm/plugins/naqp_rtty.py
|
|
170
170
|
not1mm/plugins/naqp_ssb.py
|
171
171
|
not1mm/plugins/phone_weekly_test.py
|
172
172
|
not1mm/plugins/raem.py
|
173
|
+
not1mm/plugins/randomgram.py
|
173
174
|
not1mm/plugins/ref_cw.py
|
174
175
|
not1mm/plugins/ref_ssb.py
|
175
176
|
not1mm/plugins/stew_perry_topband.py
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|