not1mm 25.3.31__tar.gz → 25.4.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (187) hide show
  1. {not1mm-25.3.31 → not1mm-25.4.1}/PKG-INFO +2 -18
  2. {not1mm-25.3.31 → not1mm-25.4.1}/README.md +1 -17
  3. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/__main__.py +1 -0
  4. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/checkwindow.py +2 -46
  5. not1mm-25.4.1/not1mm/data/ratewindow.ui +370 -0
  6. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/lib/version.py +1 -1
  7. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/logwindow.py +0 -49
  8. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/ratewindow.py +0 -77
  9. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/statistics.py +0 -50
  10. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/vfo.py +0 -48
  11. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm.egg-info/PKG-INFO +2 -18
  12. {not1mm-25.3.31 → not1mm-25.4.1}/pyproject.toml +1 -1
  13. not1mm-25.3.31/not1mm/data/ratewindow.ui +0 -1185
  14. {not1mm-25.3.31 → not1mm-25.4.1}/LICENSE +0 -0
  15. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/__init__.py +0 -0
  16. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/bandmap.py +0 -0
  17. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/JetBrainsMono-ExtraLight.ttf +0 -0
  18. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/MASTER.SCP +0 -0
  19. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/about.ui +0 -0
  20. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/alpha bravo charlie delta.txt +0 -0
  21. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/bandmap.ui +0 -0
  22. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/check.png +0 -0
  23. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/checkwindow.ui +0 -0
  24. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/configuration.ui +0 -0
  25. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/contests.sql +0 -0
  26. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/cty.json +0 -0
  27. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/cwmacros.txt +0 -0
  28. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/donors.html +0 -0
  29. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/editcontact.ui +0 -0
  30. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/editmacro.ui +0 -0
  31. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/greendot.png +0 -0
  32. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/k6gte-not1mm.desktop +0 -0
  33. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/k6gte.not1mm-128.png +0 -0
  34. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/k6gte.not1mm-32.png +0 -0
  35. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/k6gte.not1mm-64.png +0 -0
  36. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/logwindow.ui +0 -0
  37. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/logwindowx.ui +0 -0
  38. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/main.ui +0 -0
  39. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/new_contest.ui +0 -0
  40. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/not1mm.html +0 -0
  41. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/opon.ui +0 -0
  42. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/0.wav +0 -0
  43. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/1.wav +0 -0
  44. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/2.wav +0 -0
  45. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/3.wav +0 -0
  46. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/4.wav +0 -0
  47. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/5.wav +0 -0
  48. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/6.wav +0 -0
  49. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/7.wav +0 -0
  50. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/73.wav +0 -0
  51. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/8.wav +0 -0
  52. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/9.wav +0 -0
  53. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/a.wav +0 -0
  54. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/again.wav +0 -0
  55. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/b.wav +0 -0
  56. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/c.wav +0 -0
  57. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/contest.wav +0 -0
  58. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/cq.wav +0 -0
  59. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/cq2.wav +0 -0
  60. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/d.wav +0 -0
  61. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/e.wav +0 -0
  62. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/f.wav +0 -0
  63. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/g.wav +0 -0
  64. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/h.wav +0 -0
  65. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/i.wav +0 -0
  66. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/j.wav +0 -0
  67. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/k.wav +0 -0
  68. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/k6gte.wav +0 -0
  69. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/l.wav +0 -0
  70. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/m.wav +0 -0
  71. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/mynumber.wav +0 -0
  72. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/n.wav +0 -0
  73. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/nil.wav +0 -0
  74. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/o.wav +0 -0
  75. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/p.wav +0 -0
  76. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/q.wav +0 -0
  77. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/r.wav +0 -0
  78. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/roger.wav +0 -0
  79. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/s.wav +0 -0
  80. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/space.wav +0 -0
  81. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/t.wav +0 -0
  82. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/thankyou.wav +0 -0
  83. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/thankyouqrz.wav +0 -0
  84. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/u.wav +0 -0
  85. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/v.wav +0 -0
  86. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/w.wav +0 -0
  87. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/x.wav +0 -0
  88. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/y.wav +0 -0
  89. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/yourcall.wav +0 -0
  90. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/phonetics/z.wav +0 -0
  91. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/pickcontest.ui +0 -0
  92. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/radio_green.png +0 -0
  93. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/radio_grey.png +0 -0
  94. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/radio_red.png +0 -0
  95. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/reddot.png +0 -0
  96. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/rttymacros.txt +0 -0
  97. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/settings.ui +0 -0
  98. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/splash.png +0 -0
  99. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/ssbmacros.txt +0 -0
  100. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/statistics.ui +0 -0
  101. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/data/vfo.ui +0 -0
  102. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/fsutils.py +0 -0
  103. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/lib/__init__.py +0 -0
  104. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/lib/about.py +0 -0
  105. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/lib/cat_interface.py +0 -0
  106. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/lib/cwinterface.py +0 -0
  107. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/lib/database.py +0 -0
  108. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/lib/edit_contact.py +0 -0
  109. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/lib/edit_macro.py +0 -0
  110. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/lib/edit_opon.py +0 -0
  111. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/lib/edit_station.py +0 -0
  112. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/lib/fldigi_sendstring.py +0 -0
  113. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/lib/ft8_watcher.py +0 -0
  114. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/lib/ham_utility.py +0 -0
  115. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/lib/lookup.py +0 -0
  116. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/lib/multicast.py +0 -0
  117. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/lib/n1mm.py +0 -0
  118. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/lib/new_contest.py +0 -0
  119. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/lib/plugin_common.py +0 -0
  120. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/lib/select_contest.py +0 -0
  121. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/lib/settings.py +0 -0
  122. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/lib/super_check_partial.py +0 -0
  123. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/lib/versiontest.py +0 -0
  124. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/lookupservice.py +0 -0
  125. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/10_10_fall_cw.py +0 -0
  126. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/10_10_spring_cw.py +0 -0
  127. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/10_10_summer_phone.py +0 -0
  128. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/10_10_winter_phone.py +0 -0
  129. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/__init__.py +0 -0
  130. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/arrl_10m.py +0 -0
  131. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/arrl_160m.py +0 -0
  132. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/arrl_dx_cw.py +0 -0
  133. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/arrl_dx_ssb.py +0 -0
  134. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/arrl_field_day.py +0 -0
  135. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/arrl_rtty_ru.py +0 -0
  136. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/arrl_ss_cw.py +0 -0
  137. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/arrl_ss_phone.py +0 -0
  138. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/arrl_vhf_jan.py +0 -0
  139. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/arrl_vhf_jun.py +0 -0
  140. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/arrl_vhf_sep.py +0 -0
  141. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/canada_day.py +0 -0
  142. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/cq_160_cw.py +0 -0
  143. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/cq_160_ssb.py +0 -0
  144. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/cq_wpx_cw.py +0 -0
  145. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/cq_wpx_rtty.py +0 -0
  146. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/cq_wpx_ssb.py +0 -0
  147. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/cq_ww_cw.py +0 -0
  148. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/cq_ww_rtty.py +0 -0
  149. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/cq_ww_ssb.py +0 -0
  150. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/cwt.py +0 -0
  151. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/darc_vhf.py +0 -0
  152. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/darc_xmas.py +0 -0
  153. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/ea_majistad_cw.py +0 -0
  154. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/ea_majistad_ssb.py +0 -0
  155. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/ea_rtty.py +0 -0
  156. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/general_logging.py +0 -0
  157. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/helvetia.py +0 -0
  158. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/iaru_fieldday_r1_cw.py +0 -0
  159. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/iaru_fieldday_r1_ssb.py +0 -0
  160. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/iaru_hf.py +0 -0
  161. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/icwc_mst.py +0 -0
  162. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/jidx_cw.py +0 -0
  163. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/jidx_ph.py +0 -0
  164. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/k1usn_sst.py +0 -0
  165. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/labre_rs_digi.py +0 -0
  166. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/lz-dx.py +0 -0
  167. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/naqp_cw.py +0 -0
  168. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/naqp_rtty.py +0 -0
  169. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/naqp_ssb.py +0 -0
  170. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/phone_weekly_test.py +0 -0
  171. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/raem.py +0 -0
  172. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/randomgram.py +0 -0
  173. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/ref_cw.py +0 -0
  174. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/ref_ssb.py +0 -0
  175. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/stew_perry_topband.py +0 -0
  176. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/weekly_rtty.py +0 -0
  177. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/plugins/winter_field_day.py +0 -0
  178. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/radio.py +0 -0
  179. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/rtc_service.py +0 -0
  180. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/test.py +0 -0
  181. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm/voice_keying.py +0 -0
  182. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm.egg-info/SOURCES.txt +0 -0
  183. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm.egg-info/dependency_links.txt +0 -0
  184. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm.egg-info/entry_points.txt +0 -0
  185. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm.egg-info/requires.txt +0 -0
  186. {not1mm-25.3.31 → not1mm-25.4.1}/not1mm.egg-info/top_level.txt +0 -0
  187. {not1mm-25.3.31 → not1mm-25.4.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: not1mm
3
- Version: 25.3.31
3
+ Version: 25.4.1
4
4
  Summary: NOT1MM Logger
5
5
  Author-email: Michael Bridak <michael.bridak@gmail.com>
6
6
  License: GPL-3.0-or-later
@@ -247,23 +247,7 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
247
247
 
248
248
  ## Recent Changes
249
249
 
250
- - [25-3-31] Maybe try and do something useful with the detection of the systems dark mode.
251
- - [25-3-27-1] Detect system dark mode.
252
- - [25-3-27] Add more DI and PH mode to stats window.
253
- - [25-3-26] Record 0 points on dupes for each contest, excluding RandomGram.
254
- - [25-3-25-1] Improved process messaging.
255
- - [25-3-25] Use safer dict key access in the stats window.
256
- - [25-3-24] Add CW, PH, DI counts to the statistics window.
257
- - [25-3-23] Add a statistics window.
258
- - [25-3-19-1] Add EA His Maj King of Spain SSB.
259
- - [25-3-19] Merged PR from @DD5ML Adding DARC VHF.
260
- - [25-3-18] Add His Maj King of Spain CW
261
- - [25-3-17] Add EA RTTY contest.
262
- - [25-3-14] Add call history support to ARR Field Day.
263
- - [25-3-10] Slight change to adif header. Slight change to CAT status icon state.
264
- - [25-3-5] Added checks for blank/comment lines in the macros
265
- - [25-3-2] Added call history support to ARRL DX, just in time for it to be over.
266
- - [25-3-1] Add {OTHER1} and {OTHER2} macros.
250
+ - [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.
267
251
 
268
252
  See [CHANGELOG.md](CHANGELOG.md) for prior changes.
269
253
 
@@ -215,23 +215,7 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
215
215
 
216
216
  ## Recent Changes
217
217
 
218
- - [25-3-31] Maybe try and do something useful with the detection of the systems dark mode.
219
- - [25-3-27-1] Detect system dark mode.
220
- - [25-3-27] Add more DI and PH mode to stats window.
221
- - [25-3-26] Record 0 points on dupes for each contest, excluding RandomGram.
222
- - [25-3-25-1] Improved process messaging.
223
- - [25-3-25] Use safer dict key access in the stats window.
224
- - [25-3-24] Add CW, PH, DI counts to the statistics window.
225
- - [25-3-23] Add a statistics window.
226
- - [25-3-19-1] Add EA His Maj King of Spain SSB.
227
- - [25-3-19] Merged PR from @DD5ML Adding DARC VHF.
228
- - [25-3-18] Add His Maj King of Spain CW
229
- - [25-3-17] Add EA RTTY contest.
230
- - [25-3-14] Add call history support to ARR Field Day.
231
- - [25-3-10] Slight change to adif header. Slight change to CAT status icon state.
232
- - [25-3-5] Added checks for blank/comment lines in the macros
233
- - [25-3-2] Added call history support to ARRL DX, just in time for it to be over.
234
- - [25-3-1] Add {OTHER1} and {OTHER2} macros.
218
+ - [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.
235
219
 
236
220
  See [CHANGELOG.md](CHANGELOG.md) for prior changes.
237
221
 
@@ -1947,6 +1947,7 @@ class MainWindow(QtWidgets.QMainWindow):
1947
1947
  if self.actionStatistics.isChecked():
1948
1948
  self.statistics_window.show()
1949
1949
  self.statistics_window.setActive(True)
1950
+ self.statistics_window.get_run_and_total_qs()
1950
1951
  else:
1951
1952
  self.statistics_window.hide()
1952
1953
  self.statistics_window.setActive(False)
@@ -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, QColorConstants, QPalette, QColor
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
- if packet.get("cmd", "") == "DARKMODE":
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
  """
@@ -0,0 +1,370 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <ui version="4.0">
3
+ <class>DockWidget</class>
4
+ <widget class="QDockWidget" name="DockWidget">
5
+ <property name="geometry">
6
+ <rect>
7
+ <x>0</x>
8
+ <y>0</y>
9
+ <width>252</width>
10
+ <height>250</height>
11
+ </rect>
12
+ </property>
13
+ <property name="sizePolicy">
14
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
15
+ <horstretch>0</horstretch>
16
+ <verstretch>0</verstretch>
17
+ </sizepolicy>
18
+ </property>
19
+ <property name="minimumSize">
20
+ <size>
21
+ <width>200</width>
22
+ <height>200</height>
23
+ </size>
24
+ </property>
25
+ <property name="font">
26
+ <font>
27
+ <family>JetBrains Mono ExtraLight</family>
28
+ </font>
29
+ </property>
30
+ <property name="windowTitle">
31
+ <string>RateWindow</string>
32
+ </property>
33
+ <widget class="QWidget" name="dockWidgetContents">
34
+ <property name="sizePolicy">
35
+ <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
36
+ <horstretch>0</horstretch>
37
+ <verstretch>0</verstretch>
38
+ </sizepolicy>
39
+ </property>
40
+ <layout class="QGridLayout" name="gridLayout">
41
+ <item row="0" column="0">
42
+ <layout class="QVBoxLayout" name="verticalLayout">
43
+ <property name="spacing">
44
+ <number>0</number>
45
+ </property>
46
+ <property name="sizeConstraint">
47
+ <enum>QLayout::SizeConstraint::SetMinimumSize</enum>
48
+ </property>
49
+ <item>
50
+ <widget class="QLabel" name="selectors">
51
+ <property name="sizePolicy">
52
+ <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
53
+ <horstretch>0</horstretch>
54
+ <verstretch>0</verstretch>
55
+ </sizepolicy>
56
+ </property>
57
+ <property name="font">
58
+ <font>
59
+ <family>JetBrains Mono ExtraLight</family>
60
+ <bold>true</bold>
61
+ </font>
62
+ </property>
63
+ <property name="lineWidth">
64
+ <number>0</number>
65
+ </property>
66
+ <property name="text">
67
+ <string>All bands - All modes</string>
68
+ </property>
69
+ <property name="alignment">
70
+ <set>Qt::AlignCenter</set>
71
+ </property>
72
+ <property name="textInteractionFlags">
73
+ <set>Qt::TextInteractionFlag::NoTextInteraction</set>
74
+ </property>
75
+ </widget>
76
+ </item>
77
+ <item>
78
+ <layout class="QFormLayout" name="formLayout">
79
+ <property name="sizeConstraint">
80
+ <enum>QLayout::SizeConstraint::SetMinimumSize</enum>
81
+ </property>
82
+ <property name="labelAlignment">
83
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
84
+ </property>
85
+ <property name="formAlignment">
86
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
87
+ </property>
88
+ <item row="0" column="0">
89
+ <widget class="QLabel" name="label_2">
90
+ <property name="minimumSize">
91
+ <size>
92
+ <width>112</width>
93
+ <height>0</height>
94
+ </size>
95
+ </property>
96
+ <property name="autoFillBackground">
97
+ <bool>false</bool>
98
+ </property>
99
+ <property name="text">
100
+ <string>Last Hour:</string>
101
+ </property>
102
+ <property name="alignment">
103
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
104
+ </property>
105
+ <property name="textInteractionFlags">
106
+ <set>Qt::TextInteractionFlag::NoTextInteraction</set>
107
+ </property>
108
+ </widget>
109
+ </item>
110
+ <item row="0" column="1">
111
+ <widget class="QLabel" name="last_hour">
112
+ <property name="minimumSize">
113
+ <size>
114
+ <width>0</width>
115
+ <height>0</height>
116
+ </size>
117
+ </property>
118
+ <property name="maximumSize">
119
+ <size>
120
+ <width>112</width>
121
+ <height>16777215</height>
122
+ </size>
123
+ </property>
124
+ <property name="text">
125
+ <string>0 Q/h</string>
126
+ </property>
127
+ <property name="alignment">
128
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
129
+ </property>
130
+ </widget>
131
+ </item>
132
+ <item row="1" column="0">
133
+ <widget class="QLabel" name="label_4">
134
+ <property name="text">
135
+ <string>10 Last QSO:</string>
136
+ </property>
137
+ <property name="alignment">
138
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
139
+ </property>
140
+ </widget>
141
+ </item>
142
+ <item row="1" column="1">
143
+ <widget class="QLabel" name="ten_last_qso">
144
+ <property name="minimumSize">
145
+ <size>
146
+ <width>0</width>
147
+ <height>0</height>
148
+ </size>
149
+ </property>
150
+ <property name="maximumSize">
151
+ <size>
152
+ <width>112</width>
153
+ <height>16777215</height>
154
+ </size>
155
+ </property>
156
+ <property name="text">
157
+ <string>0 Q/h</string>
158
+ </property>
159
+ <property name="alignment">
160
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
161
+ </property>
162
+ </widget>
163
+ </item>
164
+ <item row="2" column="0">
165
+ <widget class="QLabel" name="label_6">
166
+ <property name="text">
167
+ <string>100 Last QSO:</string>
168
+ </property>
169
+ <property name="alignment">
170
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
171
+ </property>
172
+ </widget>
173
+ </item>
174
+ <item row="2" column="1">
175
+ <widget class="QLabel" name="hundred_last_qso">
176
+ <property name="minimumSize">
177
+ <size>
178
+ <width>0</width>
179
+ <height>0</height>
180
+ </size>
181
+ </property>
182
+ <property name="maximumSize">
183
+ <size>
184
+ <width>112</width>
185
+ <height>16777215</height>
186
+ </size>
187
+ </property>
188
+ <property name="text">
189
+ <string>0 Q/h</string>
190
+ </property>
191
+ <property name="alignment">
192
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
193
+ </property>
194
+ </widget>
195
+ </item>
196
+ <item row="3" column="0">
197
+ <widget class="QLabel" name="since_lasthour_label">
198
+ <property name="text">
199
+ <string>Since 1400z:</string>
200
+ </property>
201
+ <property name="alignment">
202
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
203
+ </property>
204
+ </widget>
205
+ </item>
206
+ <item row="3" column="1">
207
+ <widget class="QLabel" name="since_lasthour">
208
+ <property name="minimumSize">
209
+ <size>
210
+ <width>0</width>
211
+ <height>0</height>
212
+ </size>
213
+ </property>
214
+ <property name="maximumSize">
215
+ <size>
216
+ <width>112</width>
217
+ <height>16777215</height>
218
+ </size>
219
+ </property>
220
+ <property name="text">
221
+ <string>0 QSO</string>
222
+ </property>
223
+ <property name="alignment">
224
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
225
+ </property>
226
+ </widget>
227
+ </item>
228
+ </layout>
229
+ </item>
230
+ <item>
231
+ <widget class="Line" name="line">
232
+ <property name="lineWidth">
233
+ <number>4</number>
234
+ </property>
235
+ <property name="orientation">
236
+ <enum>Qt::Horizontal</enum>
237
+ </property>
238
+ </widget>
239
+ </item>
240
+ <item>
241
+ <layout class="QFormLayout" name="formLayout_3">
242
+ <property name="sizeConstraint">
243
+ <enum>QLayout::SizeConstraint::SetMinimumSize</enum>
244
+ </property>
245
+ <property name="labelAlignment">
246
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
247
+ </property>
248
+ <property name="formAlignment">
249
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
250
+ </property>
251
+ <item row="0" column="0">
252
+ <widget class="QLabel" name="label_14">
253
+ <property name="minimumSize">
254
+ <size>
255
+ <width>112</width>
256
+ <height>0</height>
257
+ </size>
258
+ </property>
259
+ <property name="text">
260
+ <string>Run QSO:</string>
261
+ </property>
262
+ <property name="alignment">
263
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
264
+ </property>
265
+ </widget>
266
+ </item>
267
+ <item row="0" column="1">
268
+ <widget class="QLabel" name="run_qso">
269
+ <property name="maximumSize">
270
+ <size>
271
+ <width>112</width>
272
+ <height>16777215</height>
273
+ </size>
274
+ </property>
275
+ <property name="text">
276
+ <string>0</string>
277
+ </property>
278
+ <property name="alignment">
279
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
280
+ </property>
281
+ </widget>
282
+ </item>
283
+ <item row="1" column="0">
284
+ <widget class="QLabel" name="label_16">
285
+ <property name="text">
286
+ <string>S&amp;P QSO:</string>
287
+ </property>
288
+ <property name="alignment">
289
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
290
+ </property>
291
+ </widget>
292
+ </item>
293
+ <item row="1" column="1">
294
+ <widget class="QLabel" name="sandp_qso">
295
+ <property name="maximumSize">
296
+ <size>
297
+ <width>112</width>
298
+ <height>16777215</height>
299
+ </size>
300
+ </property>
301
+ <property name="text">
302
+ <string>0</string>
303
+ </property>
304
+ <property name="alignment">
305
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
306
+ </property>
307
+ </widget>
308
+ </item>
309
+ <item row="2" column="0">
310
+ <widget class="QLabel" name="label_18">
311
+ <property name="text">
312
+ <string> Hour Run QSO:</string>
313
+ </property>
314
+ <property name="alignment">
315
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
316
+ </property>
317
+ </widget>
318
+ </item>
319
+ <item row="2" column="1">
320
+ <widget class="QLabel" name="hour_run_qso">
321
+ <property name="maximumSize">
322
+ <size>
323
+ <width>112</width>
324
+ <height>16777215</height>
325
+ </size>
326
+ </property>
327
+ <property name="text">
328
+ <string>0</string>
329
+ </property>
330
+ <property name="alignment">
331
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
332
+ </property>
333
+ </widget>
334
+ </item>
335
+ <item row="3" column="0">
336
+ <widget class="QLabel" name="label_17">
337
+ <property name="text">
338
+ <string> Hour S&amp;P QSO:</string>
339
+ </property>
340
+ <property name="alignment">
341
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
342
+ </property>
343
+ </widget>
344
+ </item>
345
+ <item row="3" column="1">
346
+ <widget class="QLabel" name="hour_sandp_qso">
347
+ <property name="maximumSize">
348
+ <size>
349
+ <width>112</width>
350
+ <height>16777215</height>
351
+ </size>
352
+ </property>
353
+ <property name="text">
354
+ <string>0</string>
355
+ </property>
356
+ <property name="alignment">
357
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
358
+ </property>
359
+ </widget>
360
+ </item>
361
+ </layout>
362
+ </item>
363
+ </layout>
364
+ </item>
365
+ </layout>
366
+ </widget>
367
+ </widget>
368
+ <resources/>
369
+ <connections/>
370
+ </ui>
@@ -1,3 +1,3 @@
1
1
  """It's the version"""
2
2
 
3
- __version__ = "25.3.31"
3
+ __version__ = "25.4.1"
@@ -20,7 +20,6 @@ import math
20
20
  from PyQt6 import QtCore, QtGui, QtWidgets, uic
21
21
  from PyQt6.QtCore import QItemSelectionModel
22
22
  from PyQt6.QtWidgets import QDockWidget
23
- from PyQt6.QtGui import QColorConstants, QPalette, QColor
24
23
  from PyQt6.QtCore import pyqtSignal
25
24
 
26
25
  import not1mm.fsutils as fsutils
@@ -193,59 +192,12 @@ class LogWindow(QDockWidget):
193
192
  column = "Freq (Khz)"
194
193
  self.generalLog.setColumnHidden(self.get_column(column), False)
195
194
  self.focusedLog.setColumnHidden(self.get_column(column), False)
196
- if msg.get("cmd", "") == "DARKMODE":
197
- print(f".................{msg.get("state", False)=}")
198
- self.set_dark_mode(msg.get("state", False))
199
195
 
200
196
  def resize_headers_to_match(self) -> None:
201
197
  """"""
202
198
  for i in range(self.generalLog.columnCount()):
203
199
  self.focusedLog.setColumnWidth(i, self.generalLog.columnWidth(i))
204
200
 
205
- def set_dark_mode(self, dark: bool) -> None:
206
- """Forces a darkmode palette."""
207
- return
208
-
209
- if dark:
210
- darkPalette = QPalette()
211
- darkColor = QColor(56, 56, 56)
212
- disabledColor = QColor(127, 127, 127)
213
- darkPalette.setColor(QPalette.ColorRole.Window, darkColor)
214
- darkPalette.setColor(QPalette.ColorRole.WindowText, QColorConstants.White)
215
- darkPalette.setColor(QPalette.ColorRole.Base, QColor(45, 45, 45))
216
- darkPalette.setColor(QPalette.ColorRole.AlternateBase, darkColor)
217
- darkPalette.setColor(QPalette.ColorRole.Text, QColorConstants.White)
218
- darkPalette.setColor(QPalette.ColorRole.Button, darkColor)
219
- darkPalette.setColor(QPalette.ColorRole.ButtonText, QColorConstants.White)
220
- darkPalette.setColor(QPalette.ColorRole.BrightText, QColorConstants.Red)
221
- darkPalette.setColor(QPalette.ColorRole.Link, QColor(42, 130, 218))
222
- darkPalette.setColor(QPalette.ColorRole.Highlight, QColor(42, 130, 218))
223
- darkPalette.setColor(
224
- QPalette.ColorRole.HighlightedText, QColorConstants.Black
225
- )
226
- darkPalette.setColor(
227
- QPalette.ColorGroup.Disabled,
228
- QPalette.ColorRole.ButtonText,
229
- disabledColor,
230
- )
231
- darkPalette.setColor(
232
- QPalette.ColorGroup.Disabled,
233
- QPalette.ColorRole.HighlightedText,
234
- disabledColor,
235
- )
236
- darkPalette.setColor(
237
- QPalette.ColorGroup.Disabled,
238
- QPalette.ColorRole.Text,
239
- disabledColor,
240
- )
241
-
242
- self.setPalette(darkPalette)
243
- self.current_palette = darkPalette
244
- else:
245
- palette = self.style().standardPalette()
246
- self.setPalette(palette)
247
- self.current_palette = palette
248
-
249
201
  def get_column(self, name: str) -> int:
250
202
  """
251
203
  Returns the column number of the given column name.
@@ -303,7 +255,6 @@ class LogWindow(QDockWidget):
303
255
  self.n1mm.send_lookup_packets = self.pref.get("send_n1mm_lookup", False)
304
256
  self.n1mm.send_score_packets = self.pref.get("send_n1mm_score", False)
305
257
  self.n1mm.radio_info["StationName"] = self.pref.get("n1mm_station_name", "")
306
- self.set_dark_mode(self.pref.get("darkmode", False))
307
258
 
308
259
  def load_new_db(self) -> None:
309
260
  """