not1mm 24.8.20__tar.gz → 24.8.27__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 (160) hide show
  1. {not1mm-24.8.20 → not1mm-24.8.27}/PKG-INFO +32 -4
  2. {not1mm-24.8.20 → not1mm-24.8.27}/README.md +31 -3
  3. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/__main__.py +16 -4
  4. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/new_contest.ui +6 -1
  5. not1mm-24.8.27/not1mm/data/splash.png +0 -0
  6. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/lib/database.py +32 -1
  7. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/lib/ham_utility.py +26 -0
  8. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/lib/version.py +1 -1
  9. not1mm-24.8.27/not1mm/plugins/helvetia.py +497 -0
  10. not1mm-24.8.20/not1mm/playsoundtest.py → not1mm-24.8.27/not1mm/test.py +3 -5
  11. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm.egg-info/PKG-INFO +32 -4
  12. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm.egg-info/SOURCES.txt +3 -1
  13. {not1mm-24.8.20 → not1mm-24.8.27}/pyproject.toml +1 -1
  14. {not1mm-24.8.20 → not1mm-24.8.27}/LICENSE +0 -0
  15. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/__init__.py +0 -0
  16. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/bandmap.py +0 -0
  17. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/checkwindow.py +0 -0
  18. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/JetBrainsMono-Regular.ttf +0 -0
  19. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/MASTER.SCP +0 -0
  20. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/about.ui +0 -0
  21. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/alpha bravo charlie delta.txt +0 -0
  22. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/bandmap.ui +0 -0
  23. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/check.png +0 -0
  24. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/checkwindow.ui +0 -0
  25. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/configuration.ui +0 -0
  26. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/contests.sql +0 -0
  27. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/cty.json +0 -0
  28. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/cwmacros.txt +0 -0
  29. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/donors.html +0 -0
  30. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/editcontact.ui +0 -0
  31. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/editmacro.ui +0 -0
  32. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/greendot.png +0 -0
  33. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/k6gte-not1mm.desktop +0 -0
  34. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/k6gte.not1mm-128.png +0 -0
  35. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/k6gte.not1mm-32.png +0 -0
  36. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/k6gte.not1mm-64.png +0 -0
  37. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/logwindow.ui +0 -0
  38. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/logwindowx.ui +0 -0
  39. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/main.ui +0 -0
  40. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/not1mm.html +0 -0
  41. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/opon.ui +0 -0
  42. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/0.wav +0 -0
  43. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/1.wav +0 -0
  44. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/2.wav +0 -0
  45. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/3.wav +0 -0
  46. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/4.wav +0 -0
  47. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/5.wav +0 -0
  48. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/6.wav +0 -0
  49. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/7.wav +0 -0
  50. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/73.wav +0 -0
  51. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/8.wav +0 -0
  52. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/9.wav +0 -0
  53. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/a.wav +0 -0
  54. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/again.wav +0 -0
  55. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/b.wav +0 -0
  56. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/c.wav +0 -0
  57. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/contest.wav +0 -0
  58. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/cq.wav +0 -0
  59. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/d.wav +0 -0
  60. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/e.wav +0 -0
  61. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/f.wav +0 -0
  62. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/g.wav +0 -0
  63. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/h.wav +0 -0
  64. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/i.wav +0 -0
  65. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/j.wav +0 -0
  66. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/k.wav +0 -0
  67. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/k6gte.wav +0 -0
  68. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/l.wav +0 -0
  69. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/m.wav +0 -0
  70. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/mynumber.wav +0 -0
  71. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/n.wav +0 -0
  72. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/nil.wav +0 -0
  73. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/o.wav +0 -0
  74. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/p.wav +0 -0
  75. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/q.wav +0 -0
  76. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/r.wav +0 -0
  77. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/roger.wav +0 -0
  78. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/s.wav +0 -0
  79. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/space.wav +0 -0
  80. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/t.wav +0 -0
  81. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/thankyou.wav +0 -0
  82. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/thankyouqrz.wav +0 -0
  83. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/u.wav +0 -0
  84. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/v.wav +0 -0
  85. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/w.wav +0 -0
  86. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/x.wav +0 -0
  87. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/y.wav +0 -0
  88. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/yourcall.wav +0 -0
  89. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/phonetics/z.wav +0 -0
  90. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/pickcontest.ui +0 -0
  91. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/radio_green.png +0 -0
  92. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/radio_grey.png +0 -0
  93. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/radio_red.png +0 -0
  94. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/reddot.png +0 -0
  95. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/settings.ui +0 -0
  96. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/ssbmacros.txt +0 -0
  97. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/data/vfo.ui +0 -0
  98. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/fsutils.py +0 -0
  99. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/lib/__init__.py +0 -0
  100. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/lib/about.py +0 -0
  101. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/lib/cat_interface.py +0 -0
  102. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/lib/cwinterface.py +0 -0
  103. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/lib/edit_contact.py +0 -0
  104. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/lib/edit_macro.py +0 -0
  105. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/lib/edit_opon.py +0 -0
  106. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/lib/edit_station.py +0 -0
  107. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/lib/ft8_watcher.py +0 -0
  108. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/lib/lookup.py +0 -0
  109. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/lib/multicast.py +0 -0
  110. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/lib/n1mm.py +0 -0
  111. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/lib/new_contest.py +0 -0
  112. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/lib/playsound.py +0 -0
  113. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/lib/plugin_common.py +0 -0
  114. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/lib/select_contest.py +0 -0
  115. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/lib/settings.py +0 -0
  116. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/lib/super_check_partial.py +0 -0
  117. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/lib/versiontest.py +0 -0
  118. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/logwindow.py +0 -0
  119. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/plugins/10_10_fall_cw.py +0 -0
  120. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/plugins/10_10_spring_cw.py +0 -0
  121. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/plugins/10_10_summer_phone.py +0 -0
  122. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/plugins/10_10_winter_phone.py +0 -0
  123. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/plugins/__init__.py +0 -0
  124. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/plugins/arrl_10m.py +0 -0
  125. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/plugins/arrl_dx_cw.py +0 -0
  126. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/plugins/arrl_dx_ssb.py +0 -0
  127. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/plugins/arrl_field_day.py +0 -0
  128. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/plugins/arrl_rtty_ru.py +0 -0
  129. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/plugins/arrl_ss_cw.py +0 -0
  130. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/plugins/arrl_ss_phone.py +0 -0
  131. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/plugins/arrl_vhf_jan.py +0 -0
  132. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/plugins/arrl_vhf_jun.py +0 -0
  133. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/plugins/arrl_vhf_sep.py +0 -0
  134. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/plugins/canada_day.py +0 -0
  135. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/plugins/cq_160_cw.py +0 -0
  136. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/plugins/cq_160_ssb.py +0 -0
  137. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/plugins/cq_wpx_cw.py +0 -0
  138. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/plugins/cq_wpx_ssb.py +0 -0
  139. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/plugins/cq_ww_cw.py +0 -0
  140. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/plugins/cq_ww_ssb.py +0 -0
  141. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/plugins/cwt.py +0 -0
  142. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/plugins/general_logging.py +0 -0
  143. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/plugins/iaru_hf.py +0 -0
  144. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/plugins/icwc_mst.py +0 -0
  145. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/plugins/jidx_cw.py +0 -0
  146. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/plugins/jidx_ph.py +0 -0
  147. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/plugins/k1usn_sst.py +0 -0
  148. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/plugins/naqp_cw.py +0 -0
  149. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/plugins/naqp_ssb.py +0 -0
  150. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/plugins/phone_weekly_test.py +0 -0
  151. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/plugins/stew_perry_topband.py +0 -0
  152. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/plugins/winter_field_day.py +0 -0
  153. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/radio.py +0 -0
  154. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/vfo.py +0 -0
  155. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm/voice_keying.py +0 -0
  156. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm.egg-info/dependency_links.txt +0 -0
  157. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm.egg-info/entry_points.txt +0 -0
  158. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm.egg-info/requires.txt +0 -0
  159. {not1mm-24.8.20 → not1mm-24.8.27}/not1mm.egg-info/top_level.txt +0 -0
  160. {not1mm-24.8.20 → not1mm-24.8.27}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: not1mm
3
- Version: 24.8.20
3
+ Version: 24.8.27
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
@@ -69,6 +69,7 @@ Requires-Dist: Levenshtein
69
69
  - [Fedora 38 \& 39](#fedora-38--39)
70
70
  - [Fedora 40](#fedora-40)
71
71
  - [Manjaro](#manjaro)
72
+ - [Mint](#mint)
72
73
  - [Python, PyPI, pip and pipx](#python-pypi-pip-and-pipx)
73
74
  - [Bootstrapping pipx](#bootstrapping-pipx)
74
75
  - [Installing with pipx](#installing-with-pipx)
@@ -209,6 +210,7 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
209
210
  - CQ World Wide CW
210
211
  - CQ World Wide SSB
211
212
  - CWOps CWT
213
+ - Helvetia
212
214
  - IARU HF
213
215
  - ICWC MST
214
216
  - Japan International DX CW
@@ -223,6 +225,8 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
223
225
 
224
226
  ## Recent Changes
225
227
 
228
+ - [24-8-27] Added Helvetia contest.
229
+ - [24-8-22] Add loading splash screen.
226
230
  - [24-8-20] Added K1USN Slow Speed Test
227
231
  - [24-8-17-1] Did an oops. Fixed the oops.
228
232
  - [24-8-17] Removed some cruft. Made dockable widgets not floatable since Wayland breaks this.
@@ -240,8 +244,14 @@ clue me into the black magic needed to get it to work.
240
244
 
241
245
  ### Prerequisites
242
246
 
243
- not1mm requires Python 3.9+, PyQt6 and libportaudio2. You should install these
244
- through your distribution's package manager before continuing.
247
+ not1mm requires:
248
+
249
+ - Python 3.9+
250
+ - PyQt6
251
+ - libportaudio2
252
+ - libxcb-cursor0 (maybe... Depends on the distro)
253
+
254
+ You should install these through your distribution's package manager before continuing.
245
255
 
246
256
  ### Common installation recipes for Ubuntu and Fedora
247
257
 
@@ -318,6 +328,22 @@ pip install not1mm
318
328
  pamac build not1mm-git
319
329
  ```
320
330
 
331
+ </details>
332
+
333
+ <details>
334
+
335
+ <summary><b>Mint 22</b></summary>
336
+
337
+ #### Mint
338
+
339
+ ```bash
340
+ sudo apt install python3-pip
341
+ sudo apt install pipx
342
+ sudo apt install libxcb-cursor0
343
+ pipx install not1mm
344
+ pipx ensurepath
345
+ ```
346
+
321
347
  </details>
322
348
  <br>
323
349
 
@@ -429,7 +455,9 @@ qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it
429
455
  This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
430
456
  ```
431
457
 
432
- To avoid this you can export an environment variable and launch the app like this:
458
+ You can use your package manager to load libxcb-cursor0.
459
+
460
+ If that's not an option, you can export an environment variable and launch the app like this:
433
461
 
434
462
  `mbridak@vm:~$ export QT_QPA_PLATFORM=wayland; not1mm`
435
463
 
@@ -38,6 +38,7 @@
38
38
  - [Fedora 38 \& 39](#fedora-38--39)
39
39
  - [Fedora 40](#fedora-40)
40
40
  - [Manjaro](#manjaro)
41
+ - [Mint](#mint)
41
42
  - [Python, PyPI, pip and pipx](#python-pypi-pip-and-pipx)
42
43
  - [Bootstrapping pipx](#bootstrapping-pipx)
43
44
  - [Installing with pipx](#installing-with-pipx)
@@ -178,6 +179,7 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
178
179
  - CQ World Wide CW
179
180
  - CQ World Wide SSB
180
181
  - CWOps CWT
182
+ - Helvetia
181
183
  - IARU HF
182
184
  - ICWC MST
183
185
  - Japan International DX CW
@@ -192,6 +194,8 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
192
194
 
193
195
  ## Recent Changes
194
196
 
197
+ - [24-8-27] Added Helvetia contest.
198
+ - [24-8-22] Add loading splash screen.
195
199
  - [24-8-20] Added K1USN Slow Speed Test
196
200
  - [24-8-17-1] Did an oops. Fixed the oops.
197
201
  - [24-8-17] Removed some cruft. Made dockable widgets not floatable since Wayland breaks this.
@@ -209,8 +213,14 @@ clue me into the black magic needed to get it to work.
209
213
 
210
214
  ### Prerequisites
211
215
 
212
- not1mm requires Python 3.9+, PyQt6 and libportaudio2. You should install these
213
- through your distribution's package manager before continuing.
216
+ not1mm requires:
217
+
218
+ - Python 3.9+
219
+ - PyQt6
220
+ - libportaudio2
221
+ - libxcb-cursor0 (maybe... Depends on the distro)
222
+
223
+ You should install these through your distribution's package manager before continuing.
214
224
 
215
225
  ### Common installation recipes for Ubuntu and Fedora
216
226
 
@@ -287,6 +297,22 @@ pip install not1mm
287
297
  pamac build not1mm-git
288
298
  ```
289
299
 
300
+ </details>
301
+
302
+ <details>
303
+
304
+ <summary><b>Mint 22</b></summary>
305
+
306
+ #### Mint
307
+
308
+ ```bash
309
+ sudo apt install python3-pip
310
+ sudo apt install pipx
311
+ sudo apt install libxcb-cursor0
312
+ pipx install not1mm
313
+ pipx ensurepath
314
+ ```
315
+
290
316
  </details>
291
317
  <br>
292
318
 
@@ -398,7 +424,9 @@ qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it
398
424
  This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
399
425
  ```
400
426
 
401
- To avoid this you can export an environment variable and launch the app like this:
427
+ You can use your package manager to load libxcb-cursor0.
428
+
429
+ If that's not an option, you can export an environment variable and launch the app like this:
402
430
 
403
431
  `mbridak@vm:~$ export QT_QPA_PLATFORM=wayland; not1mm`
404
432
 
@@ -35,9 +35,9 @@ except OSError as exception:
35
35
  print("portaudio is not installed")
36
36
  sd = None
37
37
  from PyQt6 import QtCore, QtGui, QtWidgets, uic
38
- from PyQt6.QtCore import QDir, Qt, QThread, QSettings
39
- from PyQt6.QtGui import QFontDatabase, QColorConstants, QPalette, QColor
40
- from PyQt6.QtWidgets import QFileDialog
38
+ from PyQt6.QtCore import QDir, Qt, QThread, QSettings, QCoreApplication
39
+ from PyQt6.QtGui import QFontDatabase, QColorConstants, QPalette, QColor, QPixmap
40
+ from PyQt6.QtWidgets import QFileDialog, QSplashScreen
41
41
 
42
42
  from not1mm.lib.about import About
43
43
  from not1mm.lib.cwinterface import CW
@@ -3398,12 +3398,24 @@ logging.basicConfig(
3398
3398
  logging.getLogger("PyQt6.uic.uiparser").setLevel("INFO")
3399
3399
  logging.getLogger("PyQt6.uic.properties").setLevel("INFO")
3400
3400
  app = QtWidgets.QApplication(sys.argv)
3401
+
3402
+ pixmap = QPixmap(f"{os.fspath(fsutils.APP_DATA_PATH)}/splash.png")
3403
+ splash = QSplashScreen(pixmap)
3404
+ splash.show()
3405
+ app.processEvents()
3406
+ splash.showMessage(
3407
+ "Starting Up",
3408
+ alignment=Qt.AlignmentFlag.AlignBottom | Qt.AlignmentFlag.AlignCenter,
3409
+ color=QColor(255, 255, 0),
3410
+ )
3411
+ QCoreApplication.processEvents()
3412
+
3401
3413
  families = load_fonts_from_dir(os.fspath(fsutils.APP_DATA_PATH))
3402
3414
  logger.info(f"font families {families}")
3403
3415
  window = MainWindow()
3404
3416
  window.callsign.setFocus()
3405
3417
  window.show()
3406
-
3418
+ splash.finish(window)
3407
3419
 
3408
3420
  if __name__ == "__main__":
3409
3421
  run()
@@ -297,6 +297,11 @@
297
297
  <string>CWT</string>
298
298
  </property>
299
299
  </item>
300
+ <item>
301
+ <property name="text">
302
+ <string>HELVETIA</string>
303
+ </property>
304
+ </item>
300
305
  <item>
301
306
  <property name="text">
302
307
  <string>ICWC MST</string>
@@ -356,7 +361,7 @@
356
361
  </property>
357
362
  <property name="time">
358
363
  <time>
359
- <hour>16</hour>
364
+ <hour>0</hour>
360
365
  <minute>0</minute>
361
366
  <second>0</second>
362
367
  </time>
Binary file
@@ -567,7 +567,7 @@ class DataBase:
567
567
  def fetch_country_band_count(self) -> dict:
568
568
  """
569
569
  returns dict with count of unique NR.
570
- {nr_count: count}
570
+ {cb_count: count}
571
571
  """
572
572
  try:
573
573
  with sqlite3.connect(self.database) as conn:
@@ -581,6 +581,23 @@ class DataBase:
581
581
  logger.debug("%s", exception)
582
582
  return {}
583
583
 
584
+ def fetch_country_count(self) -> dict:
585
+ """
586
+ Fetch count of unique countries
587
+ {dxcc_count: count}
588
+ """
589
+ try:
590
+ with sqlite3.connect(self.database) as conn:
591
+ conn.row_factory = self.row_factory
592
+ cursor = conn.cursor()
593
+ cursor.execute(
594
+ f"select count(DISTINCT(CountryPrefix)) as dxcc_count from dxlog where ContestNR = {self.current_contest};"
595
+ )
596
+ return cursor.fetchone()
597
+ except sqlite3.OperationalError as exception:
598
+ logger.debug("%s", exception)
599
+ return {}
600
+
584
601
  def fetch_arrldx_country_band_count(self) -> dict:
585
602
  """
586
603
  returns dict with count of unique NR.
@@ -883,6 +900,20 @@ class DataBase:
883
900
  logger.debug("%s", exception)
884
901
  return {}
885
902
 
903
+ def fetch_mult2_count(self) -> dict:
904
+ """return QSO count"""
905
+ try:
906
+ with sqlite3.connect(self.database) as conn:
907
+ conn.row_factory = self.row_factory
908
+ cursor = conn.cursor()
909
+ cursor.execute(
910
+ f"select count(*) as count from dxlog where IsMultiplier2 = 1 and ContestNR = {self.current_contest};"
911
+ )
912
+ return cursor.fetchone()
913
+ except sqlite3.OperationalError as exception:
914
+ logger.debug("%s", exception)
915
+ return {}
916
+
886
917
  def fetch_qso_count(self) -> dict:
887
918
  """return QSO count"""
888
919
  try:
@@ -373,3 +373,29 @@ def distance_with_latlon(grid1: str, lat2: float, lon2: float) -> float:
373
373
  logger.debug("lat1:%d lon1:%d lat2:%d lon2:%d", lat1, lon1, lat2, lon2)
374
374
  # lat2, lon2 = gridtolatlon(grid2)
375
375
  return round(haversine(lon1, lat1, lon2, lat2))
376
+
377
+
378
+ def parse_udc(filename: str) -> dict:
379
+ """
380
+ simply parses a n1mm style udc file and returns a dict with key value pairs.
381
+ """
382
+
383
+ udc_contest = {}
384
+ the_good_stuff = False
385
+
386
+ try:
387
+ with open(filename, "r", encoding="utf-8") as file_descriptor:
388
+ for line in file_descriptor:
389
+ if "[CONTEST]" in line.upper():
390
+ the_good_stuff = True
391
+ continue
392
+ if "=" in line and the_good_stuff is True:
393
+ try:
394
+ key, value = line.split("=")
395
+ udc_contest[key.strip()] = value.strip()
396
+ except ValueError:
397
+ ...
398
+ except FileNotFoundError:
399
+ logger.debug("UDC file not found.")
400
+ return {}
401
+ return udc_contest
@@ -1,3 +1,3 @@
1
1
  """It's the version"""
2
2
 
3
- __version__ = "24.8.20"
3
+ __version__ = "24.8.27"