not1mm 24.12.3.1__tar.gz → 24.12.5.1__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.12.3.1 → not1mm-24.12.5.1}/PKG-INFO +21 -24
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/README.md +20 -23
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/__main__.py +53 -7
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/configuration.ui +70 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/lib/plugin_common.py +63 -3
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/lib/settings.py +22 -0
- not1mm-24.12.5.1/not1mm/lib/version.py +3 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/lookupservice.py +2 -2
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/arrl_160m.py +98 -14
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/cq_ww_cw.py +14 -1
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/cwt.py +21 -1
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/icwc_mst.py +21 -1
- not1mm-24.12.5.1/not1mm/rtc_service.py +80 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm.egg-info/PKG-INFO +21 -24
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm.egg-info/SOURCES.txt +1 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/pyproject.toml +1 -1
- not1mm-24.12.3.1/not1mm/lib/version.py +0 -3
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/LICENSE +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/__init__.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/bandmap.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/checkwindow.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/JetBrainsMono-ExtraLight.ttf +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/MASTER.SCP +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/about.ui +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/alpha bravo charlie delta.txt +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/bandmap.ui +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/check.png +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/checkwindow.ui +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/contests.sql +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/cty.json +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/cwmacros.txt +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/donors.html +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/editcontact.ui +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/editmacro.ui +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/greendot.png +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/k6gte-not1mm.desktop +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/k6gte.not1mm-128.png +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/k6gte.not1mm-32.png +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/k6gte.not1mm-64.png +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/logwindow.ui +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/logwindowx.ui +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/main.ui +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/new_contest.ui +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/not1mm.html +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/opon.ui +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/0.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/1.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/2.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/3.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/4.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/5.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/6.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/7.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/73.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/8.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/9.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/a.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/again.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/b.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/c.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/contest.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/cq.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/cq2.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/d.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/e.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/f.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/g.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/h.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/i.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/j.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/k.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/k6gte.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/l.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/m.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/mynumber.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/n.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/nil.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/o.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/p.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/q.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/r.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/roger.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/s.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/space.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/t.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/thankyou.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/thankyouqrz.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/u.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/v.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/w.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/x.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/y.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/yourcall.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/phonetics/z.wav +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/pickcontest.ui +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/radio_green.png +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/radio_grey.png +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/radio_red.png +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/reddot.png +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/rttymacros.txt +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/settings.ui +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/splash.png +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/ssbmacros.txt +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/data/vfo.ui +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/fsutils.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/lib/__init__.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/lib/about.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/lib/cat_interface.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/lib/cwinterface.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/lib/database.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/lib/edit_contact.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/lib/edit_macro.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/lib/edit_opon.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/lib/edit_station.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/lib/fldigi_sendstring.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/lib/fldigi_watcher.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/lib/ft8_watcher.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/lib/ham_utility.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/lib/lookup.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/lib/multicast.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/lib/n1mm.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/lib/new_contest.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/lib/select_contest.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/lib/super_check_partial.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/lib/versiontest.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/logwindow.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/10_10_fall_cw.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/10_10_spring_cw.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/10_10_summer_phone.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/10_10_winter_phone.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/__init__.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/arrl_10m.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/arrl_dx_cw.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/arrl_dx_ssb.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/arrl_field_day.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/arrl_rtty_ru.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/arrl_ss_cw.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/arrl_ss_phone.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/arrl_vhf_jan.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/arrl_vhf_jun.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/arrl_vhf_sep.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/canada_day.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/cq_160_cw.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/cq_160_ssb.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/cq_wpx_cw.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/cq_wpx_rtty.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/cq_wpx_ssb.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/cq_ww_rtty.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/cq_ww_ssb.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/darc_xmas.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/general_logging.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/helvetia.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/iaru_fieldday_r1_cw.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/iaru_fieldday_r1_ssb.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/iaru_hf.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/jidx_cw.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/jidx_ph.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/k1usn_sst.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/lz-dx.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/naqp_cw.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/naqp_rtty.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/naqp_ssb.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/phone_weekly_test.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/raem.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/ref_cw.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/ref_ssb.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/stew_perry_topband.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/weekly_rtty.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/plugins/winter_field_day.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/radio.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/test.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/vfo.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm/voice_keying.py +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm.egg-info/dependency_links.txt +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm.egg-info/entry_points.txt +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm.egg-info/requires.txt +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/not1mm.egg-info/top_level.txt +0 -0
- {not1mm-24.12.3.1 → not1mm-24.12.5.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: not1mm
|
3
|
-
Version: 24.12.
|
3
|
+
Version: 24.12.5.1
|
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
|
@@ -238,6 +238,9 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
|
|
238
238
|
|
239
239
|
## Recent Changes (Polishing the Turd)
|
240
240
|
|
241
|
+
-[24-12-5-1] ARRL 160 gets rtc.
|
242
|
+
- [24-12-5] Add 'real time' score posting to external sites.
|
243
|
+
- [24-12-4] Merged PR from @alduhoo Add STATION_CALLSIGN field to ADIF output
|
241
244
|
- [24-12-3-1] Adding ARRL 160
|
242
245
|
- [24-12-3] Add button to bandmap to delete marked spots.
|
243
246
|
|
@@ -532,7 +535,7 @@ You can fill. You can fill. Everyone look at your keys.
|
|
532
535
|
|
533
536
|
### Changing station information
|
534
537
|
|
535
|
-
Station information can be changed any time by going
|
538
|
+
Station information can be changed any time by going to
|
536
539
|
`File` > `Station Settings` and editing the information.
|
537
540
|
|
538
541
|
## Selecting a contest (It's REQUIRED Russ)
|
@@ -585,10 +588,7 @@ onscreen icon for CAT status. Green good, Red bad, Grey neither.
|
|
585
588
|
|
586
589
|
Under the `CW` TAB, There are three options. `cwdaemon`, which normally uses IP
|
587
590
|
`127.0.0.1`port `6789`. `pywinkeyer` which normally uses IP `127.0.0.1` port `8000` and
|
588
|
-
`CAT` which if your radio supports it, sends Morse characters via rigctld.
|
589
|
-
as I can tell rigctld does not support setting the radios internal keyer speed. So
|
590
|
-
the CW speed control widget will not be functional and you'd need to control the
|
591
|
-
keyer speed thru the radios interface.
|
591
|
+
`CAT` which if your radio supports it, sends Morse characters via rigctld.
|
592
592
|
|
593
593
|
### Cluster
|
594
594
|
|
@@ -616,27 +616,22 @@ appear. Those without will not.
|
|
616
616
|
|
617
617
|
### Options
|
618
618
|
|
619
|
-
On the Options TAB you can
|
620
|
-
Select whether or not to use Call History info.
|
619
|
+
On the Options TAB you can:
|
621
620
|
|
622
|
-
|
621
|
+
- Select to use Enter Sends Message (ESM), and configure it's function keys.
|
622
|
+
- Select whether or not to use Call History info.
|
623
|
+
- Select whether or not to send XML score info to online scoreboards.
|
623
624
|
|
624
|
-
|
625
|
-
|
626
|
-
**Digital modes only working for:**
|
625
|
+

|
627
626
|
|
628
|
-
-
|
629
|
-
- ARRL VHF
|
630
|
-
- Weekly RTTY
|
631
|
-
- CQ WW DX RTTY
|
632
|
-
- CQ WPX RTTY
|
627
|
+
## Logging WSJT-X FT8/FT4/ETC and FLDIGI RTTY contacts
|
633
628
|
|
634
629
|
not1mm listens for WSJT-X UDP traffic on the Multicast address 224.0.0.1:2237.
|
635
630
|
No setup is needed to be done on not1mm's side. That's good because I'm lazy.
|
636
631
|
|
637
632
|
not1mm polls for fldigi QSOs via it's XMLRPC interface. It does this in a rather stupid
|
638
633
|
way. It just keeps asking what was the last QSO and compares it to the previous response.
|
639
|
-
If it's different, it's new.
|
634
|
+
If it's different, it's new.
|
640
635
|
|
641
636
|
The F1-F12 function keys be sent to fldigi via XMLRPC. Fldigi will be placed into TX
|
642
637
|
mode, the message will be sent and a ^r will be tacked onto the end to place it back into
|
@@ -649,18 +644,20 @@ Generic Contest. Make sure the Text Capture Order field says CALL EXCHANGE.
|
|
649
644
|
## Sending CW
|
650
645
|
|
651
646
|
Other than sending CW by hand, you can also send predefined CW text messages by
|
652
|
-
pressing F1 - F12. See next section on Editing macro keys.
|
653
|
-
|
654
|
-
|
655
|
-
|
656
|
-
|
647
|
+
pressing F1 - F12. See next section on Editing macro keys.
|
648
|
+
|
649
|
+
If you need to send something freeform, you can press `CTRL-SHIFT-K`, this will
|
650
|
+
expose an entry field at the bottom of the window which you can type directly into.
|
651
|
+
When you're done you can either press CTRL-SHIFT-K again, or press the Enter Key to
|
652
|
+
close the field.
|
657
653
|
|
658
654
|
## Editing macro keys
|
659
655
|
|
660
656
|
To edit the macros, choose `File` > `Edit Macros`. This will open your systems
|
661
657
|
registered text editor with current macros loaded. When your done just save the
|
662
658
|
file and close the editor. The file loaded to edit, CW, SSB or RTTY, will be
|
663
|
-
determined by your current operating mode.
|
659
|
+
determined by your current operating mode and contest. Each contest gets it's own
|
660
|
+
copy of the macros.
|
664
661
|
|
665
662
|
After editing and saving the macro file. You can force the logger to reload the
|
666
663
|
macro file by toggeling between `Run` and `S&P` states.
|
@@ -207,6 +207,9 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
|
|
207
207
|
|
208
208
|
## Recent Changes (Polishing the Turd)
|
209
209
|
|
210
|
+
-[24-12-5-1] ARRL 160 gets rtc.
|
211
|
+
- [24-12-5] Add 'real time' score posting to external sites.
|
212
|
+
- [24-12-4] Merged PR from @alduhoo Add STATION_CALLSIGN field to ADIF output
|
210
213
|
- [24-12-3-1] Adding ARRL 160
|
211
214
|
- [24-12-3] Add button to bandmap to delete marked spots.
|
212
215
|
|
@@ -501,7 +504,7 @@ You can fill. You can fill. Everyone look at your keys.
|
|
501
504
|
|
502
505
|
### Changing station information
|
503
506
|
|
504
|
-
Station information can be changed any time by going
|
507
|
+
Station information can be changed any time by going to
|
505
508
|
`File` > `Station Settings` and editing the information.
|
506
509
|
|
507
510
|
## Selecting a contest (It's REQUIRED Russ)
|
@@ -554,10 +557,7 @@ onscreen icon for CAT status. Green good, Red bad, Grey neither.
|
|
554
557
|
|
555
558
|
Under the `CW` TAB, There are three options. `cwdaemon`, which normally uses IP
|
556
559
|
`127.0.0.1`port `6789`. `pywinkeyer` which normally uses IP `127.0.0.1` port `8000` and
|
557
|
-
`CAT` which if your radio supports it, sends Morse characters via rigctld.
|
558
|
-
as I can tell rigctld does not support setting the radios internal keyer speed. So
|
559
|
-
the CW speed control widget will not be functional and you'd need to control the
|
560
|
-
keyer speed thru the radios interface.
|
560
|
+
`CAT` which if your radio supports it, sends Morse characters via rigctld.
|
561
561
|
|
562
562
|
### Cluster
|
563
563
|
|
@@ -585,27 +585,22 @@ appear. Those without will not.
|
|
585
585
|
|
586
586
|
### Options
|
587
587
|
|
588
|
-
On the Options TAB you can
|
589
|
-
Select whether or not to use Call History info.
|
588
|
+
On the Options TAB you can:
|
590
589
|
|
591
|
-
|
590
|
+
- Select to use Enter Sends Message (ESM), and configure it's function keys.
|
591
|
+
- Select whether or not to use Call History info.
|
592
|
+
- Select whether or not to send XML score info to online scoreboards.
|
592
593
|
|
593
|
-
|
594
|
-
|
595
|
-
**Digital modes only working for:**
|
594
|
+

|
596
595
|
|
597
|
-
-
|
598
|
-
- ARRL VHF
|
599
|
-
- Weekly RTTY
|
600
|
-
- CQ WW DX RTTY
|
601
|
-
- CQ WPX RTTY
|
596
|
+
## Logging WSJT-X FT8/FT4/ETC and FLDIGI RTTY contacts
|
602
597
|
|
603
598
|
not1mm listens for WSJT-X UDP traffic on the Multicast address 224.0.0.1:2237.
|
604
599
|
No setup is needed to be done on not1mm's side. That's good because I'm lazy.
|
605
600
|
|
606
601
|
not1mm polls for fldigi QSOs via it's XMLRPC interface. It does this in a rather stupid
|
607
602
|
way. It just keeps asking what was the last QSO and compares it to the previous response.
|
608
|
-
If it's different, it's new.
|
603
|
+
If it's different, it's new.
|
609
604
|
|
610
605
|
The F1-F12 function keys be sent to fldigi via XMLRPC. Fldigi will be placed into TX
|
611
606
|
mode, the message will be sent and a ^r will be tacked onto the end to place it back into
|
@@ -618,18 +613,20 @@ Generic Contest. Make sure the Text Capture Order field says CALL EXCHANGE.
|
|
618
613
|
## Sending CW
|
619
614
|
|
620
615
|
Other than sending CW by hand, you can also send predefined CW text messages by
|
621
|
-
pressing F1 - F12. See next section on Editing macro keys.
|
622
|
-
|
623
|
-
|
624
|
-
|
625
|
-
|
616
|
+
pressing F1 - F12. See next section on Editing macro keys.
|
617
|
+
|
618
|
+
If you need to send something freeform, you can press `CTRL-SHIFT-K`, this will
|
619
|
+
expose an entry field at the bottom of the window which you can type directly into.
|
620
|
+
When you're done you can either press CTRL-SHIFT-K again, or press the Enter Key to
|
621
|
+
close the field.
|
626
622
|
|
627
623
|
## Editing macro keys
|
628
624
|
|
629
625
|
To edit the macros, choose `File` > `Edit Macros`. This will open your systems
|
630
626
|
registered text editor with current macros loaded. When your done just save the
|
631
627
|
file and close the editor. The file loaded to edit, CW, SSB or RTTY, will be
|
632
|
-
determined by your current operating mode.
|
628
|
+
determined by your current operating mode and contest. Each contest gets it's own
|
629
|
+
copy of the macros.
|
633
630
|
|
634
631
|
After editing and saving the macro file. You can force the logger to reload the
|
635
632
|
macro file by toggeling between `Run` and `S&P` states.
|
@@ -77,6 +77,7 @@ from not1mm.vfo import VfoWindow
|
|
77
77
|
from not1mm.radio import Radio
|
78
78
|
from not1mm.voice_keying import Voice
|
79
79
|
from not1mm.lookupservice import LookupService
|
80
|
+
from not1mm.rtc_service import RTCService
|
80
81
|
|
81
82
|
poll_time = datetime.datetime.now()
|
82
83
|
|
@@ -102,6 +103,11 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
102
103
|
"multicast_group": "239.1.1.1",
|
103
104
|
"multicast_port": 2239,
|
104
105
|
"interface_ip": "0.0.0.0",
|
106
|
+
"send_rtc_scores": False,
|
107
|
+
"rtc_url": "",
|
108
|
+
"rtc_user": "",
|
109
|
+
"rtc_pass": "",
|
110
|
+
"rtc_interval": 2,
|
105
111
|
"send_n1mm_packets": False,
|
106
112
|
"n1mm_station_name": "20M CW Tent",
|
107
113
|
"n1mm_operator": "Bernie",
|
@@ -156,7 +162,6 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
156
162
|
opon_dialog = None
|
157
163
|
dbname = fsutils.USER_DATA_PATH, "/ham.db"
|
158
164
|
radio_state = {}
|
159
|
-
rig_control = None
|
160
165
|
worked_list = {}
|
161
166
|
cw_entry_visible = False
|
162
167
|
last_focus = None
|
@@ -170,6 +175,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
170
175
|
radio_thread = QThread()
|
171
176
|
voice_thread = QThread()
|
172
177
|
fldigi_thread = QThread()
|
178
|
+
rtc_thread = QThread()
|
173
179
|
|
174
180
|
fldigi_watcher = None
|
175
181
|
rig_control = None
|
@@ -179,6 +185,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
179
185
|
vfo_window = None
|
180
186
|
lookup_service = None
|
181
187
|
fldigi_util = None
|
188
|
+
rtc_service = None
|
182
189
|
|
183
190
|
current_widget = None
|
184
191
|
|
@@ -604,7 +611,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
604
611
|
logger.debug(f"{QT_VERSION_STR=} {PYQT_VERSION_STR=}")
|
605
612
|
x = PYQT_VERSION_STR.split(".")
|
606
613
|
old_Qt = True
|
607
|
-
# test if pyqt version is at least 6.
|
614
|
+
# test if pyqt version is at least 6.8
|
608
615
|
if len(x) == 1:
|
609
616
|
if int(x[0]) > 6:
|
610
617
|
old_Qt = False
|
@@ -612,7 +619,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
612
619
|
if int(x[0]) >= 6 and int(x[1]) >= 8:
|
613
620
|
old_Qt = False
|
614
621
|
|
615
|
-
# Featureset for wayland if pyqt is older that 6.
|
622
|
+
# Featureset for wayland if pyqt is older that 6.8
|
616
623
|
dockfeatures = (
|
617
624
|
QtWidgets.QDockWidget.DockWidgetFeature.DockWidgetClosable
|
618
625
|
| QtWidgets.QDockWidget.DockWidgetFeature.DockWidgetMovable
|
@@ -712,7 +719,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
712
719
|
)
|
713
720
|
|
714
721
|
def load_call_history(self) -> None:
|
715
|
-
""""""
|
722
|
+
"""Display filepicker and load chosen call history file."""
|
716
723
|
filename = self.filepicker("other")
|
717
724
|
if filename:
|
718
725
|
self.database.create_callhistory_table()
|
@@ -755,13 +762,13 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
755
762
|
self.show_message_box(f"{err}")
|
756
763
|
|
757
764
|
def on_focus_changed(self, new):
|
758
|
-
""""""
|
765
|
+
"""Called when text entry focus has changed."""
|
759
766
|
if self.use_esm:
|
760
767
|
if hasattr(self.contest, "process_esm"):
|
761
768
|
self.contest.process_esm(self, new_focused_widget=new)
|
762
769
|
|
763
770
|
def make_button_green(self, the_button: QtWidgets.QPushButton) -> None:
|
764
|
-
"""
|
771
|
+
"""Takes supplied QPushButton object and turns it green."""
|
765
772
|
if the_button is not None:
|
766
773
|
pal = QPalette()
|
767
774
|
pal.isCopyOf(self.current_palette)
|
@@ -1599,6 +1606,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
1599
1606
|
self.set_window_title()
|
1600
1607
|
if self.rig_control:
|
1601
1608
|
self.rig_control.set_mode(self.radio_state.get("mode"))
|
1609
|
+
self.update_rtc_xml()
|
1602
1610
|
except ModuleNotFoundError:
|
1603
1611
|
self.pref["contest"] = 1
|
1604
1612
|
self.show_message_box("Contest plugin not found")
|
@@ -2457,7 +2465,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
2457
2465
|
self.worked_list = self.database.get_calls_and_bands()
|
2458
2466
|
self.send_worked_list()
|
2459
2467
|
self.clearinputs()
|
2460
|
-
|
2468
|
+
self.update_rtc_xml()
|
2461
2469
|
cmd = {}
|
2462
2470
|
cmd["cmd"] = "UPDATELOG"
|
2463
2471
|
if self.log_window:
|
@@ -2465,6 +2473,17 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
2465
2473
|
if self.check_window:
|
2466
2474
|
self.check_window.msg_from_main(cmd)
|
2467
2475
|
|
2476
|
+
def update_rtc_xml(self):
|
2477
|
+
"""Update RTC XML"""
|
2478
|
+
print("update the xml")
|
2479
|
+
if self.pref.get("send_rtc_scores", False):
|
2480
|
+
if self.contest is None:
|
2481
|
+
return
|
2482
|
+
if hasattr(self.contest, "online_score_xml"):
|
2483
|
+
if self.rtc_service is not None:
|
2484
|
+
self.rtc_service.xml = self.contest.online_score_xml(self)
|
2485
|
+
print(f"{self.rtc_service.xml=}")
|
2486
|
+
|
2468
2487
|
def new_contest_dialog(self) -> None:
|
2469
2488
|
"""
|
2470
2489
|
Show new contest dialog.
|
@@ -2898,6 +2917,31 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
2898
2917
|
self.setDarkMode(False)
|
2899
2918
|
self.actionDark_Mode_2.setChecked(False)
|
2900
2919
|
|
2920
|
+
try:
|
2921
|
+
if self.rtc_thread.isRunning():
|
2922
|
+
self.rtc_service.time_to_quit = True
|
2923
|
+
self.rtc_thread.quit()
|
2924
|
+
self.rtc_thread.wait(1000)
|
2925
|
+
|
2926
|
+
except (RuntimeError, AttributeError):
|
2927
|
+
...
|
2928
|
+
|
2929
|
+
self.rtc_service = None
|
2930
|
+
|
2931
|
+
self.send_rtc_scores = self.pref.get("send_rtc_scores", False)
|
2932
|
+
self.rtc_url = self.pref.get("rtc_url", "")
|
2933
|
+
self.rtc_user = self.pref.get("rtc_user", "")
|
2934
|
+
self.rtc_pass = self.pref.get("rtc_pass", "")
|
2935
|
+
self.rtc_interval = self.pref.get("rtc_interval", 2)
|
2936
|
+
|
2937
|
+
if self.pref.get("send_rtc_scores", False):
|
2938
|
+
self.rtc_service = RTCService()
|
2939
|
+
self.rtc_service.moveToThread(self.rtc_thread)
|
2940
|
+
self.rtc_thread.started.connect(self.rtc_service.run)
|
2941
|
+
self.rtc_thread.finished.connect(self.rtc_service.deleteLater)
|
2942
|
+
# self.rtc_service.poll_callback.connect(self.rtc_result)
|
2943
|
+
self.rtc_thread.start()
|
2944
|
+
|
2901
2945
|
try:
|
2902
2946
|
if self.radio_thread.isRunning():
|
2903
2947
|
self.rig_control.time_to_quit = True
|
@@ -3046,6 +3090,8 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
3046
3090
|
self.esm_dict["MYCALL"] = fkey_dict.get(self.pref.get("esm_mycall", "DISABLED"))
|
3047
3091
|
self.esm_dict["QSOB4"] = fkey_dict.get(self.pref.get("esm_qsob4", "DISABLED"))
|
3048
3092
|
|
3093
|
+
self.update_rtc_xml()
|
3094
|
+
|
3049
3095
|
def dark_mode_state_changed(self) -> None:
|
3050
3096
|
"""Called when the Dark Mode menu state is changed."""
|
3051
3097
|
self.pref["darkmode"] = self.actionDark_Mode_2.isChecked()
|
@@ -2173,6 +2173,76 @@
|
|
2173
2173
|
</property>
|
2174
2174
|
</widget>
|
2175
2175
|
</item>
|
2176
|
+
<item>
|
2177
|
+
<widget class="Line" name="line">
|
2178
|
+
<property name="orientation">
|
2179
|
+
<enum>Qt::Horizontal</enum>
|
2180
|
+
</property>
|
2181
|
+
</widget>
|
2182
|
+
</item>
|
2183
|
+
<item>
|
2184
|
+
<widget class="QCheckBox" name="send_rtc_scores">
|
2185
|
+
<property name="text">
|
2186
|
+
<string>Use RTC score reporting</string>
|
2187
|
+
</property>
|
2188
|
+
</widget>
|
2189
|
+
</item>
|
2190
|
+
<item>
|
2191
|
+
<widget class="QComboBox" name="rtc_url">
|
2192
|
+
<item>
|
2193
|
+
<property name="text">
|
2194
|
+
<string>https://hamscore.com/postxml/</string>
|
2195
|
+
</property>
|
2196
|
+
</item>
|
2197
|
+
<item>
|
2198
|
+
<property name="text">
|
2199
|
+
<string>https://contestonlinescore.com/post/</string>
|
2200
|
+
</property>
|
2201
|
+
</item>
|
2202
|
+
<item>
|
2203
|
+
<property name="text">
|
2204
|
+
<string>http://contest.run</string>
|
2205
|
+
</property>
|
2206
|
+
</item>
|
2207
|
+
</widget>
|
2208
|
+
</item>
|
2209
|
+
<item>
|
2210
|
+
<widget class="QLineEdit" name="rtc_user">
|
2211
|
+
<property name="placeholderText">
|
2212
|
+
<string>username</string>
|
2213
|
+
</property>
|
2214
|
+
</widget>
|
2215
|
+
</item>
|
2216
|
+
<item>
|
2217
|
+
<widget class="QLineEdit" name="rtc_pass">
|
2218
|
+
<property name="echoMode">
|
2219
|
+
<enum>QLineEdit::EchoMode::Password</enum>
|
2220
|
+
</property>
|
2221
|
+
<property name="placeholderText">
|
2222
|
+
<string>password</string>
|
2223
|
+
</property>
|
2224
|
+
</widget>
|
2225
|
+
</item>
|
2226
|
+
<item>
|
2227
|
+
<widget class="QLabel" name="label_28">
|
2228
|
+
<property name="text">
|
2229
|
+
<string>Score posting interval (minutes)</string>
|
2230
|
+
</property>
|
2231
|
+
<property name="alignment">
|
2232
|
+
<set>Qt::AlignCenter</set>
|
2233
|
+
</property>
|
2234
|
+
</widget>
|
2235
|
+
</item>
|
2236
|
+
<item>
|
2237
|
+
<widget class="QLineEdit" name="rtc_interval">
|
2238
|
+
<property name="text">
|
2239
|
+
<string>2</string>
|
2240
|
+
</property>
|
2241
|
+
<property name="alignment">
|
2242
|
+
<set>Qt::AlignCenter</set>
|
2243
|
+
</property>
|
2244
|
+
</widget>
|
2245
|
+
</item>
|
2176
2246
|
<item>
|
2177
2247
|
<spacer name="verticalSpacer_8">
|
2178
2248
|
<property name="orientation">
|
@@ -4,6 +4,58 @@ import datetime
|
|
4
4
|
from decimal import Decimal
|
5
5
|
from pathlib import Path
|
6
6
|
from not1mm.lib.ham_utility import get_adif_band
|
7
|
+
from not1mm.lib.version import __version__
|
8
|
+
|
9
|
+
|
10
|
+
def online_score_xml(self):
|
11
|
+
"""generate online xml"""
|
12
|
+
|
13
|
+
mults = self.contest.get_mults(self)
|
14
|
+
the_mults = ""
|
15
|
+
for thing in mults:
|
16
|
+
the_mults += (
|
17
|
+
f'<mult band="total" mode="ALL" type="{thing}">{mults.get(thing,0)}</mult>'
|
18
|
+
)
|
19
|
+
|
20
|
+
the_points = self.contest.just_points(self)
|
21
|
+
|
22
|
+
the_date_time = datetime.datetime.now(datetime.timezone.utc).isoformat(" ")[:19]
|
23
|
+
assisted = self.contest_settings.get("AssistedCategory", "")
|
24
|
+
bands = self.contest_settings.get("BandCategory", "")
|
25
|
+
modes = self.contest_settings.get("ModeCategory", "")
|
26
|
+
xmiter = self.contest_settings.get("TransmitterCategory", "")
|
27
|
+
ops = self.contest_settings.get("OperatorCategory", "")
|
28
|
+
overlay = self.contest_settings.get("OverlayCategory", "")
|
29
|
+
power = self.contest_settings.get("PowerCategory", "")
|
30
|
+
|
31
|
+
the_xml = (
|
32
|
+
'<?xml version="1.0"?>'
|
33
|
+
"<dynamicresults>"
|
34
|
+
f"<contest>{self.contest.cabrillo_name}</contest>"
|
35
|
+
f'<call>{self.station.get("Call", "")}</call>'
|
36
|
+
# <ops>NR9Q</ops>
|
37
|
+
f'<class power="{power}" assisted = "{assisted}" transmitter="{xmiter}" ops="{ops}" bands="{bands}" mode="{modes}" overlay="{overlay}"></class>'
|
38
|
+
f"<club>{self.station.get('Club', '').upper()}</club>"
|
39
|
+
"<soft>Not1MM</soft>"
|
40
|
+
f"<version>{__version__}</version>"
|
41
|
+
"<qth>"
|
42
|
+
# <dxcccountry>K</dxcccountry>
|
43
|
+
f"<cqzone>{self.station.get('CQZone','')}</cqzone>"
|
44
|
+
f"<iaruzone>{self.station.get('IARUZone','')}</iaruzone>"
|
45
|
+
f"<arrlsection>{self.station.get('ARRLSection', '')}</arrlsection>"
|
46
|
+
f"<stprvoth>{self.station.get('State','')}</stprvoth>"
|
47
|
+
f"<grid6>{self.station.get('GridSquare','')}</grid6>"
|
48
|
+
"</qth>"
|
49
|
+
"<breakdown>"
|
50
|
+
f'<qso band="total" mode="ALL">{self.contest.show_qso(self)}</qso>'
|
51
|
+
f"{the_mults}"
|
52
|
+
f'<point band="total" mode="ALL">{the_points}</point>'
|
53
|
+
"</breakdown>"
|
54
|
+
f"<score>{self.contest.calc_score(self)}</score>"
|
55
|
+
f"<timestamp>{the_date_time}</timestamp>"
|
56
|
+
"</dynamicresults>"
|
57
|
+
)
|
58
|
+
return the_xml
|
7
59
|
|
8
60
|
|
9
61
|
def get_points(self):
|
@@ -21,10 +73,9 @@ def gen_adif(self, cabrillo_name: str, contest_id=""):
|
|
21
73
|
"""
|
22
74
|
now = datetime.datetime.now()
|
23
75
|
date_time = now.strftime("%Y-%m-%d_%H-%M-%S")
|
76
|
+
station_callsign = self.station.get("Call", "").upper()
|
24
77
|
filename = (
|
25
|
-
str(Path.home())
|
26
|
-
+ "/"
|
27
|
-
+ f"{self.station.get('Call', '').upper()}_{cabrillo_name}_{date_time}.adi"
|
78
|
+
str(Path.home()) + "/" + f"{station_callsign}_{cabrillo_name}_{date_time}.adi"
|
28
79
|
)
|
29
80
|
log = self.database.fetch_all_contacts_asc()
|
30
81
|
try:
|
@@ -71,6 +122,15 @@ def gen_adif(self, cabrillo_name: str, contest_id=""):
|
|
71
122
|
except TypeError:
|
72
123
|
...
|
73
124
|
|
125
|
+
try:
|
126
|
+
print(
|
127
|
+
f"<STATION_CALLSIGN:{len(station_callsign)}>{station_callsign}",
|
128
|
+
end="\r\n",
|
129
|
+
file=file_descriptor,
|
130
|
+
)
|
131
|
+
except TypeError:
|
132
|
+
...
|
133
|
+
|
74
134
|
try:
|
75
135
|
print(
|
76
136
|
f"<CALL:{len(hiscall)}>{hiscall.upper()}",
|
@@ -41,6 +41,19 @@ class Settings(QtWidgets.QDialog):
|
|
41
41
|
def setup(self):
|
42
42
|
"""setup dialog"""
|
43
43
|
|
44
|
+
self.send_rtc_scores.setChecked(
|
45
|
+
bool(self.preference.get("send_rtc_scores", False))
|
46
|
+
)
|
47
|
+
|
48
|
+
value = self.preference.get("rtc_url", "")
|
49
|
+
index = self.rtc_url.findText(value)
|
50
|
+
if index != -1:
|
51
|
+
self.rtc_url.setCurrentIndex(index)
|
52
|
+
|
53
|
+
self.rtc_user.setText(str(self.preference.get("rtc_user", "")))
|
54
|
+
self.rtc_pass.setText(str(self.preference.get("rtc_pass", "")))
|
55
|
+
self.rtc_interval.setText(str(self.preference.get("rtc_interval", "2")))
|
56
|
+
|
44
57
|
self.use_call_history.setChecked(
|
45
58
|
bool(self.preference.get("use_call_history", False))
|
46
59
|
)
|
@@ -195,6 +208,15 @@ class Settings(QtWidgets.QDialog):
|
|
195
208
|
"""
|
196
209
|
Write preferences to json file.
|
197
210
|
"""
|
211
|
+
self.preference["send_rtc_scores"] = self.send_rtc_scores.isChecked()
|
212
|
+
self.preference["rtc_url"] = self.rtc_url.currentText()
|
213
|
+
self.preference["rtc_user"] = self.rtc_user.text()
|
214
|
+
self.preference["rtc_pass"] = self.rtc_pass.text()
|
215
|
+
try:
|
216
|
+
self.preference["rtc_interval"] = int(self.rtc_interval.text())
|
217
|
+
except ValueError:
|
218
|
+
self.preference["rtc_interval"] = 2
|
219
|
+
|
198
220
|
self.preference["use_call_history"] = self.use_call_history.isChecked()
|
199
221
|
self.preference["use_esm"] = self.use_esm.isChecked()
|
200
222
|
self.preference["esm_cq"] = self.esm_cq.currentText()
|
@@ -3,8 +3,8 @@
|
|
3
3
|
not1mm Contest logger
|
4
4
|
Email: michael.bridak@gmail.com
|
5
5
|
GPL V3
|
6
|
-
Class:
|
7
|
-
Purpose:
|
6
|
+
Class: LookupService
|
7
|
+
Purpose: Lookup callsigns with online services.
|
8
8
|
"""
|
9
9
|
|
10
10
|
# pylint: disable=unused-import, c-extension-no-member, no-member, invalid-name, too-many-lines
|