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.
Files changed (171) hide show
  1. {not1mm-24.10.1 → not1mm-24.10.5}/PKG-INFO +23 -13
  2. {not1mm-24.10.1 → not1mm-24.10.5}/README.md +22 -12
  3. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/__main__.py +30 -6
  4. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/new_contest.ui +5 -0
  5. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/cwinterface.py +1 -1
  6. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/version.py +1 -1
  7. not1mm-24.10.5/not1mm/plugins/cq_wpx_rtty.py +507 -0
  8. not1mm-24.10.5/not1mm/test.py +0 -0
  9. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm.egg-info/PKG-INFO +23 -13
  10. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm.egg-info/SOURCES.txt +1 -0
  11. {not1mm-24.10.1 → not1mm-24.10.5}/pyproject.toml +1 -1
  12. not1mm-24.10.1/not1mm/test.py +0 -47
  13. {not1mm-24.10.1 → not1mm-24.10.5}/LICENSE +0 -0
  14. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/__init__.py +0 -0
  15. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/bandmap.py +0 -0
  16. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/checkwindow.py +0 -0
  17. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/JetBrainsMono-ExtraLight.ttf +0 -0
  18. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/MASTER.SCP +0 -0
  19. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/about.ui +0 -0
  20. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/alpha bravo charlie delta.txt +0 -0
  21. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/bandmap.ui +0 -0
  22. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/check.png +0 -0
  23. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/checkwindow.ui +0 -0
  24. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/configuration.ui +0 -0
  25. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/contests.sql +0 -0
  26. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/cty.json +0 -0
  27. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/cwmacros.txt +0 -0
  28. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/donors.html +0 -0
  29. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/editcontact.ui +0 -0
  30. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/editmacro.ui +0 -0
  31. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/greendot.png +0 -0
  32. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/k6gte-not1mm.desktop +0 -0
  33. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/k6gte.not1mm-128.png +0 -0
  34. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/k6gte.not1mm-32.png +0 -0
  35. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/k6gte.not1mm-64.png +0 -0
  36. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/logwindow.ui +0 -0
  37. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/logwindowx.ui +0 -0
  38. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/main.ui +0 -0
  39. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/not1mm.html +0 -0
  40. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/opon.ui +0 -0
  41. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/0.wav +0 -0
  42. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/1.wav +0 -0
  43. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/2.wav +0 -0
  44. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/3.wav +0 -0
  45. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/4.wav +0 -0
  46. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/5.wav +0 -0
  47. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/6.wav +0 -0
  48. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/7.wav +0 -0
  49. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/73.wav +0 -0
  50. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/8.wav +0 -0
  51. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/9.wav +0 -0
  52. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/a.wav +0 -0
  53. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/again.wav +0 -0
  54. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/b.wav +0 -0
  55. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/c.wav +0 -0
  56. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/contest.wav +0 -0
  57. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/cq.wav +0 -0
  58. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/d.wav +0 -0
  59. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/e.wav +0 -0
  60. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/f.wav +0 -0
  61. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/g.wav +0 -0
  62. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/h.wav +0 -0
  63. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/i.wav +0 -0
  64. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/j.wav +0 -0
  65. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/k.wav +0 -0
  66. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/k6gte.wav +0 -0
  67. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/l.wav +0 -0
  68. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/m.wav +0 -0
  69. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/mynumber.wav +0 -0
  70. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/n.wav +0 -0
  71. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/nil.wav +0 -0
  72. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/o.wav +0 -0
  73. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/p.wav +0 -0
  74. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/q.wav +0 -0
  75. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/r.wav +0 -0
  76. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/roger.wav +0 -0
  77. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/s.wav +0 -0
  78. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/space.wav +0 -0
  79. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/t.wav +0 -0
  80. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/thankyou.wav +0 -0
  81. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/thankyouqrz.wav +0 -0
  82. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/u.wav +0 -0
  83. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/v.wav +0 -0
  84. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/w.wav +0 -0
  85. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/x.wav +0 -0
  86. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/y.wav +0 -0
  87. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/yourcall.wav +0 -0
  88. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/phonetics/z.wav +0 -0
  89. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/pickcontest.ui +0 -0
  90. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/radio_green.png +0 -0
  91. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/radio_grey.png +0 -0
  92. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/radio_red.png +0 -0
  93. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/reddot.png +0 -0
  94. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/rttymacros.txt +0 -0
  95. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/settings.ui +0 -0
  96. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/splash.png +0 -0
  97. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/ssbmacros.txt +0 -0
  98. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/data/vfo.ui +0 -0
  99. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/fsutils.py +0 -0
  100. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/__init__.py +0 -0
  101. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/about.py +0 -0
  102. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/cat_interface.py +0 -0
  103. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/database.py +0 -0
  104. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/edit_contact.py +0 -0
  105. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/edit_macro.py +0 -0
  106. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/edit_opon.py +0 -0
  107. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/edit_station.py +0 -0
  108. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/fldigi_sendstring.py +0 -0
  109. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/fldigi_watcher.py +0 -0
  110. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/ft8_watcher.py +0 -0
  111. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/ham_utility.py +0 -0
  112. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/lookup.py +0 -0
  113. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/multicast.py +0 -0
  114. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/n1mm.py +0 -0
  115. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/new_contest.py +0 -0
  116. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/playsound.py +0 -0
  117. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/plugin_common.py +0 -0
  118. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/select_contest.py +0 -0
  119. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/settings.py +0 -0
  120. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/super_check_partial.py +0 -0
  121. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lib/versiontest.py +0 -0
  122. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/logwindow.py +0 -0
  123. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/lookupservice.py +0 -0
  124. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/10_10_fall_cw.py +0 -0
  125. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/10_10_spring_cw.py +0 -0
  126. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/10_10_summer_phone.py +0 -0
  127. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/10_10_winter_phone.py +0 -0
  128. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/__init__.py +0 -0
  129. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/arrl_10m.py +0 -0
  130. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/arrl_dx_cw.py +0 -0
  131. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/arrl_dx_ssb.py +0 -0
  132. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/arrl_field_day.py +0 -0
  133. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/arrl_rtty_ru.py +0 -0
  134. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/arrl_ss_cw.py +0 -0
  135. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/arrl_ss_phone.py +0 -0
  136. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/arrl_vhf_jan.py +0 -0
  137. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/arrl_vhf_jun.py +0 -0
  138. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/arrl_vhf_sep.py +0 -0
  139. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/canada_day.py +0 -0
  140. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/cq_160_cw.py +0 -0
  141. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/cq_160_ssb.py +0 -0
  142. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/cq_wpx_cw.py +0 -0
  143. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/cq_wpx_ssb.py +0 -0
  144. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/cq_ww_cw.py +0 -0
  145. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/cq_ww_rtty.py +0 -0
  146. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/cq_ww_ssb.py +0 -0
  147. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/cwt.py +0 -0
  148. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/general_logging.py +0 -0
  149. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/helvetia.py +0 -0
  150. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/iaru_fieldday_r1_cw.py +0 -0
  151. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/iaru_fieldday_r1_ssb.py +0 -0
  152. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/iaru_hf.py +0 -0
  153. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/icwc_mst.py +0 -0
  154. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/jidx_cw.py +0 -0
  155. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/jidx_ph.py +0 -0
  156. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/k1usn_sst.py +0 -0
  157. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/naqp_cw.py +0 -0
  158. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/naqp_ssb.py +0 -0
  159. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/phone_weekly_test.py +0 -0
  160. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/ref_cw.py +0 -0
  161. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/stew_perry_topband.py +0 -0
  162. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/weekly_rtty.py +0 -0
  163. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/plugins/winter_field_day.py +0 -0
  164. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/radio.py +0 -0
  165. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/vfo.py +0 -0
  166. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm/voice_keying.py +0 -0
  167. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm.egg-info/dependency_links.txt +0 -0
  168. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm.egg-info/entry_points.txt +0 -0
  169. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm.egg-info/requires.txt +0 -0
  170. {not1mm-24.10.1 → not1mm-24.10.5}/not1mm.egg-info/top_level.txt +0 -0
  171. {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.1
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
- pip install not1mm
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
- pip install not1mm
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 ARRL Field Day, ARRL VHF, and Weekly RTTY**
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 SSB, will be
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 or Voice) macros. |
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
- pip install not1mm
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
- pip install not1mm
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 ARRL Field Day, ARRL VHF, and Weekly RTTY**
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 SSB, will be
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 or Voice) macros. |
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, *args, **kwargs):
179
- super().__init__(*args, **kwargs)
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()
@@ -277,6 +277,11 @@
277
277
  <string>CQ WPX CW</string>
278
278
  </property>
279
279
  </item>
280
+ <item>
281
+ <property name="text">
282
+ <string>CQ WPX RTTY</string>
283
+ </property>
284
+ </item>
280
285
  <item>
281
286
  <property name="text">
282
287
  <string>CQ WPX SSB</string>
@@ -55,7 +55,7 @@ class CW:
55
55
  self._sendcw_xmlrpc(texttosend)
56
56
  if self.servertype == 1:
57
57
  self._sendcw_udp(texttosend)
58
- if self.servertype == 3 and self.cw is not None:
58
+ if self.servertype == 3:
59
59
  self._sendcwcat(texttosend)
60
60
 
61
61
  def _sendcw_xmlrpc(self, texttosend):
@@ -1,3 +1,3 @@
1
1
  """It's the version"""
2
2
 
3
- __version__ = "24.10.1"
3
+ __version__ = "24.10.5"