not1mm 24.11.19__tar.gz → 24.11.21__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.19 → not1mm-24.11.21}/PKG-INFO +3 -3
  2. {not1mm-24.11.19 → not1mm-24.11.21}/README.md +2 -2
  3. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/__main__.py +2 -0
  4. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/donors.html +1 -0
  5. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/lib/cat_interface.py +16 -1
  6. not1mm-24.11.21/not1mm/lib/version.py +3 -0
  7. not1mm-24.11.21/not1mm/plugins/general_logging.py +241 -0
  8. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm.egg-info/PKG-INFO +3 -3
  9. {not1mm-24.11.19 → not1mm-24.11.21}/pyproject.toml +1 -1
  10. not1mm-24.11.19/not1mm/lib/version.py +0 -3
  11. not1mm-24.11.19/not1mm/plugins/general_logging.py +0 -128
  12. {not1mm-24.11.19 → not1mm-24.11.21}/LICENSE +0 -0
  13. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/__init__.py +0 -0
  14. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/bandmap.py +0 -0
  15. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/checkwindow.py +0 -0
  16. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/JetBrainsMono-ExtraLight.ttf +0 -0
  17. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/MASTER.SCP +0 -0
  18. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/about.ui +0 -0
  19. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/alpha bravo charlie delta.txt +0 -0
  20. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/bandmap.ui +0 -0
  21. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/check.png +0 -0
  22. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/checkwindow.ui +0 -0
  23. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/configuration.ui +0 -0
  24. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/contests.sql +0 -0
  25. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/cty.json +0 -0
  26. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/cwmacros.txt +0 -0
  27. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/editcontact.ui +0 -0
  28. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/editmacro.ui +0 -0
  29. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/greendot.png +0 -0
  30. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/k6gte-not1mm.desktop +0 -0
  31. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/k6gte.not1mm-128.png +0 -0
  32. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/k6gte.not1mm-32.png +0 -0
  33. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/k6gte.not1mm-64.png +0 -0
  34. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/logwindow.ui +0 -0
  35. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/logwindowx.ui +0 -0
  36. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/main.ui +0 -0
  37. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/new_contest.ui +0 -0
  38. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/not1mm.html +0 -0
  39. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/opon.ui +0 -0
  40. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/0.wav +0 -0
  41. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/1.wav +0 -0
  42. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/2.wav +0 -0
  43. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/3.wav +0 -0
  44. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/4.wav +0 -0
  45. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/5.wav +0 -0
  46. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/6.wav +0 -0
  47. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/7.wav +0 -0
  48. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/73.wav +0 -0
  49. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/8.wav +0 -0
  50. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/9.wav +0 -0
  51. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/a.wav +0 -0
  52. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/again.wav +0 -0
  53. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/b.wav +0 -0
  54. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/c.wav +0 -0
  55. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/contest.wav +0 -0
  56. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/cq.wav +0 -0
  57. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/cq2.wav +0 -0
  58. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/d.wav +0 -0
  59. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/e.wav +0 -0
  60. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/f.wav +0 -0
  61. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/g.wav +0 -0
  62. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/h.wav +0 -0
  63. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/i.wav +0 -0
  64. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/j.wav +0 -0
  65. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/k.wav +0 -0
  66. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/k6gte.wav +0 -0
  67. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/l.wav +0 -0
  68. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/m.wav +0 -0
  69. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/mynumber.wav +0 -0
  70. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/n.wav +0 -0
  71. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/nil.wav +0 -0
  72. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/o.wav +0 -0
  73. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/p.wav +0 -0
  74. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/q.wav +0 -0
  75. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/r.wav +0 -0
  76. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/roger.wav +0 -0
  77. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/s.wav +0 -0
  78. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/space.wav +0 -0
  79. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/t.wav +0 -0
  80. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/thankyou.wav +0 -0
  81. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/thankyouqrz.wav +0 -0
  82. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/u.wav +0 -0
  83. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/v.wav +0 -0
  84. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/w.wav +0 -0
  85. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/x.wav +0 -0
  86. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/y.wav +0 -0
  87. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/yourcall.wav +0 -0
  88. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/phonetics/z.wav +0 -0
  89. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/pickcontest.ui +0 -0
  90. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/radio_green.png +0 -0
  91. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/radio_grey.png +0 -0
  92. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/radio_red.png +0 -0
  93. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/reddot.png +0 -0
  94. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/rttymacros.txt +0 -0
  95. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/settings.ui +0 -0
  96. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/splash.png +0 -0
  97. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/ssbmacros.txt +0 -0
  98. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/data/vfo.ui +0 -0
  99. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/fsutils.py +0 -0
  100. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/lib/__init__.py +0 -0
  101. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/lib/about.py +0 -0
  102. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/lib/cwinterface.py +0 -0
  103. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/lib/database.py +0 -0
  104. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/lib/edit_contact.py +0 -0
  105. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/lib/edit_macro.py +0 -0
  106. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/lib/edit_opon.py +0 -0
  107. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/lib/edit_station.py +0 -0
  108. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/lib/fldigi_sendstring.py +0 -0
  109. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/lib/fldigi_watcher.py +0 -0
  110. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/lib/ft8_watcher.py +0 -0
  111. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/lib/ham_utility.py +0 -0
  112. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/lib/lookup.py +0 -0
  113. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/lib/multicast.py +0 -0
  114. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/lib/n1mm.py +0 -0
  115. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/lib/new_contest.py +0 -0
  116. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/lib/plugin_common.py +0 -0
  117. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/lib/select_contest.py +0 -0
  118. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/lib/settings.py +0 -0
  119. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/lib/super_check_partial.py +0 -0
  120. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/lib/versiontest.py +0 -0
  121. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/logwindow.py +0 -0
  122. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/lookupservice.py +0 -0
  123. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/10_10_fall_cw.py +0 -0
  124. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/10_10_spring_cw.py +0 -0
  125. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/10_10_summer_phone.py +0 -0
  126. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/10_10_winter_phone.py +0 -0
  127. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/__init__.py +0 -0
  128. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/arrl_10m.py +0 -0
  129. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/arrl_dx_cw.py +0 -0
  130. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/arrl_dx_ssb.py +0 -0
  131. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/arrl_field_day.py +0 -0
  132. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/arrl_rtty_ru.py +0 -0
  133. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/arrl_ss_cw.py +0 -0
  134. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/arrl_ss_phone.py +0 -0
  135. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/arrl_vhf_jan.py +0 -0
  136. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/arrl_vhf_jun.py +0 -0
  137. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/arrl_vhf_sep.py +0 -0
  138. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/canada_day.py +0 -0
  139. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/cq_160_cw.py +0 -0
  140. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/cq_160_ssb.py +0 -0
  141. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/cq_wpx_cw.py +0 -0
  142. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/cq_wpx_rtty.py +0 -0
  143. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/cq_wpx_ssb.py +0 -0
  144. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/cq_ww_cw.py +0 -0
  145. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/cq_ww_rtty.py +0 -0
  146. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/cq_ww_ssb.py +0 -0
  147. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/cwt.py +0 -0
  148. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/darc_xmas.py +0 -0
  149. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/helvetia.py +0 -0
  150. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/iaru_fieldday_r1_cw.py +0 -0
  151. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/iaru_fieldday_r1_ssb.py +0 -0
  152. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/iaru_hf.py +0 -0
  153. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/icwc_mst.py +0 -0
  154. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/jidx_cw.py +0 -0
  155. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/jidx_ph.py +0 -0
  156. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/k1usn_sst.py +0 -0
  157. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/lz-dx.py +0 -0
  158. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/naqp_cw.py +0 -0
  159. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/naqp_rtty.py +0 -0
  160. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/naqp_ssb.py +0 -0
  161. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/phone_weekly_test.py +0 -0
  162. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/raem.py +0 -0
  163. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/ref_cw.py +0 -0
  164. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/ref_ssb.py +0 -0
  165. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/stew_perry_topband.py +0 -0
  166. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/weekly_rtty.py +0 -0
  167. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/plugins/winter_field_day.py +0 -0
  168. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/radio.py +0 -0
  169. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/test.py +0 -0
  170. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/vfo.py +0 -0
  171. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm/voice_keying.py +0 -0
  172. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm.egg-info/SOURCES.txt +0 -0
  173. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm.egg-info/dependency_links.txt +0 -0
  174. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm.egg-info/entry_points.txt +0 -0
  175. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm.egg-info/requires.txt +0 -0
  176. {not1mm-24.11.19 → not1mm-24.11.21}/not1mm.egg-info/top_level.txt +0 -0
  177. {not1mm-24.11.19 → not1mm-24.11.21}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: not1mm
3
- Version: 24.11.19
3
+ Version: 24.11.21
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
@@ -205,7 +205,7 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
205
205
 
206
206
  ## List of should be working contests, those in bold have ESM
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
@@ -238,6 +238,7 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
238
238
 
239
239
  ## Recent Changes (Polishing the Turd)
240
240
 
241
+ - [24-11-21] Merged PR from alduhoo setting CW Speed via rigctld, Added ESM and call history support for General Logging.
241
242
  - [24-11-19] Added ESM to Stew Perry, Phone Weekly, Medium Speed Test and JIDX.
242
243
  - [24-11-18] Accepted PR from dg9vh for the DARC XMAS Contest.
243
244
  - [24-11-17] Accepted PR from dg9vh for the LZ DX contest.
@@ -953,7 +954,6 @@ So if one were to go to `FILE -> LOAD CALL HISTORY FILE` and choose a downloaded
953
954
 
954
955
  Where the Name and State would auto-populate and the UserText info apprears in the bottom left.
955
956
 
956
-
957
957
  ## Contest specific notes
958
958
 
959
959
  I found it might be beneficial to have a section devoted to wierd quirky things
@@ -174,7 +174,7 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
174
174
 
175
175
  ## List of should be working contests, those in bold have ESM
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
@@ -207,6 +207,7 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
207
207
 
208
208
  ## Recent Changes (Polishing the Turd)
209
209
 
210
+ - [24-11-21] Merged PR from alduhoo setting CW Speed via rigctld, Added ESM and call history support for General Logging.
210
211
  - [24-11-19] Added ESM to Stew Perry, Phone Weekly, Medium Speed Test and JIDX.
211
212
  - [24-11-18] Accepted PR from dg9vh for the DARC XMAS Contest.
212
213
  - [24-11-17] Accepted PR from dg9vh for the LZ DX contest.
@@ -922,7 +923,6 @@ So if one were to go to `FILE -> LOAD CALL HISTORY FILE` and choose a downloaded
922
923
 
923
924
  Where the Name and State would auto-populate and the UserText info apprears in the bottom left.
924
925
 
925
-
926
926
  ## Contest specific notes
927
927
 
928
928
  I found it might be beneficial to have a section devoted to wierd quirky things
@@ -1971,6 +1971,8 @@ class MainWindow(QtWidgets.QMainWindow):
1971
1971
  if self.pref.get("cwtype") == 3 and self.rig_control is not None:
1972
1972
  if self.rig_control.interface == "flrig":
1973
1973
  self.rig_control.cat.set_flrig_cw_speed(self.cw_speed.value())
1974
+ elif self.rig_control.interface == "rigctld":
1975
+ self.rig_control.cat.set_rigctl_cw_speed(self.cw_speed.value())
1974
1976
 
1975
1977
  def stop_cw(self):
1976
1978
  """"""
@@ -3,6 +3,7 @@
3
3
  <center>Donors</center>
4
4
  </h2>
5
5
  <hr />
6
+ <center>Adrian VA3NB</center>
6
7
  <center>Brian KB3ORR</center>
7
8
  <center>Connor KD9LSV</center>
8
9
 
@@ -9,7 +9,7 @@ rig.cwio_send n:i cwio transmit 1/0 (on/off)
9
9
  command lines to test the CW API via XMLRPC
10
10
 
11
11
  Setting WPM
12
- curl -d "<?xml version='1.0'?><methodCall><methodName>rig.cwio_set_wpm</methodName><params><param><value><i4>28</i4></value></param></params></methodCall>" http://localhost:12345
12
+ curl -d "<?xml version='1.0'?><methodCall><methodName>rig.cwio_set_wpm</methodName><params><param><value><i4>28</i4></value></param></params></methodCall>" http://localhost:12345
13
13
 
14
14
  Setting the text to send
15
15
  curl -d "<?xml version='1.0'?><methodCall><methodName>rig.cwio_text</methodName><params><param><value><string>test test test</string></value></param></params></methodCall>" http://localhost:12345
@@ -178,6 +178,21 @@ class CAT:
178
178
  self.__initialize_rigctrld()
179
179
  return False
180
180
 
181
+ def set_rigctl_cw_speed(self, speed):
182
+ """Set CW speed via rigctld"""
183
+ if self.rigctrlsocket:
184
+ try:
185
+ self.online = True
186
+ self.rigctrlsocket.send(bytes(f"L KEYSPD {speed}\n", "utf-8"))
187
+ _ = self.__get_serial_string()
188
+ return
189
+ except socket.error as exception:
190
+ self.online = False
191
+ logger.debug("set_level_rigctld: %s", f"{exception}")
192
+ self.rigctrlsocket = None
193
+ return
194
+ self.__initialize_rigctrld()
195
+
181
196
  def sendcwxmlrpc(self, texttosend):
182
197
  """Add text to flrig's cw send buffer."""
183
198
  logger.debug(f"{texttosend=}")
@@ -0,0 +1,3 @@
1
+ """It's the version"""
2
+
3
+ __version__ = "24.11.21"
@@ -0,0 +1,241 @@
1
+ """General Logging plugin"""
2
+
3
+ # pylint: disable=invalid-name, unused-argument, unused-variable, c-extension-no-member, unused-import
4
+
5
+ import logging
6
+
7
+ from PyQt6 import QtWidgets
8
+
9
+ from not1mm.lib.plugin_common import gen_adif, get_points
10
+ from not1mm.lib.version import __version__
11
+
12
+ logger = logging.getLogger(__name__)
13
+ EXCHANGE_HINT = ""
14
+ name = "General Logging"
15
+ cabrillo_name = "General-Logging"
16
+ mode = "BOTH" # CW SSB BOTH RTTY
17
+ columns = [0, 1, 2, 3, 4, 16, 17]
18
+ columns = [
19
+ "YYYY-MM-DD HH:MM:SS",
20
+ "Call",
21
+ "Freq",
22
+ "Mode",
23
+ "Snt",
24
+ "Rcv",
25
+ "Name",
26
+ "Comment",
27
+ ]
28
+
29
+ # 1 once per contest, 2 work each band, 3 each band/mode, 4 no dupe checking
30
+ dupe_type = 4
31
+
32
+
33
+ def init_contest(self):
34
+ """setup plugin"""
35
+ set_tab_next(self)
36
+ set_tab_prev(self)
37
+ interface(self)
38
+ self.next_field = self.other_1
39
+
40
+
41
+ def interface(self):
42
+ """Setup user interface"""
43
+ self.field1.show()
44
+ self.field2.show()
45
+ self.field3.show()
46
+ self.field4.show()
47
+ self.snt_label.setText("SNT")
48
+ self.field1.setAccessibleName("RST Sent")
49
+ self.other_label.setText("Name")
50
+ self.field3.setAccessibleName("Name")
51
+ self.exch_label.setText("Comment")
52
+ self.field4.setAccessibleName("Comment")
53
+
54
+
55
+ def reset_label(self):
56
+ """reset label after field cleared"""
57
+
58
+
59
+ def set_tab_next(self):
60
+ """Set TAB Advances"""
61
+ self.tab_next = {
62
+ self.callsign: self.sent,
63
+ self.sent: self.receive,
64
+ self.receive: self.other_1,
65
+ self.other_1: self.other_2,
66
+ self.other_2: self.callsign,
67
+ }
68
+
69
+
70
+ def set_tab_prev(self):
71
+ """Set TAB Advances"""
72
+ self.tab_prev = {
73
+ self.callsign: self.other_2,
74
+ self.sent: self.callsign,
75
+ self.receive: self.sent,
76
+ self.other_1: self.receive,
77
+ self.other_2: self.other_1,
78
+ }
79
+
80
+
81
+ def set_contact_vars(self):
82
+ """Contest Specific"""
83
+ self.contact["SNT"] = self.sent.text()
84
+ self.contact["RCV"] = self.receive.text()
85
+ self.contact["Name"] = self.other_1.text()
86
+ self.contact["Comment"] = self.other_2.text()
87
+
88
+
89
+ def predupe(self):
90
+ """called after callsign entered"""
91
+
92
+
93
+ def prefill(self):
94
+ """Fill SentNR"""
95
+
96
+
97
+ def points(self):
98
+ """Calc point"""
99
+
100
+
101
+ def show_mults(self):
102
+ """Return display string for mults"""
103
+
104
+
105
+ def show_qso(self):
106
+ """Return qso count"""
107
+ result = self.database.fetch_qso_count()
108
+ if result:
109
+ return int(result.get("qsos", 0))
110
+ return 0
111
+
112
+
113
+ def calc_score(self):
114
+ """Return calculated score"""
115
+ result = self.database.fetch_points()
116
+
117
+
118
+ def adif(self):
119
+ """Call the generate ADIF function"""
120
+ gen_adif(self, cabrillo_name)
121
+
122
+
123
+ def cabrillo(self, file_encoding):
124
+ """Generates Cabrillo file. Maybe."""
125
+
126
+
127
+ def recalculate_mults(self):
128
+ """Recalculates multipliers after change in logged qso."""
129
+
130
+
131
+ def process_esm(self, new_focused_widget=None, with_enter=False):
132
+ """ESM State Machine"""
133
+
134
+ # self.pref["run_state"]
135
+
136
+ # -----===== Assigned F-Keys =====-----
137
+ # self.esm_dict["CQ"]
138
+ # self.esm_dict["EXCH"]
139
+ # self.esm_dict["QRZ"]
140
+ # self.esm_dict["AGN"]
141
+ # self.esm_dict["HISCALL"]
142
+ # self.esm_dict["MYCALL"]
143
+ # self.esm_dict["QSOB4"]
144
+
145
+ # ----==== text fields ====----
146
+ # self.callsign
147
+ # self.sent
148
+ # self.receive
149
+ # self.other_1
150
+ # self.other_2
151
+
152
+ if new_focused_widget is not None:
153
+ self.current_widget = self.inputs_dict.get(new_focused_widget)
154
+
155
+ # print(f"checking esm {self.current_widget=} {with_enter=} {self.pref.get("run_state")=}")
156
+
157
+ for a_button in [
158
+ self.F1,
159
+ self.F2,
160
+ self.F3,
161
+ self.F4,
162
+ self.F5,
163
+ self.F6,
164
+ self.F7,
165
+ self.F8,
166
+ self.F9,
167
+ self.F10,
168
+ self.F11,
169
+ self.F12,
170
+ ]:
171
+ self.restore_button_color(a_button)
172
+
173
+ buttons_to_send = []
174
+
175
+ if self.pref.get("run_state"):
176
+ if self.current_widget == "callsign":
177
+ if len(self.callsign.text()) < 3:
178
+ self.make_button_green(self.esm_dict["CQ"])
179
+ buttons_to_send.append(self.esm_dict["CQ"])
180
+ elif len(self.callsign.text()) > 2:
181
+ self.make_button_green(self.esm_dict["HISCALL"])
182
+ self.make_button_green(self.esm_dict["EXCH"])
183
+ buttons_to_send.append(self.esm_dict["HISCALL"])
184
+ buttons_to_send.append(self.esm_dict["EXCH"])
185
+
186
+ elif self.current_widget in ["other_1", "other_2"]:
187
+ if self.other_2.text() == "" and self.other_1.text() == "":
188
+ self.make_button_green(self.esm_dict["AGN"])
189
+ buttons_to_send.append(self.esm_dict["AGN"])
190
+ else:
191
+ self.make_button_green(self.esm_dict["QRZ"])
192
+ buttons_to_send.append(self.esm_dict["QRZ"])
193
+ buttons_to_send.append("LOGIT")
194
+
195
+ if with_enter is True and bool(len(buttons_to_send)):
196
+ for button in buttons_to_send:
197
+ if button:
198
+ if button == "LOGIT":
199
+ self.save_contact()
200
+ continue
201
+ self.process_function_key(button)
202
+ else:
203
+ if self.current_widget == "callsign":
204
+ if len(self.callsign.text()) > 2:
205
+ self.make_button_green(self.esm_dict["MYCALL"])
206
+ buttons_to_send.append(self.esm_dict["MYCALL"])
207
+
208
+ elif self.current_widget in ["other_1", "other_2"]:
209
+ if self.other_2.text() == "" and self.other_1.text() == "":
210
+ self.make_button_green(self.esm_dict["AGN"])
211
+ buttons_to_send.append(self.esm_dict["AGN"])
212
+ else:
213
+ self.make_button_green(self.esm_dict["EXCH"])
214
+ buttons_to_send.append(self.esm_dict["EXCH"])
215
+ buttons_to_send.append("LOGIT")
216
+ if with_enter is True and bool(len(buttons_to_send)):
217
+ for button in buttons_to_send:
218
+ if button:
219
+ if button == "LOGIT":
220
+ self.save_contact()
221
+ continue
222
+ self.process_function_key(button)
223
+
224
+
225
+ def populate_history_info_line(self):
226
+ result = self.database.fetch_call_history(self.callsign.text())
227
+ if result:
228
+ self.history_info.setText(
229
+ f"{result.get('Call', '')}, {result.get('Name', '')}, {result.get('UserText','...')}"
230
+ )
231
+ else:
232
+ self.history_info.setText("")
233
+
234
+
235
+ def check_call_history(self):
236
+ """"""
237
+ result = self.database.fetch_call_history(self.callsign.text())
238
+ if result:
239
+ self.history_info.setText(f"{result.get('UserText','')}")
240
+ if self.other_1.text() == "":
241
+ self.other_1.setText(f"{result.get('Name', '')}")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: not1mm
3
- Version: 24.11.19
3
+ Version: 24.11.21
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
@@ -205,7 +205,7 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
205
205
 
206
206
  ## List of should be working contests, those in bold have ESM
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
@@ -238,6 +238,7 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
238
238
 
239
239
  ## Recent Changes (Polishing the Turd)
240
240
 
241
+ - [24-11-21] Merged PR from alduhoo setting CW Speed via rigctld, Added ESM and call history support for General Logging.
241
242
  - [24-11-19] Added ESM to Stew Perry, Phone Weekly, Medium Speed Test and JIDX.
242
243
  - [24-11-18] Accepted PR from dg9vh for the DARC XMAS Contest.
243
244
  - [24-11-17] Accepted PR from dg9vh for the LZ DX contest.
@@ -953,7 +954,6 @@ So if one were to go to `FILE -> LOAD CALL HISTORY FILE` and choose a downloaded
953
954
 
954
955
  Where the Name and State would auto-populate and the UserText info apprears in the bottom left.
955
956
 
956
-
957
957
  ## Contest specific notes
958
958
 
959
959
  I found it might be beneficial to have a section devoted to wierd quirky things
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "not1mm"
7
- version = "24.11.19"
7
+ version = "24.11.21"
8
8
  description = "NOT1MM Logger"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -1,3 +0,0 @@
1
- """It's the version"""
2
-
3
- __version__ = "24.11.19"
@@ -1,128 +0,0 @@
1
- """General Logging plugin"""
2
-
3
- # pylint: disable=invalid-name, unused-argument, unused-variable, c-extension-no-member, unused-import
4
-
5
- import logging
6
-
7
- from PyQt6 import QtWidgets
8
-
9
- from not1mm.lib.plugin_common import gen_adif, get_points
10
- from not1mm.lib.version import __version__
11
-
12
- logger = logging.getLogger(__name__)
13
- EXCHANGE_HINT = ""
14
- name = "General Logging"
15
- cabrillo_name = "General-Logging"
16
- mode = "BOTH" # CW SSB BOTH RTTY
17
- columns = [0, 1, 2, 3, 4, 16, 17]
18
- columns = [
19
- "YYYY-MM-DD HH:MM:SS",
20
- "Call",
21
- "Freq",
22
- "Mode",
23
- "Snt",
24
- "Rcv",
25
- "Name",
26
- "Comment",
27
- ]
28
-
29
- # 1 once per contest, 2 work each band, 3 each band/mode, 4 no dupe checking
30
- dupe_type = 4
31
-
32
-
33
- def init_contest(self):
34
- """setup plugin"""
35
- set_tab_next(self)
36
- set_tab_prev(self)
37
- interface(self)
38
- self.next_field = self.other_1
39
-
40
-
41
- def interface(self):
42
- """Setup user interface"""
43
- self.field1.show()
44
- self.field2.show()
45
- self.field3.show()
46
- self.field4.show()
47
- self.snt_label.setText("SNT")
48
- self.field1.setAccessibleName("RST Sent")
49
- self.other_label.setText("Name")
50
- self.field3.setAccessibleName("Name")
51
- self.exch_label.setText("Comment")
52
- self.field4.setAccessibleName("Comment")
53
-
54
-
55
- def reset_label(self):
56
- """reset label after field cleared"""
57
-
58
-
59
- def set_tab_next(self):
60
- """Set TAB Advances"""
61
- self.tab_next = {
62
- self.callsign: self.sent,
63
- self.sent: self.receive,
64
- self.receive: self.other_1,
65
- self.other_1: self.other_2,
66
- self.other_2: self.callsign,
67
- }
68
-
69
-
70
- def set_tab_prev(self):
71
- """Set TAB Advances"""
72
- self.tab_prev = {
73
- self.callsign: self.other_2,
74
- self.sent: self.callsign,
75
- self.receive: self.sent,
76
- self.other_1: self.receive,
77
- self.other_2: self.other_1,
78
- }
79
-
80
-
81
- def set_contact_vars(self):
82
- """Contest Specific"""
83
- self.contact["SNT"] = self.sent.text()
84
- self.contact["RCV"] = self.receive.text()
85
- self.contact["Name"] = self.other_1.text()
86
- self.contact["Comment"] = self.other_2.text()
87
-
88
-
89
- def predupe(self):
90
- """called after callsign entered"""
91
-
92
-
93
- def prefill(self):
94
- """Fill SentNR"""
95
-
96
-
97
- def points(self):
98
- """Calc point"""
99
-
100
-
101
- def show_mults(self):
102
- """Return display string for mults"""
103
-
104
-
105
- def show_qso(self):
106
- """Return qso count"""
107
- result = self.database.fetch_qso_count()
108
- if result:
109
- return int(result.get("qsos", 0))
110
- return 0
111
-
112
-
113
- def calc_score(self):
114
- """Return calculated score"""
115
- result = self.database.fetch_points()
116
-
117
-
118
- def adif(self):
119
- """Call the generate ADIF function"""
120
- gen_adif(self, cabrillo_name)
121
-
122
-
123
- def cabrillo(self, file_encoding):
124
- """Generates Cabrillo file. Maybe."""
125
-
126
-
127
- def recalculate_mults(self):
128
- """Recalculates multipliers after change in logged qso."""
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes