not1mm 24.11.23__tar.gz → 24.11.24.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 (177) hide show
  1. {not1mm-24.11.23 → not1mm-24.11.24.1}/PKG-INFO +26 -24
  2. {not1mm-24.11.23 → not1mm-24.11.24.1}/README.md +25 -23
  3. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/donors.html +4 -0
  4. not1mm-24.11.24.1/not1mm/lib/version.py +3 -0
  5. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/10_10_fall_cw.py +91 -0
  6. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/10_10_spring_cw.py +91 -0
  7. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/10_10_summer_phone.py +91 -0
  8. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/10_10_winter_phone.py +91 -0
  9. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/arrl_10m.py +110 -0
  10. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/arrl_vhf_jan.py +92 -1
  11. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/arrl_vhf_jun.py +92 -1
  12. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/arrl_vhf_sep.py +95 -1
  13. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/cq_160_cw.py +94 -5
  14. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/cq_160_ssb.py +94 -5
  15. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/iaru_fieldday_r1_cw.py +91 -0
  16. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/iaru_fieldday_r1_ssb.py +91 -0
  17. not1mm-24.11.24.1/not1mm/plugins/iaru_hf.py +491 -0
  18. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm.egg-info/PKG-INFO +26 -24
  19. {not1mm-24.11.23 → not1mm-24.11.24.1}/pyproject.toml +1 -1
  20. not1mm-24.11.23/not1mm/lib/version.py +0 -3
  21. not1mm-24.11.23/not1mm/plugins/iaru_hf.py +0 -381
  22. {not1mm-24.11.23 → not1mm-24.11.24.1}/LICENSE +0 -0
  23. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/__init__.py +0 -0
  24. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/__main__.py +0 -0
  25. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/bandmap.py +0 -0
  26. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/checkwindow.py +0 -0
  27. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/JetBrainsMono-ExtraLight.ttf +0 -0
  28. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/MASTER.SCP +0 -0
  29. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/about.ui +0 -0
  30. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/alpha bravo charlie delta.txt +0 -0
  31. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/bandmap.ui +0 -0
  32. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/check.png +0 -0
  33. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/checkwindow.ui +0 -0
  34. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/configuration.ui +0 -0
  35. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/contests.sql +0 -0
  36. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/cty.json +0 -0
  37. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/cwmacros.txt +0 -0
  38. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/editcontact.ui +0 -0
  39. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/editmacro.ui +0 -0
  40. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/greendot.png +0 -0
  41. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/k6gte-not1mm.desktop +0 -0
  42. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/k6gte.not1mm-128.png +0 -0
  43. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/k6gte.not1mm-32.png +0 -0
  44. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/k6gte.not1mm-64.png +0 -0
  45. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/logwindow.ui +0 -0
  46. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/logwindowx.ui +0 -0
  47. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/main.ui +0 -0
  48. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/new_contest.ui +0 -0
  49. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/not1mm.html +0 -0
  50. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/opon.ui +0 -0
  51. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/0.wav +0 -0
  52. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/1.wav +0 -0
  53. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/2.wav +0 -0
  54. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/3.wav +0 -0
  55. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/4.wav +0 -0
  56. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/5.wav +0 -0
  57. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/6.wav +0 -0
  58. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/7.wav +0 -0
  59. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/73.wav +0 -0
  60. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/8.wav +0 -0
  61. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/9.wav +0 -0
  62. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/a.wav +0 -0
  63. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/again.wav +0 -0
  64. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/b.wav +0 -0
  65. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/c.wav +0 -0
  66. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/contest.wav +0 -0
  67. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/cq.wav +0 -0
  68. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/cq2.wav +0 -0
  69. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/d.wav +0 -0
  70. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/e.wav +0 -0
  71. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/f.wav +0 -0
  72. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/g.wav +0 -0
  73. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/h.wav +0 -0
  74. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/i.wav +0 -0
  75. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/j.wav +0 -0
  76. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/k.wav +0 -0
  77. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/k6gte.wav +0 -0
  78. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/l.wav +0 -0
  79. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/m.wav +0 -0
  80. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/mynumber.wav +0 -0
  81. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/n.wav +0 -0
  82. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/nil.wav +0 -0
  83. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/o.wav +0 -0
  84. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/p.wav +0 -0
  85. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/q.wav +0 -0
  86. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/r.wav +0 -0
  87. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/roger.wav +0 -0
  88. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/s.wav +0 -0
  89. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/space.wav +0 -0
  90. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/t.wav +0 -0
  91. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/thankyou.wav +0 -0
  92. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/thankyouqrz.wav +0 -0
  93. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/u.wav +0 -0
  94. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/v.wav +0 -0
  95. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/w.wav +0 -0
  96. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/x.wav +0 -0
  97. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/y.wav +0 -0
  98. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/yourcall.wav +0 -0
  99. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/phonetics/z.wav +0 -0
  100. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/pickcontest.ui +0 -0
  101. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/radio_green.png +0 -0
  102. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/radio_grey.png +0 -0
  103. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/radio_red.png +0 -0
  104. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/reddot.png +0 -0
  105. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/rttymacros.txt +0 -0
  106. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/settings.ui +0 -0
  107. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/splash.png +0 -0
  108. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/ssbmacros.txt +0 -0
  109. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/data/vfo.ui +0 -0
  110. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/fsutils.py +0 -0
  111. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/lib/__init__.py +0 -0
  112. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/lib/about.py +0 -0
  113. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/lib/cat_interface.py +0 -0
  114. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/lib/cwinterface.py +0 -0
  115. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/lib/database.py +0 -0
  116. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/lib/edit_contact.py +0 -0
  117. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/lib/edit_macro.py +0 -0
  118. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/lib/edit_opon.py +0 -0
  119. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/lib/edit_station.py +0 -0
  120. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/lib/fldigi_sendstring.py +0 -0
  121. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/lib/fldigi_watcher.py +0 -0
  122. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/lib/ft8_watcher.py +0 -0
  123. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/lib/ham_utility.py +0 -0
  124. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/lib/lookup.py +0 -0
  125. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/lib/multicast.py +0 -0
  126. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/lib/n1mm.py +0 -0
  127. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/lib/new_contest.py +0 -0
  128. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/lib/plugin_common.py +0 -0
  129. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/lib/select_contest.py +0 -0
  130. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/lib/settings.py +0 -0
  131. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/lib/super_check_partial.py +0 -0
  132. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/lib/versiontest.py +0 -0
  133. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/logwindow.py +0 -0
  134. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/lookupservice.py +0 -0
  135. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/__init__.py +0 -0
  136. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/arrl_dx_cw.py +0 -0
  137. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/arrl_dx_ssb.py +0 -0
  138. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/arrl_field_day.py +0 -0
  139. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/arrl_rtty_ru.py +0 -0
  140. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/arrl_ss_cw.py +0 -0
  141. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/arrl_ss_phone.py +0 -0
  142. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/canada_day.py +0 -0
  143. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/cq_wpx_cw.py +0 -0
  144. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/cq_wpx_rtty.py +0 -0
  145. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/cq_wpx_ssb.py +0 -0
  146. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/cq_ww_cw.py +0 -0
  147. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/cq_ww_rtty.py +0 -0
  148. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/cq_ww_ssb.py +0 -0
  149. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/cwt.py +0 -0
  150. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/darc_xmas.py +0 -0
  151. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/general_logging.py +0 -0
  152. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/helvetia.py +0 -0
  153. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/icwc_mst.py +0 -0
  154. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/jidx_cw.py +0 -0
  155. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/jidx_ph.py +0 -0
  156. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/k1usn_sst.py +0 -0
  157. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/lz-dx.py +0 -0
  158. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/naqp_cw.py +0 -0
  159. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/naqp_rtty.py +0 -0
  160. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/naqp_ssb.py +0 -0
  161. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/phone_weekly_test.py +0 -0
  162. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/raem.py +0 -0
  163. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/ref_cw.py +0 -0
  164. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/ref_ssb.py +0 -0
  165. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/stew_perry_topband.py +0 -0
  166. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/weekly_rtty.py +0 -0
  167. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/plugins/winter_field_day.py +0 -0
  168. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/radio.py +0 -0
  169. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/test.py +0 -0
  170. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/vfo.py +0 -0
  171. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm/voice_keying.py +0 -0
  172. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm.egg-info/SOURCES.txt +0 -0
  173. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm.egg-info/dependency_links.txt +0 -0
  174. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm.egg-info/entry_points.txt +0 -0
  175. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm.egg-info/requires.txt +0 -0
  176. {not1mm-24.11.23 → not1mm-24.11.24.1}/not1mm.egg-info/top_level.txt +0 -0
  177. {not1mm-24.11.23 → not1mm-24.11.24.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: not1mm
3
- Version: 24.11.23
3
+ Version: 24.11.24.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
@@ -57,7 +57,7 @@ Requires-Dist: Levenshtein
57
57
  - [Data and RTTY](#data-and-rtty)
58
58
  - [Other not so supported contests](#other-not-so-supported-contests)
59
59
  - [Our Code Contributors ✨](#our-code-contributors-)
60
- - [List of should be working contests, those in bold have ESM](#list-of-should-be-working-contests-those-in-bold-have-esm)
60
+ - [List of should be working contests](#list-of-should-be-working-contests)
61
61
  - [Recent Changes (Polishing the Turd)](#recent-changes-polishing-the-turd)
62
62
  - [Flatpak](#flatpak)
63
63
  - [Installation](#installation)
@@ -203,41 +203,43 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
203
203
  <img src="https://contrib.rocks/image?repo=mbridak/not1mm" alt="Avatar icons for code contributors." />
204
204
  </a>
205
205
 
206
- ## List of should be working contests, those in bold have ESM
206
+ ## List of should be working contests
207
207
 
208
- - **General Logging** (There are better general loggers like QLog, KLog, CQRLog)
208
+ - General Logging (There are better general loggers like QLog, KLog, CQRLog)
209
209
  - 10 10 Fall CW
210
210
  - 10 10 Spring CW
211
211
  - 10 10 Summer Phone
212
212
  - 10 10 Winter Phone
213
213
  - ARRL 10M
214
- - **ARRL DX CW, SSB**
215
- - **ARRL Field Day**
216
- - **ARRL Sweepstakes CW, SSB**
214
+ - ARRL DX CW, SSB
215
+ - ARRL Field Day
216
+ - ARRL Sweepstakes CW, SSB
217
217
  - ARRL VHF January, June, September
218
218
  - CQ 160 CW, SSB
219
- - **CQ WPX CW, RTTY, SSB**
220
- - **CQ World Wide CW, RTTY, SSB**
221
- - **CWOps CWT**
222
- - **DARC Xmas**
223
- - **Helvetia**
219
+ - CQ WPX CW, RTTY, SSB
220
+ - CQ World Wide CW, RTTY, SSB
221
+ - CWOps CWT
222
+ - DARC Xmas
223
+ - Helvetia
224
224
  - IARU Fieldday R1 CW, SSB
225
225
  - IARU HF
226
- - **ICWC MST**
227
- - **Japan International DX CW, SSB**
228
- - **K1USN Slow Speed Test**
229
- - **LZ DX**
230
- - **NAQP CW, RTTY, SSB**
231
- - **Phone Weekly Test**
232
- - **RAEM**
233
- - **RAC Canada Day**
234
- - **REF CW, SSB**
235
- - **Stew Perry Topband**
236
- - **Weekly RTTY**
237
- - **Winter Field Day**
226
+ - ICWC MST
227
+ - Japan International DX CW, SSB
228
+ - K1USN Slow Speed Test
229
+ - LZ DX
230
+ - NAQP CW, RTTY, SSB
231
+ - Phone Weekly Test
232
+ - RAEM
233
+ - RAC Canada Day
234
+ - REF CW, SSB
235
+ - Stew Perry Topband
236
+ - Weekly RTTY
237
+ - Winter Field Day
238
238
 
239
239
  ## Recent Changes (Polishing the Turd)
240
240
 
241
+ - [24-11-24-1] Add ESM to CQ160, ARRL VHF, ARRL 10M, 10 10 contests.
242
+ - [24-11-24] Added ESM to IARU HF and FieldDay.
241
243
  - [24-11-23] Made macros per contest.
242
244
  - [24-11-21] Merged PR from alduhoo setting CW Speed via rigctld, Added ESM and call history support for General Logging.
243
245
  - [24-11-19] Added ESM to Stew Perry, Phone Weekly, Medium Speed Test and JIDX.
@@ -26,7 +26,7 @@
26
26
  - [Data and RTTY](#data-and-rtty)
27
27
  - [Other not so supported contests](#other-not-so-supported-contests)
28
28
  - [Our Code Contributors ✨](#our-code-contributors-)
29
- - [List of should be working contests, those in bold have ESM](#list-of-should-be-working-contests-those-in-bold-have-esm)
29
+ - [List of should be working contests](#list-of-should-be-working-contests)
30
30
  - [Recent Changes (Polishing the Turd)](#recent-changes-polishing-the-turd)
31
31
  - [Flatpak](#flatpak)
32
32
  - [Installation](#installation)
@@ -172,41 +172,43 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
172
172
  <img src="https://contrib.rocks/image?repo=mbridak/not1mm" alt="Avatar icons for code contributors." />
173
173
  </a>
174
174
 
175
- ## List of should be working contests, those in bold have ESM
175
+ ## List of should be working contests
176
176
 
177
- - **General Logging** (There are better general loggers like QLog, KLog, CQRLog)
177
+ - General Logging (There are better general loggers like QLog, KLog, CQRLog)
178
178
  - 10 10 Fall CW
179
179
  - 10 10 Spring CW
180
180
  - 10 10 Summer Phone
181
181
  - 10 10 Winter Phone
182
182
  - ARRL 10M
183
- - **ARRL DX CW, SSB**
184
- - **ARRL Field Day**
185
- - **ARRL Sweepstakes CW, SSB**
183
+ - ARRL DX CW, SSB
184
+ - ARRL Field Day
185
+ - ARRL Sweepstakes CW, SSB
186
186
  - ARRL VHF January, June, September
187
187
  - CQ 160 CW, SSB
188
- - **CQ WPX CW, RTTY, SSB**
189
- - **CQ World Wide CW, RTTY, SSB**
190
- - **CWOps CWT**
191
- - **DARC Xmas**
192
- - **Helvetia**
188
+ - CQ WPX CW, RTTY, SSB
189
+ - CQ World Wide CW, RTTY, SSB
190
+ - CWOps CWT
191
+ - DARC Xmas
192
+ - Helvetia
193
193
  - IARU Fieldday R1 CW, SSB
194
194
  - IARU HF
195
- - **ICWC MST**
196
- - **Japan International DX CW, SSB**
197
- - **K1USN Slow Speed Test**
198
- - **LZ DX**
199
- - **NAQP CW, RTTY, SSB**
200
- - **Phone Weekly Test**
201
- - **RAEM**
202
- - **RAC Canada Day**
203
- - **REF CW, SSB**
204
- - **Stew Perry Topband**
205
- - **Weekly RTTY**
206
- - **Winter Field Day**
195
+ - ICWC MST
196
+ - Japan International DX CW, SSB
197
+ - K1USN Slow Speed Test
198
+ - LZ DX
199
+ - NAQP CW, RTTY, SSB
200
+ - Phone Weekly Test
201
+ - RAEM
202
+ - RAC Canada Day
203
+ - REF CW, SSB
204
+ - Stew Perry Topband
205
+ - Weekly RTTY
206
+ - Winter Field Day
207
207
 
208
208
  ## Recent Changes (Polishing the Turd)
209
209
 
210
+ - [24-11-24-1] Add ESM to CQ160, ARRL VHF, ARRL 10M, 10 10 contests.
211
+ - [24-11-24] Added ESM to IARU HF and FieldDay.
210
212
  - [24-11-23] Made macros per contest.
211
213
  - [24-11-21] Merged PR from alduhoo setting CW Speed via rigctld, Added ESM and call history support for General Logging.
212
214
  - [24-11-19] Added ESM to Stew Perry, Phone Weekly, Medium Speed Test and JIDX.
@@ -1,4 +1,8 @@
1
1
  <p>
2
+ <h4><center>To donate visit:</center></h4>
3
+ <center>https://paypal.me/k6gte</center>
4
+ </p>
5
+ <p>
2
6
  <h2>
3
7
  <center>Donors</center>
4
8
  </h2>
@@ -0,0 +1,3 @@
1
+ """It's the version"""
2
+
3
+ __version__ = "24.11.24.1"
@@ -359,3 +359,94 @@ def cabrillo(self, file_encoding):
359
359
 
360
360
  def recalculate_mults(self):
361
361
  """Recalculates multipliers after change in logged qso."""
362
+
363
+
364
+ def process_esm(self, new_focused_widget=None, with_enter=False):
365
+ """ESM State Machine"""
366
+
367
+ # self.pref["run_state"]
368
+
369
+ # -----===== Assigned F-Keys =====-----
370
+ # self.esm_dict["CQ"]
371
+ # self.esm_dict["EXCH"]
372
+ # self.esm_dict["QRZ"]
373
+ # self.esm_dict["AGN"]
374
+ # self.esm_dict["HISCALL"]
375
+ # self.esm_dict["MYCALL"]
376
+ # self.esm_dict["QSOB4"]
377
+
378
+ # ----==== text fields ====----
379
+ # self.callsign
380
+ # self.sent
381
+ # self.receive
382
+ # self.other_1
383
+ # self.other_2
384
+
385
+ if new_focused_widget is not None:
386
+ self.current_widget = self.inputs_dict.get(new_focused_widget)
387
+
388
+ # print(f"checking esm {self.current_widget=} {with_enter=} {self.pref.get("run_state")=}")
389
+
390
+ for a_button in [
391
+ self.esm_dict["CQ"],
392
+ self.esm_dict["EXCH"],
393
+ self.esm_dict["QRZ"],
394
+ self.esm_dict["AGN"],
395
+ self.esm_dict["HISCALL"],
396
+ self.esm_dict["MYCALL"],
397
+ self.esm_dict["QSOB4"],
398
+ ]:
399
+ if a_button is not None:
400
+ self.restore_button_color(a_button)
401
+
402
+ buttons_to_send = []
403
+
404
+ if self.pref.get("run_state"):
405
+ if self.current_widget == "callsign":
406
+ if len(self.callsign.text()) < 3:
407
+ self.make_button_green(self.esm_dict["CQ"])
408
+ buttons_to_send.append(self.esm_dict["CQ"])
409
+ elif len(self.callsign.text()) > 2:
410
+ self.make_button_green(self.esm_dict["HISCALL"])
411
+ self.make_button_green(self.esm_dict["EXCH"])
412
+ buttons_to_send.append(self.esm_dict["HISCALL"])
413
+ buttons_to_send.append(self.esm_dict["EXCH"])
414
+
415
+ elif self.current_widget in ["other_2"]:
416
+ if self.other_2.text() == "":
417
+ self.make_button_green(self.esm_dict["AGN"])
418
+ buttons_to_send.append(self.esm_dict["AGN"])
419
+ else:
420
+ self.make_button_green(self.esm_dict["QRZ"])
421
+ buttons_to_send.append(self.esm_dict["QRZ"])
422
+ buttons_to_send.append("LOGIT")
423
+
424
+ if with_enter is True and bool(len(buttons_to_send)):
425
+ for button in buttons_to_send:
426
+ if button:
427
+ if button == "LOGIT":
428
+ self.save_contact()
429
+ continue
430
+ self.process_function_key(button)
431
+ else:
432
+ if self.current_widget == "callsign":
433
+ if len(self.callsign.text()) > 2:
434
+ self.make_button_green(self.esm_dict["MYCALL"])
435
+ buttons_to_send.append(self.esm_dict["MYCALL"])
436
+
437
+ elif self.current_widget in ["other_2"]:
438
+ if self.other_2.text() == "":
439
+ self.make_button_green(self.esm_dict["AGN"])
440
+ buttons_to_send.append(self.esm_dict["AGN"])
441
+ else:
442
+ self.make_button_green(self.esm_dict["EXCH"])
443
+ buttons_to_send.append(self.esm_dict["EXCH"])
444
+ buttons_to_send.append("LOGIT")
445
+
446
+ if with_enter is True and bool(len(buttons_to_send)):
447
+ for button in buttons_to_send:
448
+ if button:
449
+ if button == "LOGIT":
450
+ self.save_contact()
451
+ continue
452
+ self.process_function_key(button)
@@ -358,3 +358,94 @@ def cabrillo(self, file_encoding):
358
358
 
359
359
  def recalculate_mults(self):
360
360
  """Recalculates multipliers after change in logged qso."""
361
+
362
+
363
+ def process_esm(self, new_focused_widget=None, with_enter=False):
364
+ """ESM State Machine"""
365
+
366
+ # self.pref["run_state"]
367
+
368
+ # -----===== Assigned F-Keys =====-----
369
+ # self.esm_dict["CQ"]
370
+ # self.esm_dict["EXCH"]
371
+ # self.esm_dict["QRZ"]
372
+ # self.esm_dict["AGN"]
373
+ # self.esm_dict["HISCALL"]
374
+ # self.esm_dict["MYCALL"]
375
+ # self.esm_dict["QSOB4"]
376
+
377
+ # ----==== text fields ====----
378
+ # self.callsign
379
+ # self.sent
380
+ # self.receive
381
+ # self.other_1
382
+ # self.other_2
383
+
384
+ if new_focused_widget is not None:
385
+ self.current_widget = self.inputs_dict.get(new_focused_widget)
386
+
387
+ # print(f"checking esm {self.current_widget=} {with_enter=} {self.pref.get("run_state")=}")
388
+
389
+ for a_button in [
390
+ self.esm_dict["CQ"],
391
+ self.esm_dict["EXCH"],
392
+ self.esm_dict["QRZ"],
393
+ self.esm_dict["AGN"],
394
+ self.esm_dict["HISCALL"],
395
+ self.esm_dict["MYCALL"],
396
+ self.esm_dict["QSOB4"],
397
+ ]:
398
+ if a_button is not None:
399
+ self.restore_button_color(a_button)
400
+
401
+ buttons_to_send = []
402
+
403
+ if self.pref.get("run_state"):
404
+ if self.current_widget == "callsign":
405
+ if len(self.callsign.text()) < 3:
406
+ self.make_button_green(self.esm_dict["CQ"])
407
+ buttons_to_send.append(self.esm_dict["CQ"])
408
+ elif len(self.callsign.text()) > 2:
409
+ self.make_button_green(self.esm_dict["HISCALL"])
410
+ self.make_button_green(self.esm_dict["EXCH"])
411
+ buttons_to_send.append(self.esm_dict["HISCALL"])
412
+ buttons_to_send.append(self.esm_dict["EXCH"])
413
+
414
+ elif self.current_widget in ["other_2"]:
415
+ if self.other_2.text() == "":
416
+ self.make_button_green(self.esm_dict["AGN"])
417
+ buttons_to_send.append(self.esm_dict["AGN"])
418
+ else:
419
+ self.make_button_green(self.esm_dict["QRZ"])
420
+ buttons_to_send.append(self.esm_dict["QRZ"])
421
+ buttons_to_send.append("LOGIT")
422
+
423
+ if with_enter is True and bool(len(buttons_to_send)):
424
+ for button in buttons_to_send:
425
+ if button:
426
+ if button == "LOGIT":
427
+ self.save_contact()
428
+ continue
429
+ self.process_function_key(button)
430
+ else:
431
+ if self.current_widget == "callsign":
432
+ if len(self.callsign.text()) > 2:
433
+ self.make_button_green(self.esm_dict["MYCALL"])
434
+ buttons_to_send.append(self.esm_dict["MYCALL"])
435
+
436
+ elif self.current_widget in ["other_2"]:
437
+ if self.other_2.text() == "":
438
+ self.make_button_green(self.esm_dict["AGN"])
439
+ buttons_to_send.append(self.esm_dict["AGN"])
440
+ else:
441
+ self.make_button_green(self.esm_dict["EXCH"])
442
+ buttons_to_send.append(self.esm_dict["EXCH"])
443
+ buttons_to_send.append("LOGIT")
444
+
445
+ if with_enter is True and bool(len(buttons_to_send)):
446
+ for button in buttons_to_send:
447
+ if button:
448
+ if button == "LOGIT":
449
+ self.save_contact()
450
+ continue
451
+ self.process_function_key(button)
@@ -362,3 +362,94 @@ def cabrillo(self, file_encoding):
362
362
 
363
363
  def recalculate_mults(self):
364
364
  """Recalculates multipliers after change in logged qso."""
365
+
366
+
367
+ def process_esm(self, new_focused_widget=None, with_enter=False):
368
+ """ESM State Machine"""
369
+
370
+ # self.pref["run_state"]
371
+
372
+ # -----===== Assigned F-Keys =====-----
373
+ # self.esm_dict["CQ"]
374
+ # self.esm_dict["EXCH"]
375
+ # self.esm_dict["QRZ"]
376
+ # self.esm_dict["AGN"]
377
+ # self.esm_dict["HISCALL"]
378
+ # self.esm_dict["MYCALL"]
379
+ # self.esm_dict["QSOB4"]
380
+
381
+ # ----==== text fields ====----
382
+ # self.callsign
383
+ # self.sent
384
+ # self.receive
385
+ # self.other_1
386
+ # self.other_2
387
+
388
+ if new_focused_widget is not None:
389
+ self.current_widget = self.inputs_dict.get(new_focused_widget)
390
+
391
+ # print(f"checking esm {self.current_widget=} {with_enter=} {self.pref.get("run_state")=}")
392
+
393
+ for a_button in [
394
+ self.esm_dict["CQ"],
395
+ self.esm_dict["EXCH"],
396
+ self.esm_dict["QRZ"],
397
+ self.esm_dict["AGN"],
398
+ self.esm_dict["HISCALL"],
399
+ self.esm_dict["MYCALL"],
400
+ self.esm_dict["QSOB4"],
401
+ ]:
402
+ if a_button is not None:
403
+ self.restore_button_color(a_button)
404
+
405
+ buttons_to_send = []
406
+
407
+ if self.pref.get("run_state"):
408
+ if self.current_widget == "callsign":
409
+ if len(self.callsign.text()) < 3:
410
+ self.make_button_green(self.esm_dict["CQ"])
411
+ buttons_to_send.append(self.esm_dict["CQ"])
412
+ elif len(self.callsign.text()) > 2:
413
+ self.make_button_green(self.esm_dict["HISCALL"])
414
+ self.make_button_green(self.esm_dict["EXCH"])
415
+ buttons_to_send.append(self.esm_dict["HISCALL"])
416
+ buttons_to_send.append(self.esm_dict["EXCH"])
417
+
418
+ elif self.current_widget in ["other_2"]:
419
+ if self.other_2.text() == "":
420
+ self.make_button_green(self.esm_dict["AGN"])
421
+ buttons_to_send.append(self.esm_dict["AGN"])
422
+ else:
423
+ self.make_button_green(self.esm_dict["QRZ"])
424
+ buttons_to_send.append(self.esm_dict["QRZ"])
425
+ buttons_to_send.append("LOGIT")
426
+
427
+ if with_enter is True and bool(len(buttons_to_send)):
428
+ for button in buttons_to_send:
429
+ if button:
430
+ if button == "LOGIT":
431
+ self.save_contact()
432
+ continue
433
+ self.process_function_key(button)
434
+ else:
435
+ if self.current_widget == "callsign":
436
+ if len(self.callsign.text()) > 2:
437
+ self.make_button_green(self.esm_dict["MYCALL"])
438
+ buttons_to_send.append(self.esm_dict["MYCALL"])
439
+
440
+ elif self.current_widget in ["other_2"]:
441
+ if self.other_2.text() == "":
442
+ self.make_button_green(self.esm_dict["AGN"])
443
+ buttons_to_send.append(self.esm_dict["AGN"])
444
+ else:
445
+ self.make_button_green(self.esm_dict["EXCH"])
446
+ buttons_to_send.append(self.esm_dict["EXCH"])
447
+ buttons_to_send.append("LOGIT")
448
+
449
+ if with_enter is True and bool(len(buttons_to_send)):
450
+ for button in buttons_to_send:
451
+ if button:
452
+ if button == "LOGIT":
453
+ self.save_contact()
454
+ continue
455
+ self.process_function_key(button)
@@ -360,3 +360,94 @@ def cabrillo(self, file_encoding):
360
360
 
361
361
  def recalculate_mults(self):
362
362
  """Recalculates multipliers after change in logged qso."""
363
+
364
+
365
+ def process_esm(self, new_focused_widget=None, with_enter=False):
366
+ """ESM State Machine"""
367
+
368
+ # self.pref["run_state"]
369
+
370
+ # -----===== Assigned F-Keys =====-----
371
+ # self.esm_dict["CQ"]
372
+ # self.esm_dict["EXCH"]
373
+ # self.esm_dict["QRZ"]
374
+ # self.esm_dict["AGN"]
375
+ # self.esm_dict["HISCALL"]
376
+ # self.esm_dict["MYCALL"]
377
+ # self.esm_dict["QSOB4"]
378
+
379
+ # ----==== text fields ====----
380
+ # self.callsign
381
+ # self.sent
382
+ # self.receive
383
+ # self.other_1
384
+ # self.other_2
385
+
386
+ if new_focused_widget is not None:
387
+ self.current_widget = self.inputs_dict.get(new_focused_widget)
388
+
389
+ # print(f"checking esm {self.current_widget=} {with_enter=} {self.pref.get("run_state")=}")
390
+
391
+ for a_button in [
392
+ self.esm_dict["CQ"],
393
+ self.esm_dict["EXCH"],
394
+ self.esm_dict["QRZ"],
395
+ self.esm_dict["AGN"],
396
+ self.esm_dict["HISCALL"],
397
+ self.esm_dict["MYCALL"],
398
+ self.esm_dict["QSOB4"],
399
+ ]:
400
+ if a_button is not None:
401
+ self.restore_button_color(a_button)
402
+
403
+ buttons_to_send = []
404
+
405
+ if self.pref.get("run_state"):
406
+ if self.current_widget == "callsign":
407
+ if len(self.callsign.text()) < 3:
408
+ self.make_button_green(self.esm_dict["CQ"])
409
+ buttons_to_send.append(self.esm_dict["CQ"])
410
+ elif len(self.callsign.text()) > 2:
411
+ self.make_button_green(self.esm_dict["HISCALL"])
412
+ self.make_button_green(self.esm_dict["EXCH"])
413
+ buttons_to_send.append(self.esm_dict["HISCALL"])
414
+ buttons_to_send.append(self.esm_dict["EXCH"])
415
+
416
+ elif self.current_widget in ["other_2"]:
417
+ if self.other_2.text() == "":
418
+ self.make_button_green(self.esm_dict["AGN"])
419
+ buttons_to_send.append(self.esm_dict["AGN"])
420
+ else:
421
+ self.make_button_green(self.esm_dict["QRZ"])
422
+ buttons_to_send.append(self.esm_dict["QRZ"])
423
+ buttons_to_send.append("LOGIT")
424
+
425
+ if with_enter is True and bool(len(buttons_to_send)):
426
+ for button in buttons_to_send:
427
+ if button:
428
+ if button == "LOGIT":
429
+ self.save_contact()
430
+ continue
431
+ self.process_function_key(button)
432
+ else:
433
+ if self.current_widget == "callsign":
434
+ if len(self.callsign.text()) > 2:
435
+ self.make_button_green(self.esm_dict["MYCALL"])
436
+ buttons_to_send.append(self.esm_dict["MYCALL"])
437
+
438
+ elif self.current_widget in ["other_2"]:
439
+ if self.other_2.text() == "":
440
+ self.make_button_green(self.esm_dict["AGN"])
441
+ buttons_to_send.append(self.esm_dict["AGN"])
442
+ else:
443
+ self.make_button_green(self.esm_dict["EXCH"])
444
+ buttons_to_send.append(self.esm_dict["EXCH"])
445
+ buttons_to_send.append("LOGIT")
446
+
447
+ if with_enter is True and bool(len(buttons_to_send)):
448
+ for button in buttons_to_send:
449
+ if button:
450
+ if button == "LOGIT":
451
+ self.save_contact()
452
+ continue
453
+ self.process_function_key(button)
@@ -441,3 +441,113 @@ def cabrillo(self, file_encoding):
441
441
 
442
442
  def recalculate_mults(self):
443
443
  """Recalculates multipliers after change in logged qso."""
444
+
445
+
446
+ def process_esm(self, new_focused_widget=None, with_enter=False):
447
+ """ESM State Machine"""
448
+
449
+ # self.pref["run_state"]
450
+
451
+ # -----===== Assigned F-Keys =====-----
452
+ # self.esm_dict["CQ"]
453
+ # self.esm_dict["EXCH"]
454
+ # self.esm_dict["QRZ"]
455
+ # self.esm_dict["AGN"]
456
+ # self.esm_dict["HISCALL"]
457
+ # self.esm_dict["MYCALL"]
458
+ # self.esm_dict["QSOB4"]
459
+
460
+ # ----==== text fields ====----
461
+ # self.callsign
462
+ # self.sent
463
+ # self.receive
464
+ # self.other_1
465
+ # self.other_2
466
+
467
+ if new_focused_widget is not None:
468
+ self.current_widget = self.inputs_dict.get(new_focused_widget)
469
+
470
+ # print(f"checking esm {self.current_widget=} {with_enter=} {self.pref.get("run_state")=}")
471
+
472
+ for a_button in [
473
+ self.esm_dict["CQ"],
474
+ self.esm_dict["EXCH"],
475
+ self.esm_dict["QRZ"],
476
+ self.esm_dict["AGN"],
477
+ self.esm_dict["HISCALL"],
478
+ self.esm_dict["MYCALL"],
479
+ self.esm_dict["QSOB4"],
480
+ ]:
481
+ if a_button is not None:
482
+ self.restore_button_color(a_button)
483
+
484
+ buttons_to_send = []
485
+
486
+ if self.pref.get("run_state"):
487
+ if self.current_widget == "callsign":
488
+ if len(self.callsign.text()) < 3:
489
+ self.make_button_green(self.esm_dict["CQ"])
490
+ buttons_to_send.append(self.esm_dict["CQ"])
491
+ elif len(self.callsign.text()) > 2:
492
+ self.make_button_green(self.esm_dict["HISCALL"])
493
+ self.make_button_green(self.esm_dict["EXCH"])
494
+ buttons_to_send.append(self.esm_dict["HISCALL"])
495
+ buttons_to_send.append(self.esm_dict["EXCH"])
496
+
497
+ elif self.current_widget in ["other_2"]:
498
+ if self.other_2.text() == "":
499
+ self.make_button_green(self.esm_dict["AGN"])
500
+ buttons_to_send.append(self.esm_dict["AGN"])
501
+ else:
502
+ self.make_button_green(self.esm_dict["QRZ"])
503
+ buttons_to_send.append(self.esm_dict["QRZ"])
504
+ buttons_to_send.append("LOGIT")
505
+
506
+ if with_enter is True and bool(len(buttons_to_send)):
507
+ for button in buttons_to_send:
508
+ if button:
509
+ if button == "LOGIT":
510
+ self.save_contact()
511
+ continue
512
+ self.process_function_key(button)
513
+ else:
514
+ if self.current_widget == "callsign":
515
+ if len(self.callsign.text()) > 2:
516
+ self.make_button_green(self.esm_dict["MYCALL"])
517
+ buttons_to_send.append(self.esm_dict["MYCALL"])
518
+
519
+ elif self.current_widget in ["other_2"]:
520
+ if self.other_2.text() == "":
521
+ self.make_button_green(self.esm_dict["AGN"])
522
+ buttons_to_send.append(self.esm_dict["AGN"])
523
+ else:
524
+ self.make_button_green(self.esm_dict["EXCH"])
525
+ buttons_to_send.append(self.esm_dict["EXCH"])
526
+ buttons_to_send.append("LOGIT")
527
+
528
+ if with_enter is True and bool(len(buttons_to_send)):
529
+ for button in buttons_to_send:
530
+ if button:
531
+ if button == "LOGIT":
532
+ self.save_contact()
533
+ continue
534
+ self.process_function_key(button)
535
+
536
+
537
+ def populate_history_info_line(self):
538
+ result = self.database.fetch_call_history(self.callsign.text())
539
+ if result:
540
+ self.history_info.setText(
541
+ f"{result.get('Call', '')}, {result.get('Name', '')}, {result.get('State', '')}, {result.get('UserText','...')}"
542
+ )
543
+ else:
544
+ self.history_info.setText("")
545
+
546
+
547
+ def check_call_history(self):
548
+ """"""
549
+ result = self.database.fetch_call_history(self.callsign.text())
550
+ if result:
551
+ self.history_info.setText(f"{result.get('UserText','')}")
552
+ if self.other_2.text() == "":
553
+ self.other_2.setText(f"{result.get('State', '')}")