not1mm 24.10.21__tar.gz → 24.10.22.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 (174) hide show
  1. {not1mm-24.10.21 → not1mm-24.10.22.1}/PKG-INFO +7 -4
  2. {not1mm-24.10.21 → not1mm-24.10.22.1}/README.md +6 -3
  3. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/bandmap.py +3 -13
  4. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/main.ui +2 -2
  5. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/new_contest.ui +10 -0
  6. not1mm-24.10.22.1/not1mm/lib/version.py +3 -0
  7. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/canada_day.py +91 -6
  8. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/ref_cw.py +104 -7
  9. not1mm-24.10.22.1/not1mm/plugins/ref_ssb.py +599 -0
  10. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm.egg-info/PKG-INFO +7 -4
  11. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm.egg-info/SOURCES.txt +1 -0
  12. {not1mm-24.10.21 → not1mm-24.10.22.1}/pyproject.toml +1 -1
  13. not1mm-24.10.21/not1mm/lib/version.py +0 -3
  14. {not1mm-24.10.21 → not1mm-24.10.22.1}/LICENSE +0 -0
  15. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/__init__.py +0 -0
  16. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/__main__.py +0 -0
  17. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/checkwindow.py +0 -0
  18. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/JetBrainsMono-ExtraLight.ttf +0 -0
  19. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/MASTER.SCP +0 -0
  20. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/about.ui +0 -0
  21. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/alpha bravo charlie delta.txt +0 -0
  22. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/bandmap.ui +0 -0
  23. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/check.png +0 -0
  24. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/checkwindow.ui +0 -0
  25. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/configuration.ui +0 -0
  26. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/contests.sql +0 -0
  27. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/cty.json +0 -0
  28. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/cwmacros.txt +0 -0
  29. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/donors.html +0 -0
  30. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/editcontact.ui +0 -0
  31. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/editmacro.ui +0 -0
  32. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/greendot.png +0 -0
  33. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/k6gte-not1mm.desktop +0 -0
  34. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/k6gte.not1mm-128.png +0 -0
  35. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/k6gte.not1mm-32.png +0 -0
  36. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/k6gte.not1mm-64.png +0 -0
  37. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/logwindow.ui +0 -0
  38. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/logwindowx.ui +0 -0
  39. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/not1mm.html +0 -0
  40. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/opon.ui +0 -0
  41. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/0.wav +0 -0
  42. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/1.wav +0 -0
  43. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/2.wav +0 -0
  44. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/3.wav +0 -0
  45. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/4.wav +0 -0
  46. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/5.wav +0 -0
  47. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/6.wav +0 -0
  48. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/7.wav +0 -0
  49. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/73.wav +0 -0
  50. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/8.wav +0 -0
  51. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/9.wav +0 -0
  52. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/a.wav +0 -0
  53. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/again.wav +0 -0
  54. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/b.wav +0 -0
  55. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/c.wav +0 -0
  56. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/contest.wav +0 -0
  57. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/cq.wav +0 -0
  58. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/d.wav +0 -0
  59. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/e.wav +0 -0
  60. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/f.wav +0 -0
  61. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/g.wav +0 -0
  62. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/h.wav +0 -0
  63. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/i.wav +0 -0
  64. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/j.wav +0 -0
  65. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/k.wav +0 -0
  66. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/k6gte.wav +0 -0
  67. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/l.wav +0 -0
  68. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/m.wav +0 -0
  69. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/mynumber.wav +0 -0
  70. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/n.wav +0 -0
  71. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/nil.wav +0 -0
  72. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/o.wav +0 -0
  73. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/p.wav +0 -0
  74. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/q.wav +0 -0
  75. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/r.wav +0 -0
  76. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/roger.wav +0 -0
  77. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/s.wav +0 -0
  78. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/space.wav +0 -0
  79. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/t.wav +0 -0
  80. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/thankyou.wav +0 -0
  81. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/thankyouqrz.wav +0 -0
  82. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/u.wav +0 -0
  83. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/v.wav +0 -0
  84. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/w.wav +0 -0
  85. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/x.wav +0 -0
  86. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/y.wav +0 -0
  87. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/yourcall.wav +0 -0
  88. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/phonetics/z.wav +0 -0
  89. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/pickcontest.ui +0 -0
  90. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/radio_green.png +0 -0
  91. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/radio_grey.png +0 -0
  92. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/radio_red.png +0 -0
  93. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/reddot.png +0 -0
  94. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/rttymacros.txt +0 -0
  95. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/settings.ui +0 -0
  96. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/splash.png +0 -0
  97. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/ssbmacros.txt +0 -0
  98. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/data/vfo.ui +0 -0
  99. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/fsutils.py +0 -0
  100. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/lib/__init__.py +0 -0
  101. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/lib/about.py +0 -0
  102. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/lib/cat_interface.py +0 -0
  103. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/lib/cwinterface.py +0 -0
  104. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/lib/database.py +0 -0
  105. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/lib/edit_contact.py +0 -0
  106. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/lib/edit_macro.py +0 -0
  107. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/lib/edit_opon.py +0 -0
  108. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/lib/edit_station.py +0 -0
  109. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/lib/fldigi_sendstring.py +0 -0
  110. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/lib/fldigi_watcher.py +0 -0
  111. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/lib/ft8_watcher.py +0 -0
  112. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/lib/ham_utility.py +0 -0
  113. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/lib/lookup.py +0 -0
  114. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/lib/multicast.py +0 -0
  115. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/lib/n1mm.py +0 -0
  116. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/lib/new_contest.py +0 -0
  117. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/lib/playsound.py +0 -0
  118. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/lib/plugin_common.py +0 -0
  119. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/lib/select_contest.py +0 -0
  120. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/lib/settings.py +0 -0
  121. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/lib/super_check_partial.py +0 -0
  122. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/lib/versiontest.py +0 -0
  123. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/logwindow.py +0 -0
  124. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/lookupservice.py +0 -0
  125. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/10_10_fall_cw.py +0 -0
  126. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/10_10_spring_cw.py +0 -0
  127. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/10_10_summer_phone.py +0 -0
  128. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/10_10_winter_phone.py +0 -0
  129. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/__init__.py +0 -0
  130. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/arrl_10m.py +0 -0
  131. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/arrl_dx_cw.py +0 -0
  132. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/arrl_dx_ssb.py +0 -0
  133. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/arrl_field_day.py +0 -0
  134. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/arrl_rtty_ru.py +0 -0
  135. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/arrl_ss_cw.py +0 -0
  136. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/arrl_ss_phone.py +0 -0
  137. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/arrl_vhf_jan.py +0 -0
  138. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/arrl_vhf_jun.py +0 -0
  139. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/arrl_vhf_sep.py +0 -0
  140. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/cq_160_cw.py +0 -0
  141. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/cq_160_ssb.py +0 -0
  142. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/cq_wpx_cw.py +0 -0
  143. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/cq_wpx_rtty.py +0 -0
  144. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/cq_wpx_ssb.py +0 -0
  145. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/cq_ww_cw.py +0 -0
  146. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/cq_ww_rtty.py +0 -0
  147. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/cq_ww_ssb.py +0 -0
  148. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/cwt.py +0 -0
  149. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/general_logging.py +0 -0
  150. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/helvetia.py +0 -0
  151. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/iaru_fieldday_r1_cw.py +0 -0
  152. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/iaru_fieldday_r1_ssb.py +0 -0
  153. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/iaru_hf.py +0 -0
  154. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/icwc_mst.py +0 -0
  155. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/jidx_cw.py +0 -0
  156. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/jidx_ph.py +0 -0
  157. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/k1usn_sst.py +0 -0
  158. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/naqp_cw.py +0 -0
  159. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/naqp_rtty.py +0 -0
  160. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/naqp_ssb.py +0 -0
  161. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/phone_weekly_test.py +0 -0
  162. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/stew_perry_topband.py +0 -0
  163. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/weekly_rtty.py +0 -0
  164. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/plugins/winter_field_day.py +0 -0
  165. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/radio.py +0 -0
  166. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/test.py +0 -0
  167. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/vfo.py +0 -0
  168. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm/voice_keying.py +0 -0
  169. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm.egg-info/dependency_links.txt +0 -0
  170. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm.egg-info/entry_points.txt +0 -0
  171. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm.egg-info/requires.txt +0 -0
  172. {not1mm-24.10.21 → not1mm-24.10.22.1}/not1mm.egg-info/top_level.txt +0 -0
  173. {not1mm-24.10.21 → not1mm-24.10.22.1}/setup.cfg +0 -0
  174. {not1mm-24.10.21 → not1mm-24.10.22.1}/test/contests.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: not1mm
3
- Version: 24.10.21
3
+ Version: 24.10.22.1
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
@@ -58,7 +58,7 @@ Requires-Dist: Levenshtein
58
58
  - [Other not so supported contests](#other-not-so-supported-contests)
59
59
  - [Our Code Contributors ✨](#our-code-contributors-)
60
60
  - [List of should be working contests, those in bold have ESM](#list-of-should-be-working-contests-those-in-bold-have-esm)
61
- - [Recent Changes](#recent-changes)
61
+ - [Recent Changes (Polishing the Turd)](#recent-changes-polishing-the-turd)
62
62
  - [Flatpak](#flatpak)
63
63
  - [Installation](#installation)
64
64
  - [Prerequisites](#prerequisites)
@@ -224,13 +224,16 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
224
224
  - **K1USN Slow Speed Test**
225
225
  - **NAQP CW, RTTY, SSB**
226
226
  - Phone Weekly Test
227
- - RAC Canada Day
227
+ - **RAC Canada Day**
228
+ - **REF CW, SSB**
228
229
  - Stew Perry Topband
229
230
  - **Weekly RTTY**
230
231
  - **Winter Field Day**
231
232
 
232
- ## Recent Changes
233
+ ## Recent Changes (Polishing the Turd)
233
234
 
235
+ - [24-10-22-1] Fix duplicate spots in bandmap.
236
+ - [24-10-22] Added ESM to RAC Canada Day. Added French REF.
234
237
  - [24-10-21] Scaled back the hits returned from the check window from 25 to 20. Seems less resource hungry now.
235
238
  - [24-10-20-1] ReWrote how the widgets interact. I porbably broke a thing or two. Let me know.
236
239
  - [24-10-20] Add ESM to ARRL DX.
@@ -27,7 +27,7 @@
27
27
  - [Other not so supported contests](#other-not-so-supported-contests)
28
28
  - [Our Code Contributors ✨](#our-code-contributors-)
29
29
  - [List of should be working contests, those in bold have ESM](#list-of-should-be-working-contests-those-in-bold-have-esm)
30
- - [Recent Changes](#recent-changes)
30
+ - [Recent Changes (Polishing the Turd)](#recent-changes-polishing-the-turd)
31
31
  - [Flatpak](#flatpak)
32
32
  - [Installation](#installation)
33
33
  - [Prerequisites](#prerequisites)
@@ -193,13 +193,16 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
193
193
  - **K1USN Slow Speed Test**
194
194
  - **NAQP CW, RTTY, SSB**
195
195
  - Phone Weekly Test
196
- - RAC Canada Day
196
+ - **RAC Canada Day**
197
+ - **REF CW, SSB**
197
198
  - Stew Perry Topband
198
199
  - **Weekly RTTY**
199
200
  - **Winter Field Day**
200
201
 
201
- ## Recent Changes
202
+ ## Recent Changes (Polishing the Turd)
202
203
 
204
+ - [24-10-22-1] Fix duplicate spots in bandmap.
205
+ - [24-10-22] Added ESM to RAC Canada Day. Added French REF.
203
206
  - [24-10-21] Scaled back the hits returned from the check window from 25 to 20. Seems less resource hungry now.
204
207
  - [24-10-20-1] ReWrote how the widgets interact. I porbably broke a thing or two. Let me know.
205
208
  - [24-10-20] Add ESM to ARRL DX.
@@ -162,7 +162,7 @@ class Database:
162
162
  try:
163
163
  if erase:
164
164
  delete_call = (
165
- "delete from spots where callsign = ? and ts < DATETIME();"
165
+ "delete from spots where callsign = ? AND comment != 'MARKED';"
166
166
  )
167
167
  self.cursor.execute(delete_call, (spot.get("callsign"),))
168
168
  self.db.commit()
@@ -415,18 +415,8 @@ class BandMapWindow(QDockWidget):
415
415
  if packet.get("cmd", "") == "SPOTDX":
416
416
  dx = packet.get("dx", "")
417
417
  freq = packet.get("freq", 0.0)
418
- the_UTC_time = datetime.now(timezone.utc).isoformat(" ")[:19].split()[1]
419
- spot = {
420
- "ts": "2099-01-01 " + the_UTC_time,
421
- "callsign": dx,
422
- "freq": freq / 1000,
423
- "band": self.currentBand.name,
424
- "mode": "DX",
425
- "spotter": platform.node(),
426
- "comment": "MARKED",
427
- }
428
- self.spots.addspot(spot, erase=False)
429
- self.update_stations()
418
+ spotdx = f"dx {dx} {freq}"
419
+ self.send_command(spotdx)
430
420
  return
431
421
  if packet.get("cmd", "") == "MARKDX":
432
422
  dx = packet.get("dx", "")
@@ -9,8 +9,8 @@
9
9
  <rect>
10
10
  <x>0</x>
11
11
  <y>0</y>
12
- <width>855</width>
13
- <height>465</height>
12
+ <width>785</width>
13
+ <height>268</height>
14
14
  </rect>
15
15
  </property>
16
16
  <property name="sizePolicy">
@@ -367,6 +367,16 @@
367
367
  <string>PHONE WEEKLY TEST</string>
368
368
  </property>
369
369
  </item>
370
+ <item>
371
+ <property name="text">
372
+ <string>REF CW</string>
373
+ </property>
374
+ </item>
375
+ <item>
376
+ <property name="text">
377
+ <string>REF SSB</string>
378
+ </property>
379
+ </item>
370
380
  <item>
371
381
  <property name="text">
372
382
  <string>STEW PERRY TOPBAND</string>
@@ -0,0 +1,3 @@
1
+ """It's the version"""
2
+
3
+ __version__ = "24.10.22.1"
@@ -51,6 +51,7 @@ RAC_OFFICIAL_STATIONS = [
51
51
  "VY0RAC",
52
52
  "VY1RAC",
53
53
  "VY2RAC",
54
+ "VE3RHQ",
54
55
  ]
55
56
 
56
57
  PROV_SEC = [
@@ -151,9 +152,6 @@ def predupe(self):
151
152
 
152
153
  def prefill(self):
153
154
  """Fill sentnr"""
154
- # if len(self.other_2.text()) == 0:
155
- # self.other_2.setText(str(self.contact.get("ZN", "")))
156
-
157
155
  result = self.database.get_serial()
158
156
  serial_nr = str(result.get("serial_nr", "1")).zfill(3)
159
157
  if serial_nr == "None":
@@ -164,8 +162,6 @@ def prefill(self):
164
162
  if len(field.text()) == 0:
165
163
  field.setText(exchange)
166
164
 
167
- # self.other_1.setText(str(self.contest_settings.get("SentExchange", 0)))
168
-
169
165
 
170
166
  def points(self):
171
167
  """Calc point"""
@@ -177,7 +173,7 @@ def points(self):
177
173
  if result:
178
174
  for item in result.items():
179
175
  entity = item[1].get("entity", "")
180
- continent = item[1].get("continent", "")
176
+ # continent = item[1].get("continent", "")
181
177
  if entity == "Canada":
182
178
  return 10
183
179
 
@@ -401,3 +397,92 @@ def cabrillo(self):
401
397
 
402
398
  def recalculate_mults(self):
403
399
  """Recalculates multipliers after change in logged qso."""
400
+
401
+
402
+ def process_esm(self, new_focused_widget=None, with_enter=False):
403
+ """ESM State Machine"""
404
+
405
+ # self.pref["run_state"]
406
+
407
+ # -----===== Assigned F-Keys =====-----
408
+ # self.esm_dict["CQ"]
409
+ # self.esm_dict["EXCH"]
410
+ # self.esm_dict["QRZ"]
411
+ # self.esm_dict["AGN"]
412
+ # self.esm_dict["HISCALL"]
413
+ # self.esm_dict["MYCALL"]
414
+ # self.esm_dict["QSOB4"]
415
+
416
+ # ----==== text fields ====----
417
+ # self.callsign
418
+ # self.sent
419
+ # self.receive
420
+ # self.other_1
421
+ # self.other_2
422
+
423
+ if new_focused_widget is not None:
424
+ self.current_widget = self.inputs_dict.get(new_focused_widget)
425
+
426
+ for a_button in [
427
+ self.esm_dict["CQ"],
428
+ self.esm_dict["EXCH"],
429
+ self.esm_dict["QRZ"],
430
+ self.esm_dict["AGN"],
431
+ self.esm_dict["HISCALL"],
432
+ self.esm_dict["MYCALL"],
433
+ self.esm_dict["QSOB4"],
434
+ ]:
435
+ if a_button is not None:
436
+ self.restore_button_color(a_button)
437
+
438
+ buttons_to_send = []
439
+
440
+ if self.pref.get("run_state"):
441
+ if self.current_widget == "callsign":
442
+ if len(self.callsign.text()) < 3:
443
+ self.make_button_green(self.esm_dict["CQ"])
444
+ buttons_to_send.append(self.esm_dict["CQ"])
445
+ elif len(self.callsign.text()) > 2:
446
+ self.make_button_green(self.esm_dict["HISCALL"])
447
+ self.make_button_green(self.esm_dict["EXCH"])
448
+ buttons_to_send.append(self.esm_dict["HISCALL"])
449
+ buttons_to_send.append(self.esm_dict["EXCH"])
450
+
451
+ elif self.current_widget in ["other_1", "other_2"]:
452
+ if self.other_1.text() == "" or self.other_2.text() == "":
453
+ self.make_button_green(self.esm_dict["AGN"])
454
+ buttons_to_send.append(self.esm_dict["AGN"])
455
+ else:
456
+ self.make_button_green(self.esm_dict["QRZ"])
457
+ buttons_to_send.append(self.esm_dict["QRZ"])
458
+ buttons_to_send.append("LOGIT")
459
+
460
+ if with_enter is True and bool(len(buttons_to_send)):
461
+ for button in buttons_to_send:
462
+ if button:
463
+ if button == "LOGIT":
464
+ self.save_contact()
465
+ continue
466
+ self.process_function_key(button)
467
+ else:
468
+ if self.current_widget == "callsign":
469
+ if len(self.callsign.text()) > 2:
470
+ self.make_button_green(self.esm_dict["MYCALL"])
471
+ buttons_to_send.append(self.esm_dict["MYCALL"])
472
+
473
+ elif self.current_widget in ["other_1", "other_2"]:
474
+ if self.other_1.text() == "" or self.other_2.text() == "":
475
+ self.make_button_green(self.esm_dict["AGN"])
476
+ buttons_to_send.append(self.esm_dict["AGN"])
477
+ else:
478
+ self.make_button_green(self.esm_dict["EXCH"])
479
+ buttons_to_send.append(self.esm_dict["EXCH"])
480
+ buttons_to_send.append("LOGIT")
481
+
482
+ if with_enter is True and bool(len(buttons_to_send)):
483
+ for button in buttons_to_send:
484
+ if button:
485
+ if button == "LOGIT":
486
+ self.save_contact()
487
+ continue
488
+ self.process_function_key(button)
@@ -7,13 +7,13 @@ Awards: Worldwide
7
7
  Mode: CW
8
8
  Bands: 80, 40, 20, 15, 10m
9
9
  Classes: Single Op All Band
10
- Single Op Single Band
11
- Multi-Single
12
- Club
13
- SWL
10
+ Single Op Single Band
11
+ Multi-Single
12
+ Club
13
+ SWL
14
14
  Max power: HP: >100 Watts
15
- LP: 100 Watts
16
- QRP: 5 Watts
15
+ LP: 100 Watts
16
+ QRP: 5 Watts
17
17
 
18
18
  Exchange: French: RST + Department/Prefix
19
19
  non-French: RST + Serial No.
@@ -326,7 +326,7 @@ def recalculate_mults(self):
326
326
 
327
327
  def adif(self):
328
328
  """Call the generate ADIF function"""
329
- gen_adif(self, cabrillo_name, "HELVETIA")
329
+ gen_adif(self, cabrillo_name, "REF-CW")
330
330
 
331
331
 
332
332
  def cabrillo(self):
@@ -500,3 +500,100 @@ def cabrillo(self):
500
500
  logger.critical("cabrillo: IO error: %s, writing to %s", exception, filename)
501
501
  self.show_message_box(f"Error saving Cabrillo: {exception} {filename}")
502
502
  return
503
+
504
+
505
+ def process_esm(self, new_focused_widget=None, with_enter=False):
506
+ """ESM State Machine"""
507
+
508
+ # self.pref["run_state"]
509
+
510
+ # -----===== Assigned F-Keys =====-----
511
+ # self.esm_dict["CQ"]
512
+ # self.esm_dict["EXCH"]
513
+ # self.esm_dict["QRZ"]
514
+ # self.esm_dict["AGN"]
515
+ # self.esm_dict["HISCALL"]
516
+ # self.esm_dict["MYCALL"]
517
+ # self.esm_dict["QSOB4"]
518
+
519
+ # ----==== text fields ====----
520
+ # self.callsign
521
+ # self.sent
522
+ # self.receive
523
+ # self.other_1
524
+ # self.other_2
525
+
526
+ if new_focused_widget is not None:
527
+ self.current_widget = self.inputs_dict.get(new_focused_widget)
528
+
529
+ # print(f"checking esm {self.current_widget=} {with_enter=} {self.pref.get("run_state")=}")
530
+
531
+ for a_button in [
532
+ self.esm_dict["CQ"],
533
+ self.esm_dict["EXCH"],
534
+ self.esm_dict["QRZ"],
535
+ self.esm_dict["AGN"],
536
+ self.esm_dict["HISCALL"],
537
+ self.esm_dict["MYCALL"],
538
+ self.esm_dict["QSOB4"],
539
+ ]:
540
+ if a_button is not None:
541
+ self.restore_button_color(a_button)
542
+
543
+ buttons_to_send = []
544
+
545
+ if self.pref.get("run_state"):
546
+ if self.current_widget == "callsign":
547
+ if len(self.callsign.text()) < 3:
548
+ self.make_button_green(self.esm_dict["CQ"])
549
+ buttons_to_send.append(self.esm_dict["CQ"])
550
+ elif len(self.callsign.text()) > 2:
551
+ self.make_button_green(self.esm_dict["HISCALL"])
552
+ self.make_button_green(self.esm_dict["EXCH"])
553
+ buttons_to_send.append(self.esm_dict["HISCALL"])
554
+ buttons_to_send.append(self.esm_dict["EXCH"])
555
+
556
+ elif self.current_widget == "other_2":
557
+ if self.other_2.text() == "":
558
+ self.make_button_green(self.esm_dict["AGN"])
559
+ buttons_to_send.append(self.esm_dict["AGN"])
560
+ elif self.other_2.text().isnumeric():
561
+ self.make_button_green(self.esm_dict["QRZ"])
562
+ buttons_to_send.append(self.esm_dict["QRZ"])
563
+ buttons_to_send.append("LOGIT")
564
+ else:
565
+ self.make_button_green(self.esm_dict["AGN"])
566
+ buttons_to_send.append(self.esm_dict["AGN"])
567
+
568
+ if with_enter is True and bool(len(buttons_to_send)):
569
+ for button in buttons_to_send:
570
+ if button:
571
+ if button == "LOGIT":
572
+ self.save_contact()
573
+ continue
574
+ self.process_function_key(button)
575
+ else:
576
+ if self.current_widget == "callsign":
577
+ if len(self.callsign.text()) > 2:
578
+ self.make_button_green(self.esm_dict["MYCALL"])
579
+ buttons_to_send.append(self.esm_dict["MYCALL"])
580
+
581
+ elif self.current_widget == "other_2":
582
+ if self.other_2.text() == "":
583
+ self.make_button_green(self.esm_dict["AGN"])
584
+ buttons_to_send.append(self.esm_dict["AGN"])
585
+ elif self.other_2.text().isnumeric():
586
+ self.make_button_green(self.esm_dict["EXCH"])
587
+ buttons_to_send.append(self.esm_dict["EXCH"])
588
+ buttons_to_send.append("LOGIT")
589
+ else:
590
+ self.make_button_green(self.esm_dict["AGN"])
591
+ buttons_to_send.append(self.esm_dict["AGN"])
592
+
593
+ if with_enter is True and bool(len(buttons_to_send)):
594
+ for button in buttons_to_send:
595
+ if button:
596
+ if button == "LOGIT":
597
+ self.save_contact()
598
+ continue
599
+ self.process_function_key(button)