not1mm 24.10.24.1__tar.gz → 24.10.26__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.24.1 → not1mm-24.10.26}/PKG-INFO +3 -1
- {not1mm-24.10.24.1 → not1mm-24.10.26}/README.md +2 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/__main__.py +9 -3
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/bandmap.py +6 -1
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/main.ui +23 -3
- not1mm-24.10.26/not1mm/lib/version.py +3 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/10_10_fall_cw.py +109 -82
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/10_10_spring_cw.py +109 -82
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/10_10_summer_phone.py +109 -82
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/10_10_winter_phone.py +109 -82
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/arrl_10m.py +109 -82
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/arrl_dx_cw.py +109 -82
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/arrl_dx_ssb.py +109 -82
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/arrl_field_day.py +109 -82
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/arrl_ss_cw.py +109 -82
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/arrl_ss_phone.py +109 -82
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/arrl_vhf_jan.py +109 -82
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/arrl_vhf_jun.py +109 -82
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/arrl_vhf_sep.py +109 -82
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/canada_day.py +109 -82
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/cq_160_cw.py +109 -74
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/cq_160_ssb.py +109 -74
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/cq_wpx_cw.py +109 -82
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/cq_wpx_rtty.py +109 -82
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/cq_wpx_ssb.py +109 -82
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/cq_ww_cw.py +115 -83
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/cq_ww_rtty.py +110 -73
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/cq_ww_ssb.py +109 -82
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/cwt.py +109 -82
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/general_logging.py +1 -1
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/helvetia.py +109 -82
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/iaru_fieldday_r1_cw.py +109 -82
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/iaru_fieldday_r1_ssb.py +109 -82
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/iaru_hf.py +109 -82
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/icwc_mst.py +109 -82
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/jidx_cw.py +74 -48
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/jidx_ph.py +74 -48
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/k1usn_sst.py +109 -82
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/naqp_cw.py +109 -82
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/naqp_rtty.py +109 -82
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/naqp_ssb.py +109 -82
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/phone_weekly_test.py +109 -82
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/ref_cw.py +109 -82
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/ref_ssb.py +109 -82
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/stew_perry_topband.py +109 -82
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/weekly_rtty.py +109 -82
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/winter_field_day.py +109 -82
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm.egg-info/PKG-INFO +3 -1
- {not1mm-24.10.24.1 → not1mm-24.10.26}/pyproject.toml +1 -1
- not1mm-24.10.24.1/not1mm/lib/version.py +0 -3
- {not1mm-24.10.24.1 → not1mm-24.10.26}/LICENSE +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/__init__.py +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/checkwindow.py +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/JetBrainsMono-ExtraLight.ttf +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/MASTER.SCP +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/about.ui +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/alpha bravo charlie delta.txt +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/bandmap.ui +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/check.png +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/checkwindow.ui +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/configuration.ui +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/contests.sql +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/cty.json +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/cwmacros.txt +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/donors.html +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/editcontact.ui +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/editmacro.ui +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/greendot.png +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/k6gte-not1mm.desktop +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/k6gte.not1mm-128.png +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/k6gte.not1mm-32.png +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/k6gte.not1mm-64.png +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/logwindow.ui +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/logwindowx.ui +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/new_contest.ui +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/not1mm.html +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/opon.ui +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/0.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/1.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/2.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/3.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/4.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/5.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/6.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/7.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/73.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/8.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/9.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/a.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/again.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/b.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/c.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/contest.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/cq.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/cq2.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/d.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/e.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/f.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/g.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/h.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/i.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/j.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/k.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/k6gte.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/l.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/m.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/mynumber.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/n.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/nil.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/o.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/p.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/q.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/r.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/roger.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/s.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/space.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/t.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/thankyou.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/thankyouqrz.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/u.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/v.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/w.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/x.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/y.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/yourcall.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/phonetics/z.wav +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/pickcontest.ui +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/radio_green.png +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/radio_grey.png +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/radio_red.png +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/reddot.png +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/rttymacros.txt +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/settings.ui +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/splash.png +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/ssbmacros.txt +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/data/vfo.ui +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/fsutils.py +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/lib/__init__.py +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/lib/about.py +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/lib/cat_interface.py +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/lib/cwinterface.py +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/lib/database.py +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/lib/edit_contact.py +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/lib/edit_macro.py +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/lib/edit_opon.py +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/lib/edit_station.py +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/lib/fldigi_sendstring.py +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/lib/fldigi_watcher.py +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/lib/ft8_watcher.py +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/lib/ham_utility.py +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/lib/lookup.py +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/lib/multicast.py +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/lib/n1mm.py +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/lib/new_contest.py +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/lib/playsound.py +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/lib/plugin_common.py +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/lib/select_contest.py +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/lib/settings.py +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/lib/super_check_partial.py +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/lib/versiontest.py +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/logwindow.py +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/lookupservice.py +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/__init__.py +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/plugins/arrl_rtty_ru.py +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/radio.py +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/test.py +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/vfo.py +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm/voice_keying.py +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm.egg-info/SOURCES.txt +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm.egg-info/dependency_links.txt +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm.egg-info/entry_points.txt +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm.egg-info/requires.txt +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/not1mm.egg-info/top_level.txt +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/setup.cfg +0 -0
- {not1mm-24.10.24.1 → not1mm-24.10.26}/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.26
|
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
|
@@ -232,6 +232,8 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
|
|
232
232
|
|
233
233
|
## Recent Changes (Polishing the Turd)
|
234
234
|
|
235
|
+
- [24-10-26] Clear inputs when seeking to a call from the bandmap via the arrow up and down. Fixed bandmap crash from bad telnet data. Drop beacons from bandmap.
|
236
|
+
- [24-10-25] Add File Menu option to create either an ASCII or UTF8 Cabrillo.
|
235
237
|
- [24-10-24-1] Make all Cabrillo files with UTF-8.
|
236
238
|
- [24-10-24] Forgot to convert the VFO dockwidget along with the rest. CQ WW CW, Dupes now score 0.
|
237
239
|
- [24-10-23] Remove duplicate marked calls in the bandmap.
|
@@ -201,6 +201,8 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
|
|
201
201
|
|
202
202
|
## Recent Changes (Polishing the Turd)
|
203
203
|
|
204
|
+
- [24-10-26] Clear inputs when seeking to a call from the bandmap via the arrow up and down. Fixed bandmap crash from bad telnet data. Drop beacons from bandmap.
|
205
|
+
- [24-10-25] Add File Menu option to create either an ASCII or UTF8 Cabrillo.
|
204
206
|
- [24-10-24-1] Make all Cabrillo files with UTF-8.
|
205
207
|
- [24-10-24] Forgot to convert the VFO dockwidget along with the rest. CQ WW CW, Dupes now score 0.
|
206
208
|
- [24-10-23] Remove duplicate marked calls in the bandmap.
|
@@ -230,7 +230,12 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
230
230
|
self.actionVFO.triggered.connect(self.launch_vfo)
|
231
231
|
self.actionRecalculate_Mults.triggered.connect(self.recalculate_mults)
|
232
232
|
|
233
|
-
self.
|
233
|
+
self.actionGenerate_Cabrillo_ASCII.triggered.connect(
|
234
|
+
lambda x: self.generate_cabrillo("ascii")
|
235
|
+
)
|
236
|
+
self.actionGenerate_Cabrillo_UTF8.triggered.connect(
|
237
|
+
lambda x: self.generate_cabrillo("utf-8")
|
238
|
+
)
|
234
239
|
self.actionGenerate_ADIF.triggered.connect(self.generate_adif)
|
235
240
|
|
236
241
|
self.actionConfiguration_Settings.triggered.connect(
|
@@ -746,6 +751,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
746
751
|
return
|
747
752
|
if msg.get("cmd", "") == "TUNE":
|
748
753
|
# b'{"cmd": "TUNE", "freq": 7.0235, "spot": "MM0DGI"}'
|
754
|
+
self.clearinputs()
|
749
755
|
if self.vfo_window:
|
750
756
|
self.vfo_window.msg_from_main(msg)
|
751
757
|
vfo = msg.get("freq")
|
@@ -3629,7 +3635,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
3629
3635
|
logger.debug("******ADIF*****")
|
3630
3636
|
self.contest.adif(self)
|
3631
3637
|
|
3632
|
-
def generate_cabrillo(self) -> None:
|
3638
|
+
def generate_cabrillo(self, file_encoding: str) -> None:
|
3633
3639
|
"""
|
3634
3640
|
Calls the contest Cabrillo file generator. Maybe.
|
3635
3641
|
|
@@ -3643,7 +3649,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
3643
3649
|
"""
|
3644
3650
|
|
3645
3651
|
logger.debug("******Cabrillo*****")
|
3646
|
-
self.contest.cabrillo(self)
|
3652
|
+
self.contest.cabrillo(self, file_encoding)
|
3647
3653
|
|
3648
3654
|
|
3649
3655
|
def load_fonts_from_dir(directory: str) -> set:
|
@@ -809,7 +809,10 @@ class BandMapWindow(QDockWidget):
|
|
809
809
|
"""Process waiting bytes"""
|
810
810
|
while self.socket.bytesAvailable():
|
811
811
|
data = self.socket.readLine(1000)
|
812
|
-
|
812
|
+
try:
|
813
|
+
data = str(data, "utf-8").strip()
|
814
|
+
except UnicodeDecodeError:
|
815
|
+
continue
|
813
816
|
|
814
817
|
if "login:" in data or "call:" in data or "callsign:" in data:
|
815
818
|
self.send_command(self.callsignField.text())
|
@@ -819,6 +822,8 @@ class BandMapWindow(QDockWidget):
|
|
819
822
|
"set dx mode " + self.settings.get("cluster_mode", "OPEN")
|
820
823
|
)
|
821
824
|
return
|
825
|
+
if "BEACON" in data:
|
826
|
+
return
|
822
827
|
if "DX de" in data:
|
823
828
|
parts = data.split()
|
824
829
|
spotter = parts[2]
|
@@ -1471,7 +1471,8 @@
|
|
1471
1471
|
<addaction name="actionStationSettings"/>
|
1472
1472
|
<addaction name="separator"/>
|
1473
1473
|
<addaction name="actionGenerate_ADIF"/>
|
1474
|
-
<addaction name="
|
1474
|
+
<addaction name="actionGenerate_Cabrillo_ASCII"/>
|
1475
|
+
<addaction name="actionGenerate_Cabrillo_UTF8"/>
|
1475
1476
|
<addaction name="separator"/>
|
1476
1477
|
<addaction name="actionEdit_Macros"/>
|
1477
1478
|
<addaction name="separator"/>
|
@@ -1684,9 +1685,28 @@
|
|
1684
1685
|
<bool>false</bool>
|
1685
1686
|
</property>
|
1686
1687
|
</action>
|
1687
|
-
<action name="
|
1688
|
+
<action name="actionGenerate_Cabrillo_ASCII">
|
1688
1689
|
<property name="text">
|
1689
|
-
<string>Generate Cabrillo</string>
|
1690
|
+
<string>Generate Cabrillo ASCII</string>
|
1691
|
+
</property>
|
1692
|
+
<property name="font">
|
1693
|
+
<font>
|
1694
|
+
<family>JetBrains Mono ExtraLight</family>
|
1695
|
+
</font>
|
1696
|
+
</property>
|
1697
|
+
<property name="autoRepeat">
|
1698
|
+
<bool>false</bool>
|
1699
|
+
</property>
|
1700
|
+
<property name="iconVisibleInMenu">
|
1701
|
+
<bool>false</bool>
|
1702
|
+
</property>
|
1703
|
+
<property name="shortcutVisibleInContextMenu">
|
1704
|
+
<bool>false</bool>
|
1705
|
+
</property>
|
1706
|
+
</action>
|
1707
|
+
<action name="actionGenerate_Cabrillo_UTF8">
|
1708
|
+
<property name="text">
|
1709
|
+
<string>Generate Cabrillo UTF-8</string>
|
1690
1710
|
</property>
|
1691
1711
|
<property name="font">
|
1692
1712
|
<font>
|
@@ -169,7 +169,16 @@ def adif(self):
|
|
169
169
|
gen_adif(self, cabrillo_name)
|
170
170
|
|
171
171
|
|
172
|
-
def
|
172
|
+
def output_cabrillo_line(line_to_output, ending, file_descriptor, file_encoding):
|
173
|
+
""""""
|
174
|
+
print(
|
175
|
+
line_to_output.encode(file_encoding, errors="ignore").decode(),
|
176
|
+
end=ending,
|
177
|
+
file=file_descriptor,
|
178
|
+
)
|
179
|
+
|
180
|
+
|
181
|
+
def cabrillo(self, file_encoding):
|
173
182
|
"""Generates Cabrillo file. Maybe."""
|
174
183
|
# https://www.cqwpx.com/cabrillo.htm
|
175
184
|
logger.debug("******Cabrillo*****")
|
@@ -186,133 +195,150 @@ def cabrillo(self):
|
|
186
195
|
log = self.database.fetch_all_contacts_asc()
|
187
196
|
try:
|
188
197
|
with open(filename, "w", encoding="utf-8") as file_descriptor:
|
189
|
-
|
190
|
-
|
198
|
+
output_cabrillo_line(
|
199
|
+
"START-OF-LOG: 3.0",
|
200
|
+
"\r\n",
|
201
|
+
file_descriptor,
|
202
|
+
file_encoding,
|
203
|
+
)
|
204
|
+
output_cabrillo_line(
|
191
205
|
f"CREATED-BY: Not1MM v{__version__}",
|
192
|
-
|
193
|
-
|
206
|
+
"\r\n",
|
207
|
+
file_descriptor,
|
208
|
+
file_encoding,
|
194
209
|
)
|
195
|
-
|
210
|
+
output_cabrillo_line(
|
196
211
|
f"CONTEST: {cabrillo_name}",
|
197
|
-
|
198
|
-
|
212
|
+
"\r\n",
|
213
|
+
file_descriptor,
|
214
|
+
file_encoding,
|
199
215
|
)
|
200
216
|
if self.station.get("Club", ""):
|
201
|
-
|
217
|
+
output_cabrillo_line(
|
202
218
|
f"CLUB: {self.station.get('Club', '').upper()}",
|
203
|
-
|
204
|
-
|
219
|
+
"\r\n",
|
220
|
+
file_descriptor,
|
221
|
+
file_encoding,
|
205
222
|
)
|
206
|
-
|
223
|
+
output_cabrillo_line(
|
207
224
|
f"CALLSIGN: {self.station.get('Call','')}",
|
208
|
-
|
209
|
-
|
225
|
+
"\r\n",
|
226
|
+
file_descriptor,
|
227
|
+
file_encoding,
|
210
228
|
)
|
211
|
-
|
229
|
+
output_cabrillo_line(
|
212
230
|
f"LOCATION: {self.station.get('ARRLSection', '')}",
|
213
|
-
|
214
|
-
|
231
|
+
"\r\n",
|
232
|
+
file_descriptor,
|
233
|
+
file_encoding,
|
215
234
|
)
|
216
|
-
|
217
|
-
# f"ARRL-SECTION: {self.pref.get('section', '')}",
|
218
|
-
# end="\r\n",
|
219
|
-
# file=file_descriptor,
|
220
|
-
# )
|
221
|
-
print(
|
235
|
+
output_cabrillo_line(
|
222
236
|
f"CATEGORY-OPERATOR: {self.contest_settings.get('OperatorCategory','')}",
|
223
|
-
|
224
|
-
|
237
|
+
"\r\n",
|
238
|
+
file_descriptor,
|
239
|
+
file_encoding,
|
225
240
|
)
|
226
|
-
|
241
|
+
output_cabrillo_line(
|
227
242
|
f"CATEGORY-ASSISTED: {self.contest_settings.get('AssistedCategory','')}",
|
228
|
-
|
229
|
-
|
243
|
+
"\r\n",
|
244
|
+
file_descriptor,
|
245
|
+
file_encoding,
|
230
246
|
)
|
231
|
-
|
247
|
+
output_cabrillo_line(
|
232
248
|
f"CATEGORY-BAND: {self.contest_settings.get('BandCategory','')}",
|
233
|
-
|
234
|
-
|
249
|
+
"\r\n",
|
250
|
+
file_descriptor,
|
251
|
+
file_encoding,
|
235
252
|
)
|
236
|
-
|
253
|
+
output_cabrillo_line(
|
237
254
|
f"CATEGORY-MODE: {self.contest_settings.get('ModeCategory','')}",
|
238
|
-
|
239
|
-
|
255
|
+
"\r\n",
|
256
|
+
file_descriptor,
|
257
|
+
file_encoding,
|
240
258
|
)
|
241
|
-
|
259
|
+
output_cabrillo_line(
|
242
260
|
f"CATEGORY-TRANSMITTER: {self.contest_settings.get('TransmitterCategory','')}",
|
243
|
-
|
244
|
-
|
261
|
+
"\r\n",
|
262
|
+
file_descriptor,
|
263
|
+
file_encoding,
|
245
264
|
)
|
246
265
|
if self.contest_settings.get("OverlayCategory", "") != "N/A":
|
247
|
-
|
266
|
+
output_cabrillo_line(
|
248
267
|
f"CATEGORY-OVERLAY: {self.contest_settings.get('OverlayCategory','')}",
|
249
|
-
|
250
|
-
|
268
|
+
"\r\n",
|
269
|
+
file_descriptor,
|
270
|
+
file_encoding,
|
251
271
|
)
|
252
|
-
|
272
|
+
output_cabrillo_line(
|
253
273
|
f"GRID-LOCATOR: {self.station.get('GridSquare','')}",
|
254
|
-
|
255
|
-
|
274
|
+
"\r\n",
|
275
|
+
file_descriptor,
|
276
|
+
file_encoding,
|
256
277
|
)
|
257
|
-
|
258
|
-
# f"CATEGORY: {None}",
|
259
|
-
# end="\r\n",
|
260
|
-
# file=file_descriptor,
|
261
|
-
# )
|
262
|
-
print(
|
278
|
+
output_cabrillo_line(
|
263
279
|
f"CATEGORY-POWER: {self.contest_settings.get('PowerCategory','')}",
|
264
|
-
|
265
|
-
|
280
|
+
"\r\n",
|
281
|
+
file_descriptor,
|
282
|
+
file_encoding,
|
266
283
|
)
|
267
284
|
|
268
|
-
|
285
|
+
output_cabrillo_line(
|
269
286
|
f"CLAIMED-SCORE: {calc_score(self)}",
|
270
|
-
|
271
|
-
|
287
|
+
"\r\n",
|
288
|
+
file_descriptor,
|
289
|
+
file_encoding,
|
272
290
|
)
|
273
291
|
ops = f"@{self.station.get('Call','')}"
|
274
292
|
list_of_ops = self.database.get_ops()
|
275
293
|
for op in list_of_ops:
|
276
294
|
ops += f", {op.get('Operator', '')}"
|
277
|
-
|
295
|
+
output_cabrillo_line(
|
278
296
|
f"OPERATORS: {ops}",
|
279
|
-
|
280
|
-
|
297
|
+
"\r\n",
|
298
|
+
file_descriptor,
|
299
|
+
file_encoding,
|
281
300
|
)
|
282
|
-
|
301
|
+
output_cabrillo_line(
|
283
302
|
f"NAME: {self.station.get('Name', '')}",
|
284
|
-
|
285
|
-
|
303
|
+
"\r\n",
|
304
|
+
file_descriptor,
|
305
|
+
file_encoding,
|
286
306
|
)
|
287
|
-
|
307
|
+
output_cabrillo_line(
|
288
308
|
f"ADDRESS: {self.station.get('Street1', '')}",
|
289
|
-
|
290
|
-
|
309
|
+
"\r\n",
|
310
|
+
file_descriptor,
|
311
|
+
file_encoding,
|
291
312
|
)
|
292
|
-
|
313
|
+
output_cabrillo_line(
|
293
314
|
f"ADDRESS-CITY: {self.station.get('City', '')}",
|
294
|
-
|
295
|
-
|
315
|
+
"\r\n",
|
316
|
+
file_descriptor,
|
317
|
+
file_encoding,
|
296
318
|
)
|
297
|
-
|
319
|
+
output_cabrillo_line(
|
298
320
|
f"ADDRESS-STATE-PROVINCE: {self.station.get('State', '')}",
|
299
|
-
|
300
|
-
|
321
|
+
"\r\n",
|
322
|
+
file_descriptor,
|
323
|
+
file_encoding,
|
301
324
|
)
|
302
|
-
|
325
|
+
output_cabrillo_line(
|
303
326
|
f"ADDRESS-POSTALCODE: {self.station.get('Zip', '')}",
|
304
|
-
|
305
|
-
|
327
|
+
"\r\n",
|
328
|
+
file_descriptor,
|
329
|
+
file_encoding,
|
306
330
|
)
|
307
|
-
|
331
|
+
output_cabrillo_line(
|
308
332
|
f"ADDRESS-COUNTRY: {self.station.get('Country', '')}",
|
309
|
-
|
310
|
-
|
333
|
+
"\r\n",
|
334
|
+
file_descriptor,
|
335
|
+
file_encoding,
|
311
336
|
)
|
312
|
-
|
337
|
+
output_cabrillo_line(
|
313
338
|
f"EMAIL: {self.station.get('Email', '')}",
|
314
|
-
|
315
|
-
|
339
|
+
"\r\n",
|
340
|
+
file_descriptor,
|
341
|
+
file_encoding,
|
316
342
|
)
|
317
343
|
for contact in log:
|
318
344
|
the_date_and_time = contact.get("TS", "")
|
@@ -323,7 +349,7 @@ def cabrillo(self):
|
|
323
349
|
|
324
350
|
loggeddate = the_date_and_time[:10]
|
325
351
|
loggedtime = the_date_and_time[11:13] + the_date_and_time[14:16]
|
326
|
-
|
352
|
+
output_cabrillo_line(
|
327
353
|
f"QSO: {frequency} {themode} {loggeddate} {loggedtime} "
|
328
354
|
f"{contact.get('StationPrefix', '').ljust(13)} "
|
329
355
|
f"{str(contact.get('SNT', '')).ljust(3)} "
|
@@ -331,10 +357,11 @@ def cabrillo(self):
|
|
331
357
|
f"{contact.get('Call', '').ljust(13)} "
|
332
358
|
f"{str(contact.get('RCV', '')).ljust(3)} "
|
333
359
|
f"{str(contact.get('NR', '')).ljust(6)}",
|
334
|
-
|
335
|
-
|
360
|
+
"\r\n",
|
361
|
+
file_descriptor,
|
362
|
+
file_encoding,
|
336
363
|
)
|
337
|
-
|
364
|
+
output_cabrillo_line("END-OF-LOG:", "\r\n", file_descriptor, file_encoding)
|
338
365
|
self.show_message_box(f"Cabrillo saved to: {filename}")
|
339
366
|
except IOError as exception:
|
340
367
|
logger.critical("cabrillo: IO error: %s, writing to %s", exception, filename)
|