not1mm 25.4.28__tar.gz → 25.5.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 (194) hide show
  1. {not1mm-25.4.28 → not1mm-25.5.21}/PKG-INFO +39 -27
  2. {not1mm-25.4.28 → not1mm-25.5.21}/README.md +38 -26
  3. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/__main__.py +79 -26
  4. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/bandmap.py +5 -1
  5. not1mm-25.5.21/not1mm/data/JetBrainsMono-Thin.ttf +0 -0
  6. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/about.ui +1 -1
  7. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/bandmap.ui +4 -4
  8. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/checkwindow.ui +7 -7
  9. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/configuration.ui +131 -51
  10. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/editcontact.ui +3 -3
  11. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/editmacro.ui +1 -1
  12. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/logwindow.ui +2 -2
  13. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/logwindowx.ui +2 -2
  14. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/main.ui +36 -36
  15. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/new_contest.ui +2 -2
  16. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/opon.ui +1 -1
  17. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/pickcontest.ui +1 -1
  18. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/ratewindow.ui +2 -2
  19. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/settings.ui +1 -1
  20. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/statistics.ui +1 -1
  21. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/vfo.ui +2 -2
  22. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/lib/cat_interface.py +16 -0
  23. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/lib/settings.py +4 -0
  24. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/lib/version.py +1 -1
  25. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm.egg-info/PKG-INFO +39 -27
  26. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm.egg-info/SOURCES.txt +1 -1
  27. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm.egg-info/top_level.txt +1 -0
  28. {not1mm-25.4.28 → not1mm-25.5.21}/pyproject.toml +1 -1
  29. not1mm-25.4.28/not1mm/data/JetBrainsMono-ExtraLight.ttf +0 -0
  30. {not1mm-25.4.28 → not1mm-25.5.21}/LICENSE +0 -0
  31. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/__init__.py +0 -0
  32. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/checkwindow.py +0 -0
  33. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/MASTER.SCP +0 -0
  34. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/alpha bravo charlie delta.txt +0 -0
  35. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/check.png +0 -0
  36. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/contests.sql +0 -0
  37. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/cty.json +0 -0
  38. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/cwmacros.txt +0 -0
  39. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/donors.html +0 -0
  40. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/greendot.png +0 -0
  41. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/k6gte-not1mm.desktop +0 -0
  42. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/k6gte.not1mm-128.png +0 -0
  43. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/k6gte.not1mm-32.png +0 -0
  44. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/k6gte.not1mm-64.png +0 -0
  45. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/not1mm.html +0 -0
  46. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/0.wav +0 -0
  47. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/1.wav +0 -0
  48. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/2.wav +0 -0
  49. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/3.wav +0 -0
  50. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/4.wav +0 -0
  51. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/5.wav +0 -0
  52. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/6.wav +0 -0
  53. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/7.wav +0 -0
  54. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/73.wav +0 -0
  55. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/8.wav +0 -0
  56. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/9.wav +0 -0
  57. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/a.wav +0 -0
  58. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/again.wav +0 -0
  59. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/b.wav +0 -0
  60. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/c.wav +0 -0
  61. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/contest.wav +0 -0
  62. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/cq.wav +0 -0
  63. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/cq2.wav +0 -0
  64. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/d.wav +0 -0
  65. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/e.wav +0 -0
  66. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/f.wav +0 -0
  67. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/g.wav +0 -0
  68. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/h.wav +0 -0
  69. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/i.wav +0 -0
  70. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/j.wav +0 -0
  71. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/k.wav +0 -0
  72. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/k6gte.wav +0 -0
  73. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/l.wav +0 -0
  74. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/m.wav +0 -0
  75. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/mynumber.wav +0 -0
  76. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/n.wav +0 -0
  77. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/nil.wav +0 -0
  78. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/o.wav +0 -0
  79. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/p.wav +0 -0
  80. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/q.wav +0 -0
  81. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/r.wav +0 -0
  82. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/roger.wav +0 -0
  83. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/s.wav +0 -0
  84. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/space.wav +0 -0
  85. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/t.wav +0 -0
  86. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/thankyou.wav +0 -0
  87. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/thankyouqrz.wav +0 -0
  88. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/u.wav +0 -0
  89. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/v.wav +0 -0
  90. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/w.wav +0 -0
  91. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/x.wav +0 -0
  92. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/y.wav +0 -0
  93. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/yourcall.wav +0 -0
  94. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/phonetics/z.wav +0 -0
  95. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/radio_green.png +0 -0
  96. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/radio_grey.png +0 -0
  97. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/radio_red.png +0 -0
  98. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/reddot.png +0 -0
  99. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/rttymacros.txt +0 -0
  100. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/splash.png +0 -0
  101. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/data/ssbmacros.txt +0 -0
  102. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/fsutils.py +0 -0
  103. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/lib/__init__.py +0 -0
  104. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/lib/about.py +0 -0
  105. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/lib/cwinterface.py +0 -0
  106. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/lib/database.py +0 -0
  107. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/lib/edit_contact.py +0 -0
  108. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/lib/edit_macro.py +0 -0
  109. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/lib/edit_opon.py +0 -0
  110. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/lib/edit_station.py +0 -0
  111. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/lib/fldigi_sendstring.py +0 -0
  112. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/lib/ft8_watcher.py +0 -0
  113. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/lib/ham_utility.py +0 -0
  114. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/lib/lookup.py +0 -0
  115. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/lib/multicast.py +0 -0
  116. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/lib/n1mm.py +0 -0
  117. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/lib/new_contest.py +0 -0
  118. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/lib/plugin_common.py +0 -0
  119. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/lib/select_contest.py +0 -0
  120. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/lib/super_check_partial.py +0 -0
  121. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/lib/versiontest.py +0 -0
  122. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/logwindow.py +0 -0
  123. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/lookupservice.py +0 -0
  124. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/10_10_fall_cw.py +0 -0
  125. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/10_10_spring_cw.py +0 -0
  126. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/10_10_summer_phone.py +0 -0
  127. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/10_10_winter_phone.py +0 -0
  128. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/__init__.py +0 -0
  129. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/ari_40_80.py +0 -0
  130. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/arrl_10m.py +0 -0
  131. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/arrl_160m.py +0 -0
  132. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/arrl_dx_cw.py +0 -0
  133. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/arrl_dx_ssb.py +0 -0
  134. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/arrl_field_day.py +0 -0
  135. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/arrl_rtty_ru.py +0 -0
  136. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/arrl_ss_cw.py +0 -0
  137. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/arrl_ss_phone.py +0 -0
  138. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/arrl_vhf_jan.py +0 -0
  139. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/arrl_vhf_jun.py +0 -0
  140. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/arrl_vhf_sep.py +0 -0
  141. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/canada_day.py +0 -0
  142. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/cq_160_cw.py +0 -0
  143. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/cq_160_ssb.py +0 -0
  144. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/cq_wpx_cw.py +0 -0
  145. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/cq_wpx_rtty.py +0 -0
  146. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/cq_wpx_ssb.py +0 -0
  147. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/cq_ww_cw.py +0 -0
  148. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/cq_ww_rtty.py +0 -0
  149. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/cq_ww_ssb.py +0 -0
  150. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/cwt.py +0 -0
  151. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/darc_vhf.py +0 -0
  152. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/darc_xmas.py +0 -0
  153. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/ea_majistad_cw.py +0 -0
  154. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/ea_majistad_ssb.py +0 -0
  155. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/ea_rtty.py +0 -0
  156. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/es_open.py +0 -0
  157. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/general_logging.py +0 -0
  158. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/helvetia.py +0 -0
  159. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/iaru_fieldday_r1_cw.py +0 -0
  160. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/iaru_fieldday_r1_ssb.py +0 -0
  161. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/iaru_hf.py +0 -0
  162. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/icwc_mst.py +0 -0
  163. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/jidx_cw.py +0 -0
  164. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/jidx_ph.py +0 -0
  165. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/k1usn_sst.py +0 -0
  166. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/labre_rs_digi.py +0 -0
  167. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/lz-dx.py +0 -0
  168. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/naqp_cw.py +0 -0
  169. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/naqp_rtty.py +0 -0
  170. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/naqp_ssb.py +0 -0
  171. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/phone_weekly_test.py +0 -0
  172. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/raem.py +0 -0
  173. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/randomgram.py +0 -0
  174. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/ref_cw.py +0 -0
  175. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/ref_ssb.py +0 -0
  176. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/sac_cw.py +0 -0
  177. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/sac_ssb.py +0 -0
  178. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/spdx.py +0 -0
  179. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/stew_perry_topband.py +0 -0
  180. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/ukeidx.py +0 -0
  181. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/vhf_sprint.py +0 -0
  182. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/weekly_rtty.py +0 -0
  183. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/plugins/winter_field_day.py +0 -0
  184. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/radio.py +0 -0
  185. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/ratewindow.py +0 -0
  186. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/rtc_service.py +0 -0
  187. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/statistics.py +0 -0
  188. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/test.py +0 -0
  189. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/vfo.py +0 -0
  190. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm/voice_keying.py +0 -0
  191. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm.egg-info/dependency_links.txt +0 -0
  192. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm.egg-info/entry_points.txt +0 -0
  193. {not1mm-25.4.28 → not1mm-25.5.21}/not1mm.egg-info/requires.txt +0 -0
  194. {not1mm-25.4.28 → not1mm-25.5.21}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: not1mm
3
- Version: 25.4.28
3
+ Version: 25.5.21
4
4
  Summary: NOT1MM Logger
5
5
  Author-email: Michael Bridak <michael.bridak@gmail.com>
6
6
  License: GPL-3.0-or-later
@@ -62,6 +62,7 @@ Dynamic: license-file
62
62
  - [Flatpak](#flatpak)
63
63
  - [Installation](#installation)
64
64
  - [Prerequisites](#prerequisites)
65
+ - [The Easy and Fast way to always run the latest version](#the-easy-and-fast-way-to-always-run-the-latest-version)
65
66
  - [Common Installation Recipes for Ubuntu and Fedora](#common-installation-recipes-for-ubuntu-and-fedora)
66
67
  - [Ubuntu 22.04 LTS](#ubuntu-2204-lts)
67
68
  - [Ubuntu 23.04](#ubuntu-2304)
@@ -256,31 +257,8 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
256
257
 
257
258
  ## Recent Changes
258
259
 
259
- - [25-4-28] Merged PR from MicroPhonon adding VHF Sprint.
260
- - [25-4-25] Merged PR from @microphonon making changes to ARRL VHF and CWOps CWT.
261
- - [25-4-22] Mostly code cleanup. Not running some code when not needed.
262
- - [25-4-21] Add a couple more debug messages. Add LSB/USB to input-able commands to the callsign field.
263
- - [25-4-19-1] Add FM and AM as input-able commands to the callsign field.
264
- - [25-4-19] Changed S&P QSY wipe from 50hz to 500hz.
265
- - [25-4-18] Option to clear input fields when QSY in S&P mode.
266
- - [25-4-17] Testing sending radio voice memory. {VOICE1}, {VOICE2} etc.
267
- - [25-4-16] Fix serial number not updating when selecing call from checkpartial or bandmap.
268
- - [25-4-15] Corrected dupe_type 5 check for contest specific function. Fixed wrong ES Open plugin name. Fixed some problems with the specific_contest_check_dupe datetime namespace. And other stuff.
269
- - [25-4-14] Add ES Open HF Chanmpionship.
270
- - [25-4-13] Fix crash in JIDX Cabrillo output.
271
- - [25-4-12] Added an Auto CQ time to fire progress bar.
272
- - [25-4-11-3] Fixed issue with winkeyer not sending multiple macros in ESM mode.
273
- - [25-4-11-2] Fixed a crash.
274
- - [25-4-11-1] Add clear buffer to winkeyer interface to stop sending.
275
- - [25-4-11] Add Scandinavian Activity Contest
276
- - [25-4-10-1] Add ARI 40/80 contest. Add CTRL-R to toggle Run state.
277
- - [25-4-10] Add Auto CQ visual indicator.
278
- - [25-4-9] Added UKEI DX Contest.
279
- - [25-4-8] Remove focus from statistics table widget.
280
- - [25-4-7] Merge in changes from dj1yfk correcting SPDX Cabrillo name.
281
- - [25-4-5] Add SPDX.
282
- - [25-4-2] Add some tool tips to bandmap and main. Updated Zoom buttons on bandmap. Updated minimum Python version to 3.10.
283
- - [25-4-1] Fix: statistics window not populating when initially activated from the window menu. Removed unused code chucks. Removed some unused and hidden visual elements.
260
+ -[25-5-21] Fix crash from unsafe dict key access when processing F1-F12.
261
+ - [25-5-6] Merged PR from @JG3LLB, Koji-Kawano, Adding code to stop sending morse if using rigctld to send, and @alduhoo adding more control to CW serial number padding.
284
262
 
285
263
  See [CHANGELOG.md](CHANGELOG.md) for prior changes.
286
264
 
@@ -304,6 +282,40 @@ Not1MM requires:
304
282
 
305
283
  You should install these through your distribution's package manager before continuing.
306
284
 
285
+ ### The Easy and Fast way to always run the latest version
286
+
287
+ - Step 1. Visit [Astral](https://docs.astral.sh/uv/) and install uv.
288
+
289
+ In short you run this in your terminal:
290
+
291
+ ```bash
292
+ curl -LsSf https://astral.sh/uv/install.sh | sh
293
+ ```
294
+
295
+ - Step 2. Tell it to run not1mm:
296
+
297
+ ```bash
298
+ uv tool run not1mm
299
+ ```
300
+
301
+ That's it... It will go out, fetch the latest version of not1mm, setup a python virtual environment, get all the needed python libraries, cache everything and run not1mm. The first time takes a minute, but each time after, it's lightning quick and it will automatically check for updates and run the latest version.
302
+
303
+ But wait... There's more. If your distro is old and you're stuck with an older version of python... Say 3.10. And you want to see what all the cool kids are using. But you don't want to corrupt your broke ol' system by downloading the newest Python version. No problem. You can tell uv to run not1mm with any version of Python you'd like. Let's say 3.14.
304
+
305
+ ```bash
306
+ uv tool run --python 3.14 not1mm
307
+ ```
308
+
309
+ It'll download Python 3.14 into you virtual environment and run not1mm.
310
+
311
+ Let's say I was an idiot and pushed a new version and did't fully test it. This happens a-lot... We test in production. Or lets say you just want to see the pain that was back in 2023. No problem.
312
+
313
+ ```bash
314
+ uv tool run --python 3.10 not1mm==23.5.19
315
+ ```
316
+
317
+ Pow! Enjoy the pain... If uv is not your cuppa, you can follow the more traditional route below.
318
+
307
319
  ### Common Installation Recipes for Ubuntu and Fedora
308
320
 
309
321
  I've taken the time to install some common Linux distributions into a VM and
@@ -405,7 +417,7 @@ all the details from:
405
417
  In short, You should install stuff into a Python virtual environment. Newer
406
418
  Linux distros will make you do this unless you include a command line argument
407
419
  akin to '--break-my-system' when using pip. I'm not telling you to use pipx.
408
- But... **Use pipx**.
420
+ But... **Use pipx**. Or better visit the [section above](#the-easy-and-fast-way-to-always-run-the-latest-version) on using uv.
409
421
 
410
422
  #### Bootstrapping pipx
411
423
 
@@ -30,6 +30,7 @@
30
30
  - [Flatpak](#flatpak)
31
31
  - [Installation](#installation)
32
32
  - [Prerequisites](#prerequisites)
33
+ - [The Easy and Fast way to always run the latest version](#the-easy-and-fast-way-to-always-run-the-latest-version)
33
34
  - [Common Installation Recipes for Ubuntu and Fedora](#common-installation-recipes-for-ubuntu-and-fedora)
34
35
  - [Ubuntu 22.04 LTS](#ubuntu-2204-lts)
35
36
  - [Ubuntu 23.04](#ubuntu-2304)
@@ -224,31 +225,8 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
224
225
 
225
226
  ## Recent Changes
226
227
 
227
- - [25-4-28] Merged PR from MicroPhonon adding VHF Sprint.
228
- - [25-4-25] Merged PR from @microphonon making changes to ARRL VHF and CWOps CWT.
229
- - [25-4-22] Mostly code cleanup. Not running some code when not needed.
230
- - [25-4-21] Add a couple more debug messages. Add LSB/USB to input-able commands to the callsign field.
231
- - [25-4-19-1] Add FM and AM as input-able commands to the callsign field.
232
- - [25-4-19] Changed S&P QSY wipe from 50hz to 500hz.
233
- - [25-4-18] Option to clear input fields when QSY in S&P mode.
234
- - [25-4-17] Testing sending radio voice memory. {VOICE1}, {VOICE2} etc.
235
- - [25-4-16] Fix serial number not updating when selecing call from checkpartial or bandmap.
236
- - [25-4-15] Corrected dupe_type 5 check for contest specific function. Fixed wrong ES Open plugin name. Fixed some problems with the specific_contest_check_dupe datetime namespace. And other stuff.
237
- - [25-4-14] Add ES Open HF Chanmpionship.
238
- - [25-4-13] Fix crash in JIDX Cabrillo output.
239
- - [25-4-12] Added an Auto CQ time to fire progress bar.
240
- - [25-4-11-3] Fixed issue with winkeyer not sending multiple macros in ESM mode.
241
- - [25-4-11-2] Fixed a crash.
242
- - [25-4-11-1] Add clear buffer to winkeyer interface to stop sending.
243
- - [25-4-11] Add Scandinavian Activity Contest
244
- - [25-4-10-1] Add ARI 40/80 contest. Add CTRL-R to toggle Run state.
245
- - [25-4-10] Add Auto CQ visual indicator.
246
- - [25-4-9] Added UKEI DX Contest.
247
- - [25-4-8] Remove focus from statistics table widget.
248
- - [25-4-7] Merge in changes from dj1yfk correcting SPDX Cabrillo name.
249
- - [25-4-5] Add SPDX.
250
- - [25-4-2] Add some tool tips to bandmap and main. Updated Zoom buttons on bandmap. Updated minimum Python version to 3.10.
251
- - [25-4-1] Fix: statistics window not populating when initially activated from the window menu. Removed unused code chucks. Removed some unused and hidden visual elements.
228
+ -[25-5-21] Fix crash from unsafe dict key access when processing F1-F12.
229
+ - [25-5-6] Merged PR from @JG3LLB, Koji-Kawano, Adding code to stop sending morse if using rigctld to send, and @alduhoo adding more control to CW serial number padding.
252
230
 
253
231
  See [CHANGELOG.md](CHANGELOG.md) for prior changes.
254
232
 
@@ -272,6 +250,40 @@ Not1MM requires:
272
250
 
273
251
  You should install these through your distribution's package manager before continuing.
274
252
 
253
+ ### The Easy and Fast way to always run the latest version
254
+
255
+ - Step 1. Visit [Astral](https://docs.astral.sh/uv/) and install uv.
256
+
257
+ In short you run this in your terminal:
258
+
259
+ ```bash
260
+ curl -LsSf https://astral.sh/uv/install.sh | sh
261
+ ```
262
+
263
+ - Step 2. Tell it to run not1mm:
264
+
265
+ ```bash
266
+ uv tool run not1mm
267
+ ```
268
+
269
+ That's it... It will go out, fetch the latest version of not1mm, setup a python virtual environment, get all the needed python libraries, cache everything and run not1mm. The first time takes a minute, but each time after, it's lightning quick and it will automatically check for updates and run the latest version.
270
+
271
+ But wait... There's more. If your distro is old and you're stuck with an older version of python... Say 3.10. And you want to see what all the cool kids are using. But you don't want to corrupt your broke ol' system by downloading the newest Python version. No problem. You can tell uv to run not1mm with any version of Python you'd like. Let's say 3.14.
272
+
273
+ ```bash
274
+ uv tool run --python 3.14 not1mm
275
+ ```
276
+
277
+ It'll download Python 3.14 into you virtual environment and run not1mm.
278
+
279
+ Let's say I was an idiot and pushed a new version and did't fully test it. This happens a-lot... We test in production. Or lets say you just want to see the pain that was back in 2023. No problem.
280
+
281
+ ```bash
282
+ uv tool run --python 3.10 not1mm==23.5.19
283
+ ```
284
+
285
+ Pow! Enjoy the pain... If uv is not your cuppa, you can follow the more traditional route below.
286
+
275
287
  ### Common Installation Recipes for Ubuntu and Fedora
276
288
 
277
289
  I've taken the time to install some common Linux distributions into a VM and
@@ -373,7 +385,7 @@ all the details from:
373
385
  In short, You should install stuff into a Python virtual environment. Newer
374
386
  Linux distros will make you do this unless you include a command line argument
375
387
  akin to '--break-my-system' when using pip. I'm not telling you to use pipx.
376
- But... **Use pipx**.
388
+ But... **Use pipx**. Or better visit the [section above](#the-easy-and-fast-way-to-always-run-the-latest-version) on using uv.
377
389
 
378
390
  #### Bootstrapping pipx
379
391
 
@@ -30,7 +30,7 @@ import notctyparser
30
30
 
31
31
  from PyQt6 import QtCore, QtGui, QtWidgets, uic, QtNetwork
32
32
  from PyQt6.QtCore import QDir, Qt, QThread, QSettings, QCoreApplication
33
- from PyQt6.QtGui import QFontDatabase, QColorConstants, QPalette, QColor, QPixmap
33
+ from PyQt6.QtGui import QFontDatabase, QColorConstants, QPalette, QColor, QPixmap, QFont
34
34
  from PyQt6.QtWidgets import QFileDialog, QSplashScreen, QApplication
35
35
  from PyQt6.QtCore import QT_VERSION_STR, PYQT_VERSION_STR
36
36
 
@@ -212,7 +212,45 @@ class MainWindow(QtWidgets.QMainWindow):
212
212
  )
213
213
  self.setCorner(Qt.Corner.TopLeftCorner, Qt.DockWidgetArea.LeftDockWidgetArea)
214
214
  self.setCorner(Qt.Corner.BottomLeftCorner, Qt.DockWidgetArea.LeftDockWidgetArea)
215
+ self.fontfamily = self.load_fonts_from_dir(os.fspath(fsutils.APP_DATA_PATH))
215
216
  uic.loadUi(fsutils.APP_DATA_PATH / "main.ui", self)
217
+ if sys.platform == "darwin":
218
+ def_font_size = 12
219
+
220
+ QApplication.instance().setFont(QFont(self.fontfamily, def_font_size))
221
+ self.F1.setFont(QFont(self.fontfamily, def_font_size))
222
+ self.F2.setFont(QFont(self.fontfamily, def_font_size))
223
+ self.F3.setFont(QFont(self.fontfamily, def_font_size))
224
+ self.F4.setFont(QFont(self.fontfamily, def_font_size))
225
+ self.F5.setFont(QFont(self.fontfamily, def_font_size))
226
+ self.F6.setFont(QFont(self.fontfamily, def_font_size))
227
+ self.F7.setFont(QFont(self.fontfamily, def_font_size))
228
+ self.F8.setFont(QFont(self.fontfamily, def_font_size))
229
+ self.F9.setFont(QFont(self.fontfamily, def_font_size))
230
+ self.F10.setFont(QFont(self.fontfamily, def_font_size))
231
+ self.F11.setFont(QFont(self.fontfamily, def_font_size))
232
+ self.F12.setFont(QFont(self.fontfamily, def_font_size))
233
+ self.radioButton_run.setFont(QFont(self.fontfamily, def_font_size))
234
+ self.radioButton_sp.setFont(QFont(self.fontfamily, def_font_size))
235
+ self.cw_speed.setFont(QFont(self.fontfamily, def_font_size))
236
+ self.callsign_label.setFont(QFont(self.fontfamily, def_font_size))
237
+ self.snt_label.setFont(QFont(self.fontfamily, def_font_size))
238
+ self.rcv_label.setFont(QFont(self.fontfamily, def_font_size))
239
+ self.other_label.setFont(QFont(self.fontfamily, def_font_size))
240
+ self.exch_label.setFont(QFont(self.fontfamily, def_font_size))
241
+ self.heading_distance.setFont(QFont(self.fontfamily, def_font_size))
242
+ self.history_info.setFont(QFont(self.fontfamily, def_font_size))
243
+ self.dx_entity.setFont(QFont(self.fontfamily, def_font_size))
244
+ self.score.setFont(QFont(self.fontfamily, def_font_size))
245
+ self.mults.setFont(QFont(self.fontfamily, def_font_size))
246
+
247
+ self.callsign.setFont(QFont(self.fontfamily, 20))
248
+ self.sent.setFont(QFont(self.fontfamily, 20))
249
+ self.receive.setFont(QFont(self.fontfamily, 20))
250
+ self.other_1.setFont(QFont(self.fontfamily, 20))
251
+ self.other_2.setFont(QFont(self.fontfamily, 20))
252
+ self.dupe_indicator.setFont(QFont(self.fontfamily, 20))
253
+
216
254
  self.history_info.hide()
217
255
  QApplication.instance().focusObjectChanged.connect(self.on_focus_changed)
218
256
  QApplication.instance().styleHints().colorSchemeChanged.connect(
@@ -1990,11 +2028,11 @@ class MainWindow(QtWidgets.QMainWindow):
1990
2028
  indicator.setFrameShape(QtWidgets.QFrame.Shape.NoFrame)
1991
2029
  if self.text_color == QColorConstants.Black:
1992
2030
  indicator.setStyleSheet(
1993
- "font-family: JetBrains Mono ExtraLight; color: black;"
2031
+ f"font-family: {self.fontfamily}; color: black;"
1994
2032
  )
1995
2033
  else:
1996
2034
  indicator.setStyleSheet(
1997
- "font-family: JetBrains Mono ExtraLight; color: white"
2035
+ f"font-family: {self.fontfamily}; color: white;"
1998
2036
  )
1999
2037
 
2000
2038
  def set_band_indicator(self, band: str) -> None:
@@ -2017,7 +2055,7 @@ class MainWindow(QtWidgets.QMainWindow):
2017
2055
  if indicator:
2018
2056
  indicator.setFrameShape(QtWidgets.QFrame.Shape.Box)
2019
2057
  indicator.setStyleSheet(
2020
- "font-family: JetBrains Mono ExtraLight; color: green;"
2058
+ f"font-family: {self.fontfamily}; color: green;"
2021
2059
  )
2022
2060
 
2023
2061
  def closeEvent(self, _event) -> None:
@@ -2121,6 +2159,9 @@ class MainWindow(QtWidgets.QMainWindow):
2121
2159
  if self.cw.servertype == 2:
2122
2160
  self.cw.winkeyer_stop()
2123
2161
  return
2162
+ if self.cw.servertype == 3:
2163
+ self.rig_control.cat.stopcwrigctl()
2164
+ return
2124
2165
  if self.rig_control:
2125
2166
  if self.rig_control.online:
2126
2167
  if self.pref.get("cwtype") == 3 and self.rig_control is not None:
@@ -2869,7 +2910,13 @@ class MainWindow(QtWidgets.QMainWindow):
2869
2910
  next_serial = "1"
2870
2911
  macro = macro.upper()
2871
2912
  if self.radio_state.get("mode") == "CW":
2872
- macro = macro.replace("#", next_serial.rjust(3, "T"))
2913
+ macro = macro.replace(
2914
+ "#",
2915
+ next_serial.rjust(
2916
+ self.pref.get("cwpaddinglength", 3),
2917
+ self.pref.get("cwpaddingchar", "T"),
2918
+ ),
2919
+ )
2873
2920
  else:
2874
2921
  macro = macro.replace("#", next_serial)
2875
2922
  macro = macro.replace("{MYCALL}", self.station.get("Call", ""))
@@ -2882,7 +2929,13 @@ class MainWindow(QtWidgets.QMainWindow):
2882
2929
  macro = macro.replace("{SNT}", self.sent.text())
2883
2930
  if self.radio_state.get("mode") == "CW":
2884
2931
  macro = macro.replace(
2885
- "{SENTNR}", self.other_1.text().lstrip("0").rjust(3, "T")
2932
+ "{SENTNR}",
2933
+ self.other_1.text()
2934
+ .lstrip("0")
2935
+ .rjust(
2936
+ self.pref.get("cwpaddinglength", 3),
2937
+ self.pref.get("cwpaddingchar", "T"),
2938
+ ),
2886
2939
  )
2887
2940
  else:
2888
2941
  macro = macro.replace("{SENTNR}", self.other_1.text())
@@ -4174,26 +4227,26 @@ class MainWindow(QtWidgets.QMainWindow):
4174
4227
  logger.debug("******Cabrillo*****")
4175
4228
  self.contest.cabrillo(self, file_encoding)
4176
4229
 
4230
+ def load_fonts_from_dir(self, directory: str) -> str:
4231
+ """
4232
+ Well it loads fonts from a directory...
4177
4233
 
4178
- def load_fonts_from_dir(directory: str) -> set:
4179
- """
4180
- Well it loads fonts from a directory...
4181
-
4182
- Parameters
4183
- ----------
4184
- directory : str
4185
- The directory to load fonts from.
4234
+ Parameters
4235
+ ----------
4236
+ directory : str
4237
+ The directory to load fonts from.
4186
4238
 
4187
- Returns
4188
- -------
4189
- set
4190
- A set of font families installed in the directory.
4191
- """
4192
- font_families = set()
4193
- for _fi in QDir(directory).entryInfoList(["*.ttf", "*.woff", "*.woff2"]):
4194
- _id = QFontDatabase.addApplicationFont(_fi.absoluteFilePath())
4195
- font_families |= set(QFontDatabase.applicationFontFamilies(_id))
4196
- return font_families
4239
+ Returns
4240
+ -------
4241
+ set
4242
+ A set of font families installed in the directory.
4243
+ """
4244
+ font_families = set()
4245
+ for _fi in QDir(directory).entryInfoList(["*.ttf", "*.woff", "*.woff2"]):
4246
+ _id = QFontDatabase.addApplicationFont(_fi.absoluteFilePath())
4247
+ font_families |= set(QFontDatabase.applicationFontFamilies(_id))
4248
+ result = set((max(font_families, key=len),))
4249
+ return list(result)[0]
4197
4250
 
4198
4251
 
4199
4252
  def install_icons() -> None:
@@ -4249,8 +4302,8 @@ def run() -> None:
4249
4302
  )
4250
4303
  QCoreApplication.processEvents()
4251
4304
 
4252
- families = load_fonts_from_dir(os.fspath(fsutils.APP_DATA_PATH))
4253
- logger.info(f"font families {families}")
4305
+ # families = load_fonts_from_dir(os.fspath(fsutils.APP_DATA_PATH))
4306
+ # logger.info(f"font families {families}")
4254
4307
  window = MainWindow(splash)
4255
4308
  window.callsign.setFocus()
4256
4309
  splash.finish(window)
@@ -19,7 +19,7 @@ from decimal import Decimal
19
19
  from json import loads
20
20
 
21
21
  from PyQt6 import QtCore, QtGui, QtWidgets, uic, QtNetwork
22
- from PyQt6.QtGui import QColorConstants, QPalette, QColor
22
+ from PyQt6.QtGui import QColorConstants, QPalette, QColor, QFont
23
23
  from PyQt6.QtWidgets import QDockWidget
24
24
  from PyQt6.QtCore import Qt, pyqtSignal
25
25
 
@@ -343,6 +343,8 @@ class BandMapWindow(QDockWidget):
343
343
  self._udpwatch = None
344
344
 
345
345
  uic.loadUi(fsutils.APP_DATA_PATH / "bandmap.ui", self)
346
+ self.thefont = QFont()
347
+ self.thefont.setFamily("JetBrains Mono")
346
348
  self.settings = self.get_settings()
347
349
  self.clear_spot_olderSpinBox.setValue(
348
350
  int(self.settings.get("cluster_expire", 1))
@@ -581,6 +583,7 @@ class BandMapWindow(QDockWidget):
581
583
  freq = self.currentBand.start + step * i
582
584
  text = f"{freq:.3f}"
583
585
  self.something = self.bandmap_scene.addText(text)
586
+ self.something.setFont(self.thefont)
584
587
  self.something.setDefaultTextColor(self.text_color)
585
588
  self.something.setPos(
586
589
  -(self.something.boundingRect().width()) + 10,
@@ -726,6 +729,7 @@ class BandMapWindow(QDockWidget):
726
729
  + " "
727
730
  + items.get("ts").split()[1][:-3]
728
731
  )
732
+ text.setFont(self.thefont)
729
733
  text.document().setDocumentMargin(0)
730
734
  text.setPos(60, text_y - (text.boundingRect().height() / 2))
731
735
  text.setFlags(
@@ -18,7 +18,7 @@
18
18
  <widget class="QLabel" name="label">
19
19
  <property name="font">
20
20
  <font>
21
- <family>JetBrains Mono ExtraLight</family>
21
+ <family>JetBrains Mono</family>
22
22
  <pointsize>30</pointsize>
23
23
  </font>
24
24
  </property>
@@ -12,7 +12,7 @@
12
12
  </property>
13
13
  <property name="font">
14
14
  <font>
15
- <family>JetBrains Mono ExtraLight</family>
15
+ <family>JetBrains Mono</family>
16
16
  </font>
17
17
  </property>
18
18
  <property name="windowTitle">
@@ -85,7 +85,7 @@
85
85
  <widget class="QScrollArea" name="scrollArea">
86
86
  <property name="font">
87
87
  <font>
88
- <family>JetBrains Mono ExtraLight</family>
88
+ <family>JetBrains Mono</family>
89
89
  <pointsize>9</pointsize>
90
90
  </font>
91
91
  </property>
@@ -106,7 +106,7 @@
106
106
  </property>
107
107
  <property name="font">
108
108
  <font>
109
- <family>JetBrains Mono ExtraLight</family>
109
+ <family>JetBrains Mono</family>
110
110
  <pointsize>9</pointsize>
111
111
  </font>
112
112
  </property>
@@ -115,7 +115,7 @@
115
115
  <widget class="QGraphicsView" name="graphicsView">
116
116
  <property name="font">
117
117
  <font>
118
- <family>JetBrains Mono ExtraLight</family>
118
+ <family>JetBrains Mono</family>
119
119
  <pointsize>6</pointsize>
120
120
  </font>
121
121
  </property>
@@ -12,7 +12,7 @@
12
12
  </property>
13
13
  <property name="font">
14
14
  <font>
15
- <family>JetBrains Mono ExtraLight</family>
15
+ <family>JetBrains Mono</family>
16
16
  </font>
17
17
  </property>
18
18
  <property name="focusPolicy">
@@ -33,7 +33,7 @@
33
33
  </property>
34
34
  <property name="font">
35
35
  <font>
36
- <family>JetBrains Mono ExtraLight</family>
36
+ <family>JetBrains Mono</family>
37
37
  <pointsize>12</pointsize>
38
38
  </font>
39
39
  </property>
@@ -70,7 +70,7 @@
70
70
  </property>
71
71
  <property name="font">
72
72
  <font>
73
- <family>JetBrains Mono ExtraLight</family>
73
+ <family>JetBrains Mono</family>
74
74
  <pointsize>12</pointsize>
75
75
  </font>
76
76
  </property>
@@ -107,7 +107,7 @@
107
107
  </property>
108
108
  <property name="font">
109
109
  <font>
110
- <family>JetBrains Mono ExtraLight</family>
110
+ <family>JetBrains Mono</family>
111
111
  <pointsize>12</pointsize>
112
112
  </font>
113
113
  </property>
@@ -141,7 +141,7 @@
141
141
  <widget class="QLabel" name="logListLabel">
142
142
  <property name="font">
143
143
  <font>
144
- <family>JetBrains Mono ExtraLight</family>
144
+ <family>JetBrains Mono</family>
145
145
  <pointsize>10</pointsize>
146
146
  </font>
147
147
  </property>
@@ -154,7 +154,7 @@
154
154
  <widget class="QLabel" name="masterListLabel">
155
155
  <property name="font">
156
156
  <font>
157
- <family>JetBrains Mono ExtraLight</family>
157
+ <family>JetBrains Mono</family>
158
158
  <pointsize>10</pointsize>
159
159
  </font>
160
160
  </property>
@@ -167,7 +167,7 @@
167
167
  <widget class="QLabel" name="telnetListLabel">
168
168
  <property name="font">
169
169
  <font>
170
- <family>JetBrains Mono ExtraLight</family>
170
+ <family>JetBrains Mono</family>
171
171
  <pointsize>10</pointsize>
172
172
  </font>
173
173
  </property>