not1mm 24.10.1__tar.gz → 24.10.5__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.1 → not1mm-24.10.5}/PKG-INFO +23 -13
- {not1mm-24.10.1 → not1mm-24.10.5}/README.md +22 -12
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/__main__.py +30 -6
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/new_contest.ui +5 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/cwinterface.py +1 -1
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/version.py +1 -1
- not1mm-24.10.5/not1mm/plugins/cq_wpx_rtty.py +507 -0
- not1mm-24.10.5/not1mm/test.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm.egg-info/PKG-INFO +23 -13
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm.egg-info/SOURCES.txt +1 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/pyproject.toml +1 -1
- not1mm-24.10.1/not1mm/test.py +0 -47
- {not1mm-24.10.1 → not1mm-24.10.5}/LICENSE +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/__init__.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/bandmap.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/checkwindow.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/JetBrainsMono-ExtraLight.ttf +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/MASTER.SCP +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/about.ui +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/alpha bravo charlie delta.txt +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/bandmap.ui +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/check.png +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/checkwindow.ui +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/configuration.ui +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/contests.sql +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/cty.json +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/cwmacros.txt +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/donors.html +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/editcontact.ui +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/editmacro.ui +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/greendot.png +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/k6gte-not1mm.desktop +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/k6gte.not1mm-128.png +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/k6gte.not1mm-32.png +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/k6gte.not1mm-64.png +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/logwindow.ui +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/logwindowx.ui +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/main.ui +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/not1mm.html +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/opon.ui +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/0.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/1.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/2.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/3.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/4.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/5.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/6.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/7.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/73.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/8.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/9.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/a.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/again.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/b.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/c.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/contest.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/cq.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/d.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/e.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/f.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/g.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/h.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/i.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/j.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/k.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/k6gte.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/l.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/m.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/mynumber.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/n.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/nil.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/o.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/p.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/q.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/r.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/roger.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/s.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/space.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/t.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/thankyou.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/thankyouqrz.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/u.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/v.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/w.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/x.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/y.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/yourcall.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/z.wav +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/pickcontest.ui +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/radio_green.png +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/radio_grey.png +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/radio_red.png +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/reddot.png +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/rttymacros.txt +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/settings.ui +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/splash.png +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/ssbmacros.txt +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/vfo.ui +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/fsutils.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/__init__.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/about.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/cat_interface.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/database.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/edit_contact.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/edit_macro.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/edit_opon.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/edit_station.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/fldigi_sendstring.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/fldigi_watcher.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/ft8_watcher.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/ham_utility.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/lookup.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/multicast.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/n1mm.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/new_contest.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/playsound.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/plugin_common.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/select_contest.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/settings.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/super_check_partial.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/versiontest.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/logwindow.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lookupservice.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/10_10_fall_cw.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/10_10_spring_cw.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/10_10_summer_phone.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/10_10_winter_phone.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/__init__.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/arrl_10m.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/arrl_dx_cw.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/arrl_dx_ssb.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/arrl_field_day.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/arrl_rtty_ru.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/arrl_ss_cw.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/arrl_ss_phone.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/arrl_vhf_jan.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/arrl_vhf_jun.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/arrl_vhf_sep.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/canada_day.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/cq_160_cw.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/cq_160_ssb.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/cq_wpx_cw.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/cq_wpx_ssb.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/cq_ww_cw.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/cq_ww_rtty.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/cq_ww_ssb.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/cwt.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/general_logging.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/helvetia.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/iaru_fieldday_r1_cw.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/iaru_fieldday_r1_ssb.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/iaru_hf.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/icwc_mst.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/jidx_cw.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/jidx_ph.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/k1usn_sst.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/naqp_cw.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/naqp_ssb.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/phone_weekly_test.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/ref_cw.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/stew_perry_topband.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/weekly_rtty.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/winter_field_day.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/radio.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/vfo.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/voice_keying.py +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm.egg-info/dependency_links.txt +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm.egg-info/entry_points.txt +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm.egg-info/requires.txt +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/not1mm.egg-info/top_level.txt +0 -0
- {not1mm-24.10.1 → not1mm-24.10.5}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: not1mm
|
3
|
-
Version: 24.10.
|
3
|
+
Version: 24.10.5
|
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
|
@@ -201,7 +201,7 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
|
|
201
201
|
- ARRL Sweepstakes CW, SSB
|
202
202
|
- ARRL VHF January, June, September
|
203
203
|
- CQ 160 CW, SSB
|
204
|
-
- CQ WPX CW, SSB
|
204
|
+
- CQ WPX CW, RTTY, SSB
|
205
205
|
- CQ World Wide CW, RTTY, SSB
|
206
206
|
- CWOps CWT
|
207
207
|
- Helvetia
|
@@ -219,6 +219,8 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
|
|
219
219
|
|
220
220
|
## Recent Changes
|
221
221
|
|
222
|
+
- [24-10-5] Force reselction of contest after different DB opened.
|
223
|
+
- [24-10-2] Add WPX RTTY.
|
222
224
|
- [24-10-1] Merged PR removing leading zeros from serial numbers. Merged PR correcting the parsing of lookups for previous name and state in the CWT.
|
223
225
|
|
224
226
|
See [CHANGELOG.md](CHANGELOG.md) for prior changes.
|
@@ -294,16 +296,18 @@ source .profile
|
|
294
296
|
|
295
297
|
```bash
|
296
298
|
sudo dnf upgrade --refresh
|
297
|
-
sudo dnf install python3-pip portaudio
|
298
|
-
|
299
|
+
sudo dnf install python3-pip pipx portaudio
|
300
|
+
pipx install not1mm
|
301
|
+
pipx ensurepath
|
299
302
|
```
|
300
303
|
|
301
304
|
#### Fedora 40
|
302
305
|
|
303
306
|
```bash
|
304
307
|
sudo dnf upgrade --refresh
|
305
|
-
sudo dnf install python3-pip python3-pyqt6 portaudio
|
306
|
-
|
308
|
+
sudo dnf install python3-pip pipx python3-pyqt6 portaudio
|
309
|
+
pipx install not1mm
|
310
|
+
pipx ensurepath
|
307
311
|
```
|
308
312
|
|
309
313
|
</details>
|
@@ -335,10 +339,6 @@ pipx ensurepath
|
|
335
339
|
</details>
|
336
340
|
<br>
|
337
341
|
|
338
|
-
You can now open a new terminal and type not1mm. On it's first run, it may or
|
339
|
-
may not install a lovely non AI generated icon, which you can later click on to
|
340
|
-
launch the application.
|
341
|
-
|
342
342
|
### Python, PyPI, pip and pipx
|
343
343
|
|
344
344
|
This software is a Python package hosted on PyPI, and installable with the pip
|
@@ -598,7 +598,13 @@ appear. Those without will not.
|
|
598
598
|
|
599
599
|
## Logging WSJT-X FT8/FT4/ETC and FLDIGI RTTY contacts
|
600
600
|
|
601
|
-
**Digital modes only working for
|
601
|
+
**Digital modes only working for:**
|
602
|
+
|
603
|
+
- ARRL Field Day
|
604
|
+
- ARRL VHF
|
605
|
+
- Weekly RTTY
|
606
|
+
- CQ WW DX RTTY
|
607
|
+
- CQ WPX RTTY
|
602
608
|
|
603
609
|
not1mm listens for WSJT-X UDP traffic on the Multicast address 224.0.0.1:2237.
|
604
610
|
No setup is needed to be done on not1mm's side. That's good because I'm lazy.
|
@@ -607,6 +613,10 @@ not1mm polls for fldigi QSOs via it's XMLRPC interface. It does this in a rather
|
|
607
613
|
way. It just keeps asking what was the last QSO and compares it to the previous response.
|
608
614
|
If it's different, it's new. I've added the Weekly RTTY Test so this can be tested.
|
609
615
|
|
616
|
+
The F1-F12 function keys be sent to fldigi via XMLRPC. Fldigi will be placed into TX
|
617
|
+
mode, the message will be sent and a ^r will be tacked onto the end to place it back into
|
618
|
+
RX mode.
|
619
|
+
|
610
620
|
Unlike WSJT, fldigi needs to be setup for this to work. The XMLRPC interface needs to be
|
611
621
|
active. And in fldigi's config dialog go to CONTESTS -> General -> CONTEST and select
|
612
622
|
Generic Contest. Make sure the Text Capture Order field says CALL EXCHANGE.
|
@@ -624,7 +634,7 @@ field.
|
|
624
634
|
|
625
635
|
To edit the macros, choose `File` > `Edit Macros`. This will open your systems
|
626
636
|
registered text editor with current macros loaded. When your done just save the
|
627
|
-
file and close the editor. The file loaded to edit, CW or
|
637
|
+
file and close the editor. The file loaded to edit, CW, SSB or RTTY, will be
|
628
638
|
determined by your current operating mode.
|
629
639
|
|
630
640
|
After editing and saving the macro file. You can force the logger to reload the
|
@@ -707,7 +717,7 @@ is this has happened, since the gridsquare will replace the word "Regional".
|
|
707
717
|
| [Shift-Tab] | Move cursor left One field. |
|
708
718
|
| [SPACE] | When in the callsign field, will move the input to the first field needed for the exchange. |
|
709
719
|
| [Enter] | Submits the fields to the log. |
|
710
|
-
| [F1-F12] | Send (CW
|
720
|
+
| [F1-F12] | Send (CW/RTTY/Voice) macros. |
|
711
721
|
| [CTRL-S] | Spot Callsign to the cluster. |
|
712
722
|
| [CTRL-M] | Mark Callsign to the bandmap window to work later. |
|
713
723
|
| [CTRL-G] | Tune to a spot matching partial text in the callsign entry field (CAT Required). |
|
@@ -170,7 +170,7 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
|
|
170
170
|
- ARRL Sweepstakes CW, SSB
|
171
171
|
- ARRL VHF January, June, September
|
172
172
|
- CQ 160 CW, SSB
|
173
|
-
- CQ WPX CW, SSB
|
173
|
+
- CQ WPX CW, RTTY, SSB
|
174
174
|
- CQ World Wide CW, RTTY, SSB
|
175
175
|
- CWOps CWT
|
176
176
|
- Helvetia
|
@@ -188,6 +188,8 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
|
|
188
188
|
|
189
189
|
## Recent Changes
|
190
190
|
|
191
|
+
- [24-10-5] Force reselction of contest after different DB opened.
|
192
|
+
- [24-10-2] Add WPX RTTY.
|
191
193
|
- [24-10-1] Merged PR removing leading zeros from serial numbers. Merged PR correcting the parsing of lookups for previous name and state in the CWT.
|
192
194
|
|
193
195
|
See [CHANGELOG.md](CHANGELOG.md) for prior changes.
|
@@ -263,16 +265,18 @@ source .profile
|
|
263
265
|
|
264
266
|
```bash
|
265
267
|
sudo dnf upgrade --refresh
|
266
|
-
sudo dnf install python3-pip portaudio
|
267
|
-
|
268
|
+
sudo dnf install python3-pip pipx portaudio
|
269
|
+
pipx install not1mm
|
270
|
+
pipx ensurepath
|
268
271
|
```
|
269
272
|
|
270
273
|
#### Fedora 40
|
271
274
|
|
272
275
|
```bash
|
273
276
|
sudo dnf upgrade --refresh
|
274
|
-
sudo dnf install python3-pip python3-pyqt6 portaudio
|
275
|
-
|
277
|
+
sudo dnf install python3-pip pipx python3-pyqt6 portaudio
|
278
|
+
pipx install not1mm
|
279
|
+
pipx ensurepath
|
276
280
|
```
|
277
281
|
|
278
282
|
</details>
|
@@ -304,10 +308,6 @@ pipx ensurepath
|
|
304
308
|
</details>
|
305
309
|
<br>
|
306
310
|
|
307
|
-
You can now open a new terminal and type not1mm. On it's first run, it may or
|
308
|
-
may not install a lovely non AI generated icon, which you can later click on to
|
309
|
-
launch the application.
|
310
|
-
|
311
311
|
### Python, PyPI, pip and pipx
|
312
312
|
|
313
313
|
This software is a Python package hosted on PyPI, and installable with the pip
|
@@ -567,7 +567,13 @@ appear. Those without will not.
|
|
567
567
|
|
568
568
|
## Logging WSJT-X FT8/FT4/ETC and FLDIGI RTTY contacts
|
569
569
|
|
570
|
-
**Digital modes only working for
|
570
|
+
**Digital modes only working for:**
|
571
|
+
|
572
|
+
- ARRL Field Day
|
573
|
+
- ARRL VHF
|
574
|
+
- Weekly RTTY
|
575
|
+
- CQ WW DX RTTY
|
576
|
+
- CQ WPX RTTY
|
571
577
|
|
572
578
|
not1mm listens for WSJT-X UDP traffic on the Multicast address 224.0.0.1:2237.
|
573
579
|
No setup is needed to be done on not1mm's side. That's good because I'm lazy.
|
@@ -576,6 +582,10 @@ not1mm polls for fldigi QSOs via it's XMLRPC interface. It does this in a rather
|
|
576
582
|
way. It just keeps asking what was the last QSO and compares it to the previous response.
|
577
583
|
If it's different, it's new. I've added the Weekly RTTY Test so this can be tested.
|
578
584
|
|
585
|
+
The F1-F12 function keys be sent to fldigi via XMLRPC. Fldigi will be placed into TX
|
586
|
+
mode, the message will be sent and a ^r will be tacked onto the end to place it back into
|
587
|
+
RX mode.
|
588
|
+
|
579
589
|
Unlike WSJT, fldigi needs to be setup for this to work. The XMLRPC interface needs to be
|
580
590
|
active. And in fldigi's config dialog go to CONTESTS -> General -> CONTEST and select
|
581
591
|
Generic Contest. Make sure the Text Capture Order field says CALL EXCHANGE.
|
@@ -593,7 +603,7 @@ field.
|
|
593
603
|
|
594
604
|
To edit the macros, choose `File` > `Edit Macros`. This will open your systems
|
595
605
|
registered text editor with current macros loaded. When your done just save the
|
596
|
-
file and close the editor. The file loaded to edit, CW or
|
606
|
+
file and close the editor. The file loaded to edit, CW, SSB or RTTY, will be
|
597
607
|
determined by your current operating mode.
|
598
608
|
|
599
609
|
After editing and saving the macro file. You can force the logger to reload the
|
@@ -676,7 +686,7 @@ is this has happened, since the gridsquare will replace the word "Regional".
|
|
676
686
|
| [Shift-Tab] | Move cursor left One field. |
|
677
687
|
| [SPACE] | When in the callsign field, will move the input to the first field needed for the exchange. |
|
678
688
|
| [Enter] | Submits the fields to the log. |
|
679
|
-
| [F1-F12] | Send (CW
|
689
|
+
| [F1-F12] | Send (CW/RTTY/Voice) macros. |
|
680
690
|
| [CTRL-S] | Spot Callsign to the cluster. |
|
681
691
|
| [CTRL-M] | Mark Callsign to the bandmap window to work later. |
|
682
692
|
| [CTRL-G] | Tune to a spot matching partial text in the callsign entry field (CAT Required). |
|
@@ -175,10 +175,10 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
175
175
|
lookup_service = None
|
176
176
|
fldigi_util = None
|
177
177
|
|
178
|
-
def __init__(self,
|
179
|
-
super().__init__(
|
178
|
+
def __init__(self, splash):
|
179
|
+
super().__init__()
|
180
180
|
logger.info("MainWindow: __init__")
|
181
|
-
|
181
|
+
self.splash = splash
|
182
182
|
self.dock_loc = {
|
183
183
|
"Top": Qt.DockWidgetArea.TopDockWidgetArea,
|
184
184
|
"Right": Qt.DockWidgetArea.RightDockWidgetArea,
|
@@ -519,6 +519,8 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
519
519
|
QtGui.QIcon(str(fsutils.APP_DATA_PATH / "k6gte.not1mm-32.png"))
|
520
520
|
)
|
521
521
|
|
522
|
+
self.show_splash_msg("Loading CTY file.")
|
523
|
+
|
522
524
|
try:
|
523
525
|
with open(
|
524
526
|
fsutils.APP_DATA_PATH / "cty.json", "rt", encoding="utf-8"
|
@@ -527,11 +529,15 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
527
529
|
except (IOError, JSONDecodeError, TypeError):
|
528
530
|
logging.CRITICAL("There was an error parsing the BigCity file.")
|
529
531
|
|
532
|
+
self.show_splash_msg("Starting LookUp Service.")
|
533
|
+
|
530
534
|
self.lookup_service = LookupService()
|
531
535
|
self.lookup_service.hide()
|
532
536
|
|
537
|
+
self.show_splash_msg("Reading preferences.")
|
533
538
|
self.readpreferences()
|
534
539
|
|
540
|
+
self.show_splash_msg("Starting voice thread.")
|
535
541
|
self.voice_process = Voice()
|
536
542
|
self.voice_process.moveToThread(self.voice_thread)
|
537
543
|
self.voice_thread.started.connect(self.voice_process.run)
|
@@ -560,7 +566,9 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
560
566
|
self.make_op_dir()
|
561
567
|
|
562
568
|
self.clearinputs()
|
569
|
+
self.show_splash_msg("Loading contest.")
|
563
570
|
self.load_contest()
|
571
|
+
self.show_splash_msg("Reading macros.")
|
564
572
|
self.read_cw_macros()
|
565
573
|
|
566
574
|
# Featureset for wayland
|
@@ -569,6 +577,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
569
577
|
| QtWidgets.QDockWidget.DockWidgetFeature.DockWidgetMovable
|
570
578
|
)
|
571
579
|
|
580
|
+
self.show_splash_msg("Starting FlDigi watcher.")
|
572
581
|
self.fldigi_watcher = FlDigiWatcher()
|
573
582
|
self.fldigi_watcher.moveToThread(self.fldigi_thread)
|
574
583
|
self.fldigi_thread.started.connect(self.fldigi_watcher.run)
|
@@ -576,6 +585,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
576
585
|
self.fldigi_watcher.poll_callback.connect(self.fldigi_qso)
|
577
586
|
self.fldigi_thread.start()
|
578
587
|
|
588
|
+
self.show_splash_msg("Setting up LogWindow.")
|
579
589
|
self.log_window = LogWindow()
|
580
590
|
self.log_window.setObjectName("log-window")
|
581
591
|
if os.environ.get("WAYLAND_DISPLAY"):
|
@@ -583,6 +593,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
583
593
|
self.addDockWidget(Qt.DockWidgetArea.TopDockWidgetArea, self.log_window)
|
584
594
|
self.log_window.hide()
|
585
595
|
|
596
|
+
self.show_splash_msg("Setting up BandMapWindow.")
|
586
597
|
self.bandmap_window = BandMapWindow()
|
587
598
|
self.bandmap_window.setObjectName("bandmap-window")
|
588
599
|
if os.environ.get("WAYLAND_DISPLAY"):
|
@@ -590,6 +601,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
590
601
|
self.addDockWidget(Qt.DockWidgetArea.LeftDockWidgetArea, self.bandmap_window)
|
591
602
|
self.bandmap_window.hide()
|
592
603
|
|
604
|
+
self.show_splash_msg("Setting up CheckWindow.")
|
593
605
|
self.check_window = CheckWindow()
|
594
606
|
self.check_window.setObjectName("check-window")
|
595
607
|
if os.environ.get("WAYLAND_DISPLAY"):
|
@@ -597,6 +609,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
597
609
|
self.addDockWidget(Qt.DockWidgetArea.RightDockWidgetArea, self.check_window)
|
598
610
|
self.check_window.hide()
|
599
611
|
|
612
|
+
self.show_splash_msg("Setting up VFOWindow.")
|
600
613
|
self.vfo_window = VfoWindow()
|
601
614
|
self.vfo_window.setObjectName("vfo-window")
|
602
615
|
if os.environ.get("WAYLAND_DISPLAY"):
|
@@ -604,6 +617,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
604
617
|
self.addDockWidget(Qt.DockWidgetArea.RightDockWidgetArea, self.vfo_window)
|
605
618
|
self.vfo_window.hide()
|
606
619
|
|
620
|
+
self.show_splash_msg("Restoring window states.")
|
607
621
|
self.settings = QSettings("K6GTE", "not1mm")
|
608
622
|
if self.settings.value("windowState") is not None:
|
609
623
|
self.restoreState(self.settings.value("windowState"))
|
@@ -635,6 +649,15 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
635
649
|
"You can udate to the current version by using:\npip install -U not1mm"
|
636
650
|
)
|
637
651
|
|
652
|
+
def show_splash_msg(self, msg: str) -> None:
|
653
|
+
"""Show text message in the splash window."""
|
654
|
+
self.splash.showMessage(
|
655
|
+
msg,
|
656
|
+
alignment=Qt.AlignmentFlag.AlignBottom | Qt.AlignmentFlag.AlignCenter,
|
657
|
+
color=QColor(255, 255, 0),
|
658
|
+
)
|
659
|
+
QCoreApplication.processEvents()
|
660
|
+
|
638
661
|
def fldigi_qso(self, result: str):
|
639
662
|
"""
|
640
663
|
gets called when there is a new fldigi qso logged.
|
@@ -1061,6 +1084,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
1061
1084
|
cmd["station"] = platform.node()
|
1062
1085
|
self.multicast_interface.send_as_json(cmd)
|
1063
1086
|
self.clearinputs()
|
1087
|
+
self.open_contest()
|
1064
1088
|
|
1065
1089
|
def new_contest(self) -> None:
|
1066
1090
|
"""Create new contest in existing database."""
|
@@ -3601,7 +3625,7 @@ app = QtWidgets.QApplication(sys.argv)
|
|
3601
3625
|
pixmap = QPixmap(f"{os.fspath(fsutils.APP_DATA_PATH)}/splash.png")
|
3602
3626
|
splash = QSplashScreen(pixmap)
|
3603
3627
|
splash.show()
|
3604
|
-
app.processEvents()
|
3628
|
+
# app.processEvents()
|
3605
3629
|
splash.showMessage(
|
3606
3630
|
"Starting Up",
|
3607
3631
|
alignment=Qt.AlignmentFlag.AlignBottom | Qt.AlignmentFlag.AlignCenter,
|
@@ -3611,10 +3635,10 @@ QCoreApplication.processEvents()
|
|
3611
3635
|
|
3612
3636
|
families = load_fonts_from_dir(os.fspath(fsutils.APP_DATA_PATH))
|
3613
3637
|
logger.info(f"font families {families}")
|
3614
|
-
window = MainWindow()
|
3638
|
+
window = MainWindow(splash)
|
3615
3639
|
window.callsign.setFocus()
|
3616
|
-
window.show()
|
3617
3640
|
splash.finish(window)
|
3641
|
+
window.show()
|
3618
3642
|
|
3619
3643
|
if __name__ == "__main__":
|
3620
3644
|
run()
|