not1mm 24.10.27.2__tar.gz → 24.11.2__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 (176) hide show
  1. {not1mm-24.10.27.2 → not1mm-24.11.2}/PKG-INFO +2 -31
  2. {not1mm-24.10.27.2 → not1mm-24.11.2}/README.md +1 -30
  3. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/__main__.py +110 -2
  4. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/configuration.ui +617 -612
  5. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/main.ui +34 -7
  6. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/lib/database.py +97 -0
  7. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/lib/settings.py +8 -1
  8. not1mm-24.11.2/not1mm/lib/version.py +3 -0
  9. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/arrl_ss_cw.py +10 -0
  10. not1mm-24.11.2/not1mm/test.py +61 -0
  11. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm.egg-info/PKG-INFO +2 -31
  12. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm.egg-info/top_level.txt +0 -1
  13. {not1mm-24.10.27.2 → not1mm-24.11.2}/pyproject.toml +2 -2
  14. not1mm-24.10.27.2/not1mm/lib/version.py +0 -3
  15. not1mm-24.10.27.2/not1mm/test.py +0 -11
  16. {not1mm-24.10.27.2 → not1mm-24.11.2}/LICENSE +0 -0
  17. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/__init__.py +0 -0
  18. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/bandmap.py +0 -0
  19. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/checkwindow.py +0 -0
  20. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/JetBrainsMono-ExtraLight.ttf +0 -0
  21. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/MASTER.SCP +0 -0
  22. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/about.ui +0 -0
  23. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/alpha bravo charlie delta.txt +0 -0
  24. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/bandmap.ui +0 -0
  25. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/check.png +0 -0
  26. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/checkwindow.ui +0 -0
  27. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/contests.sql +0 -0
  28. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/cty.json +0 -0
  29. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/cwmacros.txt +0 -0
  30. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/donors.html +0 -0
  31. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/editcontact.ui +0 -0
  32. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/editmacro.ui +0 -0
  33. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/greendot.png +0 -0
  34. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/k6gte-not1mm.desktop +0 -0
  35. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/k6gte.not1mm-128.png +0 -0
  36. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/k6gte.not1mm-32.png +0 -0
  37. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/k6gte.not1mm-64.png +0 -0
  38. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/logwindow.ui +0 -0
  39. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/logwindowx.ui +0 -0
  40. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/new_contest.ui +0 -0
  41. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/not1mm.html +0 -0
  42. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/opon.ui +0 -0
  43. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/0.wav +0 -0
  44. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/1.wav +0 -0
  45. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/2.wav +0 -0
  46. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/3.wav +0 -0
  47. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/4.wav +0 -0
  48. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/5.wav +0 -0
  49. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/6.wav +0 -0
  50. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/7.wav +0 -0
  51. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/73.wav +0 -0
  52. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/8.wav +0 -0
  53. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/9.wav +0 -0
  54. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/a.wav +0 -0
  55. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/again.wav +0 -0
  56. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/b.wav +0 -0
  57. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/c.wav +0 -0
  58. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/contest.wav +0 -0
  59. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/cq.wav +0 -0
  60. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/cq2.wav +0 -0
  61. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/d.wav +0 -0
  62. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/e.wav +0 -0
  63. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/f.wav +0 -0
  64. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/g.wav +0 -0
  65. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/h.wav +0 -0
  66. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/i.wav +0 -0
  67. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/j.wav +0 -0
  68. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/k.wav +0 -0
  69. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/k6gte.wav +0 -0
  70. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/l.wav +0 -0
  71. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/m.wav +0 -0
  72. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/mynumber.wav +0 -0
  73. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/n.wav +0 -0
  74. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/nil.wav +0 -0
  75. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/o.wav +0 -0
  76. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/p.wav +0 -0
  77. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/q.wav +0 -0
  78. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/r.wav +0 -0
  79. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/roger.wav +0 -0
  80. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/s.wav +0 -0
  81. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/space.wav +0 -0
  82. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/t.wav +0 -0
  83. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/thankyou.wav +0 -0
  84. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/thankyouqrz.wav +0 -0
  85. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/u.wav +0 -0
  86. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/v.wav +0 -0
  87. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/w.wav +0 -0
  88. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/x.wav +0 -0
  89. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/y.wav +0 -0
  90. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/yourcall.wav +0 -0
  91. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/phonetics/z.wav +0 -0
  92. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/pickcontest.ui +0 -0
  93. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/radio_green.png +0 -0
  94. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/radio_grey.png +0 -0
  95. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/radio_red.png +0 -0
  96. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/reddot.png +0 -0
  97. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/rttymacros.txt +0 -0
  98. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/settings.ui +0 -0
  99. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/splash.png +0 -0
  100. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/ssbmacros.txt +0 -0
  101. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/data/vfo.ui +0 -0
  102. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/fsutils.py +0 -0
  103. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/lib/__init__.py +0 -0
  104. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/lib/about.py +0 -0
  105. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/lib/cat_interface.py +0 -0
  106. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/lib/cwinterface.py +0 -0
  107. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/lib/edit_contact.py +0 -0
  108. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/lib/edit_macro.py +0 -0
  109. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/lib/edit_opon.py +0 -0
  110. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/lib/edit_station.py +0 -0
  111. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/lib/fldigi_sendstring.py +0 -0
  112. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/lib/fldigi_watcher.py +0 -0
  113. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/lib/ft8_watcher.py +0 -0
  114. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/lib/ham_utility.py +0 -0
  115. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/lib/lookup.py +0 -0
  116. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/lib/multicast.py +0 -0
  117. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/lib/n1mm.py +0 -0
  118. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/lib/new_contest.py +0 -0
  119. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/lib/playsound.py +0 -0
  120. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/lib/plugin_common.py +0 -0
  121. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/lib/select_contest.py +0 -0
  122. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/lib/super_check_partial.py +0 -0
  123. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/lib/versiontest.py +0 -0
  124. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/logwindow.py +0 -0
  125. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/lookupservice.py +0 -0
  126. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/10_10_fall_cw.py +0 -0
  127. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/10_10_spring_cw.py +0 -0
  128. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/10_10_summer_phone.py +0 -0
  129. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/10_10_winter_phone.py +0 -0
  130. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/__init__.py +0 -0
  131. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/arrl_10m.py +0 -0
  132. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/arrl_dx_cw.py +0 -0
  133. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/arrl_dx_ssb.py +0 -0
  134. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/arrl_field_day.py +0 -0
  135. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/arrl_rtty_ru.py +0 -0
  136. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/arrl_ss_phone.py +0 -0
  137. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/arrl_vhf_jan.py +0 -0
  138. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/arrl_vhf_jun.py +0 -0
  139. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/arrl_vhf_sep.py +0 -0
  140. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/canada_day.py +0 -0
  141. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/cq_160_cw.py +0 -0
  142. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/cq_160_ssb.py +0 -0
  143. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/cq_wpx_cw.py +0 -0
  144. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/cq_wpx_rtty.py +0 -0
  145. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/cq_wpx_ssb.py +0 -0
  146. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/cq_ww_cw.py +0 -0
  147. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/cq_ww_rtty.py +0 -0
  148. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/cq_ww_ssb.py +0 -0
  149. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/cwt.py +0 -0
  150. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/general_logging.py +0 -0
  151. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/helvetia.py +0 -0
  152. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/iaru_fieldday_r1_cw.py +0 -0
  153. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/iaru_fieldday_r1_ssb.py +0 -0
  154. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/iaru_hf.py +0 -0
  155. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/icwc_mst.py +0 -0
  156. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/jidx_cw.py +0 -0
  157. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/jidx_ph.py +0 -0
  158. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/k1usn_sst.py +0 -0
  159. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/naqp_cw.py +0 -0
  160. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/naqp_rtty.py +0 -0
  161. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/naqp_ssb.py +0 -0
  162. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/phone_weekly_test.py +0 -0
  163. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/ref_cw.py +0 -0
  164. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/ref_ssb.py +0 -0
  165. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/stew_perry_topband.py +0 -0
  166. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/weekly_rtty.py +0 -0
  167. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/plugins/winter_field_day.py +0 -0
  168. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/radio.py +0 -0
  169. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/vfo.py +0 -0
  170. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm/voice_keying.py +0 -0
  171. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm.egg-info/SOURCES.txt +0 -0
  172. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm.egg-info/dependency_links.txt +0 -0
  173. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm.egg-info/entry_points.txt +0 -0
  174. {not1mm-24.10.27.2 → not1mm-24.11.2}/not1mm.egg-info/requires.txt +0 -0
  175. {not1mm-24.10.27.2 → not1mm-24.11.2}/setup.cfg +0 -0
  176. {not1mm-24.10.27.2 → not1mm-24.11.2}/test/contests.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: not1mm
3
- Version: 24.10.27.2
3
+ Version: 24.11.2
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
@@ -232,36 +232,7 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
232
232
 
233
233
  ## Recent Changes (Polishing the Turd)
234
234
 
235
- - [24-10-27-2] Changed CQ zone auto population for CQ WW, it now waits for the user to exit the callsign entry window before auto filling the zone.
236
- - [24-10-27-1] Fixed setting radios ssb mode when crossing 10M boundary.
237
- - [24-10-27] Fix bug where a contacts info could be carried over to new contact if no new value was written.
238
- - [24-10-26] Clear inputs when seeking to a call from the bandmap via the arrow up and down. Fixed bandmap crash from bad telnet data. Drop beacons from bandmap.
239
- - [24-10-25] Add File Menu option to create either an ASCII or UTF8 Cabrillo.
240
- - [24-10-24-1] Make all Cabrillo files with UTF-8.
241
- - [24-10-24] Forgot to convert the VFO dockwidget along with the rest. CQ WW CW, Dupes now score 0.
242
- - [24-10-23] Remove duplicate marked calls in the bandmap.
243
- - [24-10-22] Added ESM to RAC Canada Day. Added French REF.
244
- - [24-10-21] Scaled back the hits returned from the check window from 25 to 20. Seems less resource hungry now.
245
- - [24-10-20-1] ReWrote how the widgets interact. I probably broke a thing or two. Let me know.
246
- - [24-10-20] Add ESM to ARRL DX.
247
- - [24-10-19-1] Rewrite part of CAT control.
248
- - [24-10-19] Change ESM button states when the run state is toggled. Add ESM to ARRL Field Day and Winter Field Day.
249
- - [24-10-18] Fixed marked spots showing the correct time.
250
- - [24-10-17-2] Add ESM to ARRL Sweepstakes.
251
- - [24-10-17-1] Fix dupe check. Reordered change mode and interface update sequence. Resend mode if rigctld does not report back `RPRT 0`
252
- - [24-10-17] Increased max CW speed to 99, 'cause people be crazy. Trying smaller timeout for the rigctlsocket. Not having the checkwindow process events while not visible since it's a resource hog.
253
- - [24-10-15-1] Fix callsigns with a slash failing check during ESM.
254
- - [24-10-15] Add NAQP RTTY, Added ESM to NAQP.
255
- - [24-10-14] Add ESM to CQ WPX.
256
- - [24-10-13] Added ESM to Weekly RTTY, K1USN and CWT.
257
- - [24-10-11] added ESM to CQWW SSB and RTTY.
258
- - [24-10-10] Add ESM to CQ WW CW to test it out.
259
- - [24-10-8] Fix crash on Tune to spot. Change placeholder text for the CW port for those unable to read documentation.
260
- - [24-10-6] Removed 60, 30, 17 and 12M from the default list of bands.
261
- - [24-10-5-1] Store the bandmap spots age timer in the preferences.
262
- - [24-10-5] Force reselction of contest after different DB opened.
263
- - [24-10-2] Add WPX RTTY.
264
- - [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.
235
+ - [24-11-2] Add beginning of call history files. Add command buttons.
265
236
 
266
237
  See [CHANGELOG.md](CHANGELOG.md) for prior changes.
267
238
 
@@ -201,36 +201,7 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
201
201
 
202
202
  ## Recent Changes (Polishing the Turd)
203
203
 
204
- - [24-10-27-2] Changed CQ zone auto population for CQ WW, it now waits for the user to exit the callsign entry window before auto filling the zone.
205
- - [24-10-27-1] Fixed setting radios ssb mode when crossing 10M boundary.
206
- - [24-10-27] Fix bug where a contacts info could be carried over to new contact if no new value was written.
207
- - [24-10-26] Clear inputs when seeking to a call from the bandmap via the arrow up and down. Fixed bandmap crash from bad telnet data. Drop beacons from bandmap.
208
- - [24-10-25] Add File Menu option to create either an ASCII or UTF8 Cabrillo.
209
- - [24-10-24-1] Make all Cabrillo files with UTF-8.
210
- - [24-10-24] Forgot to convert the VFO dockwidget along with the rest. CQ WW CW, Dupes now score 0.
211
- - [24-10-23] Remove duplicate marked calls in the bandmap.
212
- - [24-10-22] Added ESM to RAC Canada Day. Added French REF.
213
- - [24-10-21] Scaled back the hits returned from the check window from 25 to 20. Seems less resource hungry now.
214
- - [24-10-20-1] ReWrote how the widgets interact. I probably broke a thing or two. Let me know.
215
- - [24-10-20] Add ESM to ARRL DX.
216
- - [24-10-19-1] Rewrite part of CAT control.
217
- - [24-10-19] Change ESM button states when the run state is toggled. Add ESM to ARRL Field Day and Winter Field Day.
218
- - [24-10-18] Fixed marked spots showing the correct time.
219
- - [24-10-17-2] Add ESM to ARRL Sweepstakes.
220
- - [24-10-17-1] Fix dupe check. Reordered change mode and interface update sequence. Resend mode if rigctld does not report back `RPRT 0`
221
- - [24-10-17] Increased max CW speed to 99, 'cause people be crazy. Trying smaller timeout for the rigctlsocket. Not having the checkwindow process events while not visible since it's a resource hog.
222
- - [24-10-15-1] Fix callsigns with a slash failing check during ESM.
223
- - [24-10-15] Add NAQP RTTY, Added ESM to NAQP.
224
- - [24-10-14] Add ESM to CQ WPX.
225
- - [24-10-13] Added ESM to Weekly RTTY, K1USN and CWT.
226
- - [24-10-11] added ESM to CQWW SSB and RTTY.
227
- - [24-10-10] Add ESM to CQ WW CW to test it out.
228
- - [24-10-8] Fix crash on Tune to spot. Change placeholder text for the CW port for those unable to read documentation.
229
- - [24-10-6] Removed 60, 30, 17 and 12M from the default list of bands.
230
- - [24-10-5-1] Store the bandmap spots age timer in the preferences.
231
- - [24-10-5] Force reselction of contest after different DB opened.
232
- - [24-10-2] Add WPX RTTY.
233
- - [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.
204
+ - [24-11-2] Add beginning of call history files. Add command buttons.
234
205
 
235
206
  See [CHANGELOG.md](CHANGELOG.md) for prior changes.
236
207
 
@@ -164,6 +164,7 @@ class MainWindow(QtWidgets.QMainWindow):
164
164
  text_color = QColorConstants.Black
165
165
  current_palette = None
166
166
  use_esm = False
167
+ use_call_history = False
167
168
  esm_dict = {}
168
169
 
169
170
  radio_thread = QThread()
@@ -199,6 +200,7 @@ class MainWindow(QtWidgets.QMainWindow):
199
200
  self.setCorner(Qt.Corner.TopLeftCorner, Qt.DockWidgetArea.LeftDockWidgetArea)
200
201
  self.setCorner(Qt.Corner.BottomLeftCorner, Qt.DockWidgetArea.LeftDockWidgetArea)
201
202
  uic.loadUi(fsutils.APP_DATA_PATH / "main.ui", self)
203
+ self.history_info.hide()
202
204
  QApplication.instance().focusObjectChanged.connect(self.on_focus_changed)
203
205
  self.inputs_dict = {
204
206
  self.callsign: "callsign",
@@ -224,12 +226,15 @@ class MainWindow(QtWidgets.QMainWindow):
224
226
 
225
227
  self.actionCW_Macros.triggered.connect(self.cw_macros_state_changed)
226
228
  self.actionDark_Mode_2.triggered.connect(self.dark_mode_state_changed)
227
- self.actionCommand_Buttons.triggered.connect(self.command_buttons_state_change)
229
+ self.actionCommand_Buttons_2.triggered.connect(
230
+ self.command_buttons_state_change
231
+ )
228
232
  self.actionLog_Window.triggered.connect(self.launch_log_window)
229
233
  self.actionBandmap.triggered.connect(self.launch_bandmap_window)
230
234
  self.actionCheck_Window.triggered.connect(self.launch_check_window)
231
235
  self.actionVFO.triggered.connect(self.launch_vfo)
232
236
  self.actionRecalculate_Mults.triggered.connect(self.recalculate_mults)
237
+ self.actionLoad_Call_History_File.triggered.connect(self.load_call_history)
233
238
 
234
239
  self.actionGenerate_Cabrillo_ASCII.triggered.connect(
235
240
  lambda x: self.generate_cabrillo("ascii")
@@ -290,6 +295,12 @@ class MainWindow(QtWidgets.QMainWindow):
290
295
  self.radio_green = QtGui.QPixmap(str(icon_path / "radio_green.png"))
291
296
  self.radio_icon.setPixmap(self.radio_grey)
292
297
 
298
+ self.log_it.clicked.connect(self.save_contact)
299
+ self.wipe.clicked.connect(self.clearinputs)
300
+ self.esc_stop.clicked.connect(self.stop_cw)
301
+ self.mark.clicked.connect(self.mark_spot)
302
+ self.spot_it.clicked.connect(self.spot_dx)
303
+
293
304
  self.F1.setContextMenuPolicy(QtCore.Qt.ContextMenuPolicy.CustomContextMenu)
294
305
  self.F1.customContextMenuRequested.connect(lambda x: self.edit_macro(self.F1))
295
306
  self.F1.clicked.connect(lambda x: self.process_function_key(self.F1))
@@ -703,6 +714,45 @@ class MainWindow(QtWidgets.QMainWindow):
703
714
  "You can udate to the current version by using:\npip install -U not1mm"
704
715
  )
705
716
 
717
+ def load_call_history(self) -> None:
718
+ """"""
719
+ filename = self.filepicker("other")
720
+ if filename:
721
+ self.database.create_callhistory_table()
722
+ self.database.delete_callhistory()
723
+
724
+ try:
725
+ with open(filename, "rt", encoding="utf-8") as file_descriptor:
726
+ lines = file_descriptor.readlines()
727
+ if "!!Order!!" in lines[0]:
728
+ item_names = lines[0].strip().split(",")
729
+ # ['!!Order!!', 'Call', 'Sect', 'State', 'CK', 'UserText', '']
730
+ item_names = item_names[1:-1]
731
+ # ['Call', 'Sect', 'State', 'CK', 'UserText']
732
+ lines = lines[1:]
733
+ group_list = []
734
+ for line in lines:
735
+ if line.startswith("#"):
736
+ continue
737
+ group = {}
738
+ fields = line.strip().split(",")
739
+ # ['4U1WB','MDC','DC','89','']
740
+ count = 0
741
+ try:
742
+ for item in item_names:
743
+ if item == "":
744
+ continue
745
+ group[item] = fields[count]
746
+ count += 1
747
+ group_list.append(group)
748
+ # database.add_callhistory_item(group)
749
+ # print(f"{group=}")
750
+ except IndexError:
751
+ ...
752
+ self.database.add_callhistory_items(group_list)
753
+ except FileNotFoundError as err:
754
+ self.show_message_box(f"{err}")
755
+
706
756
  def on_focus_changed(self, new):
707
757
  """"""
708
758
  if self.use_esm:
@@ -1728,6 +1778,14 @@ class MainWindow(QtWidgets.QMainWindow):
1728
1778
  "Database (*.db)",
1729
1779
  options=options,
1730
1780
  )
1781
+ if action == "other":
1782
+ file, _ = QFileDialog.getOpenFileName(
1783
+ self,
1784
+ "Choose a File",
1785
+ "~/",
1786
+ "Any (*.*)",
1787
+ options=options,
1788
+ )
1731
1789
  return file
1732
1790
 
1733
1791
  def recalculate_mults(self) -> None:
@@ -1907,6 +1965,43 @@ class MainWindow(QtWidgets.QMainWindow):
1907
1965
  if self.rig_control.interface == "flrig":
1908
1966
  self.rig_control.cat.set_flrig_cw_speed(self.cw_speed.value())
1909
1967
 
1968
+ def stop_cw(self):
1969
+ """"""
1970
+ if self.cw is not None:
1971
+ if self.cw.servertype == 1:
1972
+ self.cw.sendcw("\x1b4")
1973
+ return
1974
+ if self.rig_control:
1975
+ if self.rig_control.online:
1976
+ if self.pref.get("cwtype") == 3 and self.rig_control is not None:
1977
+ if self.rig_control.interface == "flrig":
1978
+ self.rig_control.cat.set_flrig_cw_send(False)
1979
+ self.rig_control.cat.set_flrig_cw_send(True)
1980
+
1981
+ def mark_spot(self):
1982
+ """"""
1983
+ freq = self.radio_state.get("vfoa")
1984
+ dx = self.callsign.text()
1985
+ if freq and dx:
1986
+ cmd = {}
1987
+ cmd["cmd"] = "MARKDX"
1988
+ cmd["dx"] = dx
1989
+ cmd["freq"] = float(int(freq) / 1000)
1990
+ if self.bandmap_window:
1991
+ self.bandmap_window.msg_from_main(cmd)
1992
+
1993
+ def spot_dx(self):
1994
+ """"""
1995
+ freq = self.radio_state.get("vfoa")
1996
+ dx = self.callsign.text()
1997
+ if freq and dx:
1998
+ cmd = {}
1999
+ cmd["cmd"] = "SPOTDX"
2000
+ cmd["dx"] = dx
2001
+ cmd["freq"] = float(int(freq) / 1000)
2002
+ if self.bandmap_window:
2003
+ self.bandmap_window.msg_from_main(cmd)
2004
+
1910
2005
  def keyPressEvent(self, event) -> None: # pylint: disable=invalid-name
1911
2006
  """
1912
2007
  This overrides Qt key event.
@@ -1921,6 +2016,12 @@ class MainWindow(QtWidgets.QMainWindow):
1921
2016
  None
1922
2017
  """
1923
2018
  modifier = event.modifiers()
2019
+ if (
2020
+ event.key() == Qt.Key.Key_Equal
2021
+ and modifier == Qt.KeyboardModifier.ControlModifier
2022
+ ):
2023
+ self.save_contact()
2024
+ return
1924
2025
  if event.key() == Qt.Key.Key_K:
1925
2026
  self.toggle_cw_entry()
1926
2027
  return
@@ -2901,6 +3002,9 @@ class MainWindow(QtWidgets.QMainWindow):
2901
3002
  "DISABLED": None,
2902
3003
  }
2903
3004
 
3005
+ self.use_call_history = self.pref.get("use_call_history", False)
3006
+ if self.use_call_history:
3007
+ self.history_info.show()
2904
3008
  self.use_esm = self.pref.get("use_esm", False)
2905
3009
  self.esm_dict["CQ"] = fkey_dict.get(self.pref.get("esm_cq", "DISABLED"))
2906
3010
  self.esm_dict["EXCH"] = fkey_dict.get(self.pref.get("esm_exch", "DISABLED"))
@@ -2968,7 +3072,7 @@ class MainWindow(QtWidgets.QMainWindow):
2968
3072
  None
2969
3073
  """
2970
3074
 
2971
- self.pref["command_buttons"] = self.actionCommand_Buttons.isChecked()
3075
+ self.pref["command_buttons"] = self.actionCommand_Buttons_2.isChecked()
2972
3076
  self.write_preference()
2973
3077
  self.show_command_buttons()
2974
3078
 
@@ -3125,6 +3229,10 @@ class MainWindow(QtWidgets.QMainWindow):
3125
3229
  self.lookup_service.msg_from_main(cmd)
3126
3230
  self.next_field.setFocus()
3127
3231
  if self.contest:
3232
+ if self.use_call_history and hasattr(
3233
+ self.contest, "check_call_history"
3234
+ ):
3235
+ self.contest.check_call_history(self)
3128
3236
  if "CQ WW" in self.contest.name or "IARU HF" in self.contest.name:
3129
3237
  self.contest.prefill(self)
3130
3238
  return