not1mm 25.3.31.1__tar.gz → 25.4.2__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.3.31.1 → not1mm-25.4.2}/PKG-INFO +13 -23
- {not1mm-25.3.31.1 → not1mm-25.4.2}/README.md +11 -21
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/__main__.py +10 -33
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/checkwindow.py +2 -46
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/MASTER.SCP +4353 -4553
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/bandmap.ui +29 -11
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/cty.json +1 -1
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/main.ui +39 -30
- not1mm-25.4.2/not1mm/data/ratewindow.ui +370 -0
- not1mm-25.4.2/not1mm/lib/version.py +3 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/logwindow.py +0 -49
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/ratewindow.py +0 -77
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/statistics.py +0 -50
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/vfo.py +0 -48
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm.egg-info/PKG-INFO +13 -23
- {not1mm-25.3.31.1 → not1mm-25.4.2}/pyproject.toml +2 -2
- not1mm-25.3.31.1/not1mm/data/ratewindow.ui +0 -753
- not1mm-25.3.31.1/not1mm/lib/version.py +0 -3
- {not1mm-25.3.31.1 → not1mm-25.4.2}/LICENSE +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/__init__.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/bandmap.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/JetBrainsMono-ExtraLight.ttf +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/about.ui +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/alpha bravo charlie delta.txt +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/check.png +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/checkwindow.ui +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/configuration.ui +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/contests.sql +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/cwmacros.txt +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/donors.html +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/editcontact.ui +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/editmacro.ui +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/greendot.png +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/k6gte-not1mm.desktop +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/k6gte.not1mm-128.png +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/k6gte.not1mm-32.png +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/k6gte.not1mm-64.png +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/logwindow.ui +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/logwindowx.ui +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/new_contest.ui +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/not1mm.html +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/opon.ui +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/0.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/1.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/2.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/3.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/4.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/5.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/6.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/7.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/73.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/8.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/9.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/a.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/again.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/b.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/c.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/contest.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/cq.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/cq2.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/d.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/e.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/f.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/g.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/h.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/i.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/j.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/k.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/k6gte.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/l.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/m.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/mynumber.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/n.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/nil.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/o.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/p.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/q.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/r.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/roger.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/s.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/space.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/t.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/thankyou.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/thankyouqrz.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/u.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/v.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/w.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/x.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/y.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/yourcall.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/phonetics/z.wav +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/pickcontest.ui +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/radio_green.png +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/radio_grey.png +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/radio_red.png +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/reddot.png +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/rttymacros.txt +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/settings.ui +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/splash.png +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/ssbmacros.txt +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/statistics.ui +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/data/vfo.ui +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/fsutils.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/lib/__init__.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/lib/about.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/lib/cat_interface.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/lib/cwinterface.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/lib/database.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/lib/edit_contact.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/lib/edit_macro.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/lib/edit_opon.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/lib/edit_station.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/lib/fldigi_sendstring.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/lib/ft8_watcher.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/lib/ham_utility.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/lib/lookup.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/lib/multicast.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/lib/n1mm.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/lib/new_contest.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/lib/plugin_common.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/lib/select_contest.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/lib/settings.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/lib/super_check_partial.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/lib/versiontest.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/lookupservice.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/10_10_fall_cw.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/10_10_spring_cw.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/10_10_summer_phone.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/10_10_winter_phone.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/__init__.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/arrl_10m.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/arrl_160m.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/arrl_dx_cw.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/arrl_dx_ssb.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/arrl_field_day.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/arrl_rtty_ru.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/arrl_ss_cw.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/arrl_ss_phone.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/arrl_vhf_jan.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/arrl_vhf_jun.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/arrl_vhf_sep.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/canada_day.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/cq_160_cw.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/cq_160_ssb.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/cq_wpx_cw.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/cq_wpx_rtty.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/cq_wpx_ssb.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/cq_ww_cw.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/cq_ww_rtty.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/cq_ww_ssb.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/cwt.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/darc_vhf.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/darc_xmas.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/ea_majistad_cw.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/ea_majistad_ssb.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/ea_rtty.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/general_logging.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/helvetia.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/iaru_fieldday_r1_cw.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/iaru_fieldday_r1_ssb.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/iaru_hf.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/icwc_mst.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/jidx_cw.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/jidx_ph.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/k1usn_sst.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/labre_rs_digi.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/lz-dx.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/naqp_cw.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/naqp_rtty.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/naqp_ssb.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/phone_weekly_test.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/raem.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/randomgram.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/ref_cw.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/ref_ssb.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/stew_perry_topband.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/weekly_rtty.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/plugins/winter_field_day.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/radio.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/rtc_service.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/test.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm/voice_keying.py +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm.egg-info/SOURCES.txt +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm.egg-info/dependency_links.txt +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm.egg-info/entry_points.txt +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm.egg-info/requires.txt +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/not1mm.egg-info/top_level.txt +0 -0
- {not1mm-25.3.31.1 → not1mm-25.4.2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: not1mm
|
3
|
-
Version: 25.
|
3
|
+
Version: 25.4.2
|
4
4
|
Summary: NOT1MM Logger
|
5
5
|
Author-email: Michael Bridak <michael.bridak@gmail.com>
|
6
6
|
License: GPL-3.0-or-later
|
@@ -13,7 +13,7 @@ Classifier: Operating System :: POSIX :: Linux
|
|
13
13
|
Classifier: Intended Audience :: End Users/Desktop
|
14
14
|
Classifier: Natural Language :: English
|
15
15
|
Classifier: Topic :: Communications :: Ham Radio
|
16
|
-
Requires-Python: >=3.
|
16
|
+
Requires-Python: >=3.10
|
17
17
|
Description-Content-Type: text/markdown
|
18
18
|
License-File: LICENSE
|
19
19
|
Requires-Dist: PyQt6
|
@@ -247,24 +247,8 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
|
|
247
247
|
|
248
248
|
## Recent Changes
|
249
249
|
|
250
|
-
- [25-
|
251
|
-
- [25-
|
252
|
-
- [25-3-27-1] Detect system dark mode.
|
253
|
-
- [25-3-27] Add more DI and PH mode to stats window.
|
254
|
-
- [25-3-26] Record 0 points on dupes for each contest, excluding RandomGram.
|
255
|
-
- [25-3-25-1] Improved process messaging.
|
256
|
-
- [25-3-25] Use safer dict key access in the stats window.
|
257
|
-
- [25-3-24] Add CW, PH, DI counts to the statistics window.
|
258
|
-
- [25-3-23] Add a statistics window.
|
259
|
-
- [25-3-19-1] Add EA His Maj King of Spain SSB.
|
260
|
-
- [25-3-19] Merged PR from @DD5ML Adding DARC VHF.
|
261
|
-
- [25-3-18] Add His Maj King of Spain CW
|
262
|
-
- [25-3-17] Add EA RTTY contest.
|
263
|
-
- [25-3-14] Add call history support to ARR Field Day.
|
264
|
-
- [25-3-10] Slight change to adif header. Slight change to CAT status icon state.
|
265
|
-
- [25-3-5] Added checks for blank/comment lines in the macros
|
266
|
-
- [25-3-2] Added call history support to ARRL DX, just in time for it to be over.
|
267
|
-
- [25-3-1] Add {OTHER1} and {OTHER2} macros.
|
250
|
+
- [25-4-2] Add some tool tips to bandmap and main. Updated Zoom buttons on bandmap. Updated minimum Python version to 3.10.
|
251
|
+
- [25-4-1] Fix: statistics window not populating when initially activated from the window menu. Removed unused code chucks. Removed some unused and hidden visual elements.
|
268
252
|
|
269
253
|
See [CHANGELOG.md](CHANGELOG.md) for prior changes.
|
270
254
|
|
@@ -281,7 +265,7 @@ clue me into the black magic needed to get it to work.
|
|
281
265
|
|
282
266
|
Not1MM requires:
|
283
267
|
|
284
|
-
- Python 3.
|
268
|
+
- Python 3.10+
|
285
269
|
- PyQt6
|
286
270
|
- libportaudio2
|
287
271
|
- libxcb-cursor0 (maybe... Depends on the distro)
|
@@ -634,12 +618,18 @@ appear. Those without will not.
|
|
634
618
|
|
635
619
|
On the Options TAB you can:
|
636
620
|
|
637
|
-
- Select to use Enter Sends Message (ESM), and configure it's function keys.
|
638
|
-
- Select whether or not to use Call History info.
|
621
|
+
- Select to use Enter Sends Message ([ESM](#esm)), and configure it's function keys.
|
622
|
+
- Select whether or not to use [Call History](#call-history-files) info.
|
639
623
|
- Select whether or not to send XML score info to online scoreboards.
|
640
624
|
|
641
625
|

|
642
626
|
|
627
|
+
Three realtime score boards are supported:
|
628
|
+
|
629
|
+
- Real Time Contest Server at hamscore.com
|
630
|
+
- Contest Online ScoreBoard at contestonlinescore.com
|
631
|
+
- LiveScore at contest.run
|
632
|
+
|
643
633
|
## Logging WSJT-X FT8/FT4/ETC and FLDIGI RTTY contacts
|
644
634
|
|
645
635
|
Not1MM listens for WSJT-X UDP traffic on the Multicast address 224.0.0.1:2237.
|
@@ -215,24 +215,8 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
|
|
215
215
|
|
216
216
|
## Recent Changes
|
217
217
|
|
218
|
-
- [25-
|
219
|
-
- [25-
|
220
|
-
- [25-3-27-1] Detect system dark mode.
|
221
|
-
- [25-3-27] Add more DI and PH mode to stats window.
|
222
|
-
- [25-3-26] Record 0 points on dupes for each contest, excluding RandomGram.
|
223
|
-
- [25-3-25-1] Improved process messaging.
|
224
|
-
- [25-3-25] Use safer dict key access in the stats window.
|
225
|
-
- [25-3-24] Add CW, PH, DI counts to the statistics window.
|
226
|
-
- [25-3-23] Add a statistics window.
|
227
|
-
- [25-3-19-1] Add EA His Maj King of Spain SSB.
|
228
|
-
- [25-3-19] Merged PR from @DD5ML Adding DARC VHF.
|
229
|
-
- [25-3-18] Add His Maj King of Spain CW
|
230
|
-
- [25-3-17] Add EA RTTY contest.
|
231
|
-
- [25-3-14] Add call history support to ARR Field Day.
|
232
|
-
- [25-3-10] Slight change to adif header. Slight change to CAT status icon state.
|
233
|
-
- [25-3-5] Added checks for blank/comment lines in the macros
|
234
|
-
- [25-3-2] Added call history support to ARRL DX, just in time for it to be over.
|
235
|
-
- [25-3-1] Add {OTHER1} and {OTHER2} macros.
|
218
|
+
- [25-4-2] Add some tool tips to bandmap and main. Updated Zoom buttons on bandmap. Updated minimum Python version to 3.10.
|
219
|
+
- [25-4-1] Fix: statistics window not populating when initially activated from the window menu. Removed unused code chucks. Removed some unused and hidden visual elements.
|
236
220
|
|
237
221
|
See [CHANGELOG.md](CHANGELOG.md) for prior changes.
|
238
222
|
|
@@ -249,7 +233,7 @@ clue me into the black magic needed to get it to work.
|
|
249
233
|
|
250
234
|
Not1MM requires:
|
251
235
|
|
252
|
-
- Python 3.
|
236
|
+
- Python 3.10+
|
253
237
|
- PyQt6
|
254
238
|
- libportaudio2
|
255
239
|
- libxcb-cursor0 (maybe... Depends on the distro)
|
@@ -602,12 +586,18 @@ appear. Those without will not.
|
|
602
586
|
|
603
587
|
On the Options TAB you can:
|
604
588
|
|
605
|
-
- Select to use Enter Sends Message (ESM), and configure it's function keys.
|
606
|
-
- Select whether or not to use Call History info.
|
589
|
+
- Select to use Enter Sends Message ([ESM](#esm)), and configure it's function keys.
|
590
|
+
- Select whether or not to use [Call History](#call-history-files) info.
|
607
591
|
- Select whether or not to send XML score info to online scoreboards.
|
608
592
|
|
609
593
|

|
610
594
|
|
595
|
+
Three realtime score boards are supported:
|
596
|
+
|
597
|
+
- Real Time Contest Server at hamscore.com
|
598
|
+
- Contest Online ScoreBoard at contestonlinescore.com
|
599
|
+
- LiveScore at contest.run
|
600
|
+
|
611
601
|
## Logging WSJT-X FT8/FT4/ETC and FLDIGI RTTY contacts
|
612
602
|
|
613
603
|
Not1MM listens for WSJT-X UDP traffic on the Multicast address 224.0.0.1:2237.
|
@@ -240,8 +240,6 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
240
240
|
self.cw_entry.returnPressed.connect(self.toggle_cw_entry)
|
241
241
|
|
242
242
|
self.actionCW_Macros.triggered.connect(self.cw_macros_state_changed)
|
243
|
-
# self.actionDark_Mode_2.hide()
|
244
|
-
# self.actionDark_Mode_2.triggered.connect(self.dark_mode_state_changed)
|
245
243
|
self.actionCommand_Buttons_2.triggered.connect(
|
246
244
|
self.command_buttons_state_change
|
247
245
|
)
|
@@ -1025,18 +1023,9 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
1025
1023
|
cmd = {}
|
1026
1024
|
cmd["cmd"] = "DARKMODE"
|
1027
1025
|
cmd["state"] = setdarkmode
|
1028
|
-
# if self.log_window:
|
1029
|
-
# self.log_window.msg_from_main(cmd)
|
1030
1026
|
if self.bandmap_window:
|
1031
1027
|
self.bandmap_window.msg_from_main(cmd)
|
1032
|
-
|
1033
|
-
# self.check_window.msg_from_main(cmd)
|
1034
|
-
# if self.vfo_window:
|
1035
|
-
# self.vfo_window.msg_from_main(cmd)
|
1036
|
-
# if self.rate_window:
|
1037
|
-
# self.rate_window.msg_from_main(cmd)
|
1038
|
-
# if self.statistics_window:
|
1039
|
-
# self.statistics_window.msg_from_main(cmd)
|
1028
|
+
|
1040
1029
|
|
1041
1030
|
if setdarkmode:
|
1042
1031
|
darkPalette = QPalette()
|
@@ -1947,6 +1936,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
1947
1936
|
if self.actionStatistics.isChecked():
|
1948
1937
|
self.statistics_window.show()
|
1949
1938
|
self.statistics_window.setActive(True)
|
1939
|
+
self.statistics_window.get_run_and_total_qs()
|
1950
1940
|
else:
|
1951
1941
|
self.statistics_window.hide()
|
1952
1942
|
self.statistics_window.setActive(False)
|
@@ -3037,22 +3027,22 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
3037
3027
|
except (IOError, TypeError, ValueError) as exception:
|
3038
3028
|
logger.critical("Error: %s", exception)
|
3039
3029
|
|
3040
|
-
if self.pref.get("run_state"):
|
3030
|
+
if self.pref.get("run_state", False) is True:
|
3041
3031
|
self.radioButton_run.setChecked(True)
|
3042
3032
|
else:
|
3043
3033
|
self.radioButton_sp.setChecked(True)
|
3044
3034
|
|
3045
|
-
if self.pref.get("command_buttons"):
|
3035
|
+
if self.pref.get("command_buttons", False) is True:
|
3046
3036
|
self.actionCommand_Buttons.setChecked(True)
|
3047
3037
|
else:
|
3048
3038
|
self.actionCommand_Buttons.setChecked(False)
|
3049
3039
|
|
3050
|
-
if self.pref.get("cw_macros"):
|
3040
|
+
if self.pref.get("cw_macros", False) is True:
|
3051
3041
|
self.actionCW_Macros.setChecked(True)
|
3052
3042
|
else:
|
3053
3043
|
self.actionCW_Macros.setChecked(False)
|
3054
3044
|
|
3055
|
-
if self.pref.get("bands_modes"):
|
3045
|
+
if self.pref.get("bands_modes", False) is True:
|
3056
3046
|
self.actionMode_and_Bands.setChecked(True)
|
3057
3047
|
else:
|
3058
3048
|
self.actionMode_and_Bands.setChecked(False)
|
@@ -3062,13 +3052,6 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
3062
3052
|
if self.lookup_service:
|
3063
3053
|
self.lookup_service.msg_from_main(cmd)
|
3064
3054
|
|
3065
|
-
# if self.pref.get("darkmode"):
|
3066
|
-
# self.actionDark_Mode_2.setChecked(True)
|
3067
|
-
# self.setDarkMode(True)
|
3068
|
-
# else:
|
3069
|
-
# self.setDarkMode(False)
|
3070
|
-
# self.actionDark_Mode_2.setChecked(False)
|
3071
|
-
|
3072
3055
|
try:
|
3073
3056
|
if self.rtc_thread.isRunning():
|
3074
3057
|
self.rtc_service.time_to_quit = True
|
@@ -3091,7 +3074,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
3091
3074
|
except ValueError:
|
3092
3075
|
self.auto_cq_delay = 15000
|
3093
3076
|
|
3094
|
-
if self.pref.get("send_rtc_scores", False):
|
3077
|
+
if self.pref.get("send_rtc_scores", False) is True:
|
3095
3078
|
self.rtc_service = RTCService()
|
3096
3079
|
self.rtc_service.moveToThread(self.rtc_thread)
|
3097
3080
|
self.rtc_thread.started.connect(self.rtc_service.run)
|
@@ -3111,7 +3094,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
3111
3094
|
self.rig_control = None
|
3112
3095
|
self.fldigi_util = FlDigi_Comm()
|
3113
3096
|
|
3114
|
-
if self.pref.get("useflrig", False):
|
3097
|
+
if self.pref.get("useflrig", False) is True:
|
3115
3098
|
logger.debug(
|
3116
3099
|
"Using flrig: %s",
|
3117
3100
|
f"{self.pref.get('CAT_ip')} {self.pref.get('CAT_port')}",
|
@@ -3128,7 +3111,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
3128
3111
|
self.rig_control.poll_callback.connect(self.poll_radio)
|
3129
3112
|
self.radio_thread.start()
|
3130
3113
|
|
3131
|
-
elif self.pref.get("userigctld", False):
|
3114
|
+
elif self.pref.get("userigctld", False) is True:
|
3132
3115
|
logger.debug(
|
3133
3116
|
"Using rigctld: %s",
|
3134
3117
|
f"{self.pref.get('CAT_ip')} {self.pref.get('CAT_port')}",
|
@@ -3249,12 +3232,6 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
3249
3232
|
|
3250
3233
|
self.update_rtc_xml()
|
3251
3234
|
|
3252
|
-
def dark_mode_state_changed(self) -> None:
|
3253
|
-
"""Called when the Dark Mode menu state is changed."""
|
3254
|
-
# self.pref["darkmode"] = self.actionDark_Mode_2.isChecked()
|
3255
|
-
# self.write_preference()
|
3256
|
-
# # self.setDarkMode(self.actionDark_Mode_2.isChecked())
|
3257
|
-
|
3258
3235
|
def rtc_response(self, response):
|
3259
3236
|
print(f"{response=}")
|
3260
3237
|
|
@@ -3325,7 +3302,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
3325
3302
|
|
3326
3303
|
"""
|
3327
3304
|
|
3328
|
-
if self.pref.get("command_buttons"):
|
3305
|
+
if self.pref.get("command_buttons", False) is True:
|
3329
3306
|
self.Command_Buttons.show()
|
3330
3307
|
else:
|
3331
3308
|
self.Command_Buttons.hide()
|
@@ -17,7 +17,7 @@ import Levenshtein
|
|
17
17
|
|
18
18
|
from PyQt6 import uic
|
19
19
|
from PyQt6.QtWidgets import QLabel, QVBoxLayout, QWidget, QDockWidget
|
20
|
-
from PyQt6.QtGui import QMouseEvent
|
20
|
+
from PyQt6.QtGui import QMouseEvent
|
21
21
|
from PyQt6.QtCore import pyqtSignal
|
22
22
|
|
23
23
|
import not1mm.fsutils as fsutils
|
@@ -62,9 +62,7 @@ class CheckWindow(QDockWidget):
|
|
62
62
|
|
63
63
|
def msg_from_main(self, packet):
|
64
64
|
""""""
|
65
|
-
|
66
|
-
self.setDarkMode(packet.get("state", False))
|
67
|
-
return
|
65
|
+
|
68
66
|
if packet.get("cmd", "") == "UPDATELOG":
|
69
67
|
self.clear_lists()
|
70
68
|
return
|
@@ -97,47 +95,6 @@ class CheckWindow(QDockWidget):
|
|
97
95
|
cmd["call"] = item
|
98
96
|
self.message.emit(cmd)
|
99
97
|
|
100
|
-
def setDarkMode(self, dark: bool) -> None:
|
101
|
-
"""Forces a darkmode palette."""
|
102
|
-
return
|
103
|
-
if dark:
|
104
|
-
darkPalette = QPalette()
|
105
|
-
darkColor = QColor(56, 56, 56)
|
106
|
-
disabledColor = QColor(127, 127, 127)
|
107
|
-
darkPalette.setColor(QPalette.ColorRole.Window, darkColor)
|
108
|
-
darkPalette.setColor(QPalette.ColorRole.WindowText, QColorConstants.White)
|
109
|
-
darkPalette.setColor(QPalette.ColorRole.Base, QColor(45, 45, 45))
|
110
|
-
darkPalette.setColor(QPalette.ColorRole.AlternateBase, darkColor)
|
111
|
-
darkPalette.setColor(QPalette.ColorRole.Text, QColorConstants.White)
|
112
|
-
darkPalette.setColor(QPalette.ColorRole.Button, darkColor)
|
113
|
-
darkPalette.setColor(QPalette.ColorRole.ButtonText, QColorConstants.White)
|
114
|
-
darkPalette.setColor(QPalette.ColorRole.BrightText, QColorConstants.Red)
|
115
|
-
darkPalette.setColor(QPalette.ColorRole.Link, QColor(42, 130, 218))
|
116
|
-
darkPalette.setColor(QPalette.ColorRole.Highlight, QColor(42, 130, 218))
|
117
|
-
darkPalette.setColor(
|
118
|
-
QPalette.ColorRole.HighlightedText, QColorConstants.Black
|
119
|
-
)
|
120
|
-
darkPalette.setColor(
|
121
|
-
QPalette.ColorGroup.Disabled,
|
122
|
-
QPalette.ColorRole.ButtonText,
|
123
|
-
disabledColor,
|
124
|
-
)
|
125
|
-
darkPalette.setColor(
|
126
|
-
QPalette.ColorGroup.Disabled,
|
127
|
-
QPalette.ColorRole.HighlightedText,
|
128
|
-
disabledColor,
|
129
|
-
)
|
130
|
-
darkPalette.setColor(
|
131
|
-
QPalette.ColorGroup.Disabled,
|
132
|
-
QPalette.ColorRole.Text,
|
133
|
-
disabledColor,
|
134
|
-
)
|
135
|
-
|
136
|
-
self.setPalette(darkPalette)
|
137
|
-
else:
|
138
|
-
palette = self.style().standardPalette()
|
139
|
-
self.setPalette(palette)
|
140
|
-
|
141
98
|
def load_pref(self) -> None:
|
142
99
|
"""
|
143
100
|
Load preference file to get current db filename and sets the initial darkmode state.
|
@@ -162,7 +119,6 @@ class CheckWindow(QDockWidget):
|
|
162
119
|
|
163
120
|
except IOError as exception:
|
164
121
|
logger.critical("Error: %s", exception)
|
165
|
-
self.setDarkMode(self.pref.get("darkmode", False))
|
166
122
|
|
167
123
|
def clear_lists(self) -> None:
|
168
124
|
"""
|