not1mm 24.3.25__tar.gz → 24.3.25.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 (160) hide show
  1. {not1mm-24.3.25 → not1mm-24.3.25.1}/PKG-INFO +2 -1
  2. {not1mm-24.3.25 → not1mm-24.3.25.1}/README.md +1 -0
  3. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/__main__.py +56 -6
  4. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/bandmap.py +45 -7
  5. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/checkwindow.py +2 -2
  6. not1mm-24.3.25.1/not1mm/lib/version.py +3 -0
  7. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/logwindow.py +2 -4
  8. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/vfo.py +2 -2
  9. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm.egg-info/PKG-INFO +2 -1
  10. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm.egg-info/SOURCES.txt +0 -6
  11. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm.egg-info/top_level.txt +0 -2
  12. {not1mm-24.3.25 → not1mm-24.3.25.1}/pyproject.toml +3 -1
  13. not1mm-24.3.25/not1mm/lib/version.py +0 -3
  14. not1mm-24.3.25/not1mm/testing/fakeflrig.py +0 -88
  15. not1mm-24.3.25/not1mm/testing/flrigclient.py +0 -54
  16. not1mm-24.3.25/not1mm/testing/multicast_listener.py +0 -46
  17. not1mm-24.3.25/not1mm/testing/n1mm_listener.py +0 -47
  18. not1mm-24.3.25/not1mm/testing/simulant.py +0 -384
  19. not1mm-24.3.25/not1mm/testing/test.py +0 -8
  20. {not1mm-24.3.25 → not1mm-24.3.25.1}/LICENSE +0 -0
  21. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/__init__.py +0 -0
  22. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/JetBrainsMono-Regular.ttf +0 -0
  23. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/MASTER.SCP +0 -0
  24. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/about.ui +0 -0
  25. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/alpha bravo charlie delta.txt +0 -0
  26. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/bandmap.ui +0 -0
  27. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/check.png +0 -0
  28. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/checkwindow.ui +0 -0
  29. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/configuration.ui +0 -0
  30. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/contests.sql +0 -0
  31. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/cty.json +0 -0
  32. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/cwmacros.txt +0 -0
  33. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/donors.html +0 -0
  34. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/editcontact.ui +0 -0
  35. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/editmacro.ui +0 -0
  36. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/greendot.png +0 -0
  37. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/k6gte-not1mm.desktop +0 -0
  38. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/k6gte.not1mm-128.png +0 -0
  39. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/k6gte.not1mm-32.png +0 -0
  40. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/k6gte.not1mm-64.png +0 -0
  41. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/logwindow.ui +0 -0
  42. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/main.ui +0 -0
  43. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/new_contest.ui +0 -0
  44. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/not1mm.html +0 -0
  45. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/opon.ui +0 -0
  46. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/0.wav +0 -0
  47. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/1.wav +0 -0
  48. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/2.wav +0 -0
  49. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/3.wav +0 -0
  50. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/4.wav +0 -0
  51. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/5.wav +0 -0
  52. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/6.wav +0 -0
  53. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/7.wav +0 -0
  54. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/73.wav +0 -0
  55. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/8.wav +0 -0
  56. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/9.wav +0 -0
  57. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/a.wav +0 -0
  58. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/again.wav +0 -0
  59. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/b.wav +0 -0
  60. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/c.wav +0 -0
  61. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/contest.wav +0 -0
  62. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/cq.wav +0 -0
  63. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/d.wav +0 -0
  64. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/e.wav +0 -0
  65. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/f.wav +0 -0
  66. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/g.wav +0 -0
  67. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/h.wav +0 -0
  68. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/i.wav +0 -0
  69. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/j.wav +0 -0
  70. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/k.wav +0 -0
  71. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/k6gte.wav +0 -0
  72. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/l.wav +0 -0
  73. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/m.wav +0 -0
  74. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/mynumber.wav +0 -0
  75. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/n.wav +0 -0
  76. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/nil.wav +0 -0
  77. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/o.wav +0 -0
  78. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/p.wav +0 -0
  79. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/q.wav +0 -0
  80. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/r.wav +0 -0
  81. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/roger.wav +0 -0
  82. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/s.wav +0 -0
  83. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/space.wav +0 -0
  84. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/t.wav +0 -0
  85. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/thankyou.wav +0 -0
  86. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/thankyouqrz.wav +0 -0
  87. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/u.wav +0 -0
  88. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/v.wav +0 -0
  89. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/w.wav +0 -0
  90. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/x.wav +0 -0
  91. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/y.wav +0 -0
  92. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/yourcall.wav +0 -0
  93. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/phonetics/z.wav +0 -0
  94. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/pickcontest.ui +0 -0
  95. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/radio_green.png +0 -0
  96. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/radio_grey.png +0 -0
  97. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/radio_red.png +0 -0
  98. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/reddot.png +0 -0
  99. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/settings.ui +0 -0
  100. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/ssbmacros.txt +0 -0
  101. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/data/vfo.ui +0 -0
  102. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/fsutils.py +0 -0
  103. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/lib/__init__.py +0 -0
  104. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/lib/about.py +0 -0
  105. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/lib/cat_interface.py +0 -0
  106. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/lib/cwinterface.py +0 -0
  107. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/lib/database.py +0 -0
  108. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/lib/edit_contact.py +0 -0
  109. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/lib/edit_macro.py +0 -0
  110. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/lib/edit_opon.py +0 -0
  111. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/lib/edit_station.py +0 -0
  112. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/lib/ham_utility.py +0 -0
  113. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/lib/lookup.py +0 -0
  114. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/lib/multicast.py +0 -0
  115. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/lib/n1mm.py +0 -0
  116. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/lib/new_contest.py +0 -0
  117. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/lib/plugin_common.py +0 -0
  118. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/lib/select_contest.py +0 -0
  119. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/lib/settings.py +0 -0
  120. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/lib/super_check_partial.py +0 -0
  121. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/lib/versiontest.py +0 -0
  122. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/plugins/10_10_fall_cw.py +0 -0
  123. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/plugins/10_10_spring_cw.py +0 -0
  124. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/plugins/10_10_summer_phone.py +0 -0
  125. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/plugins/10_10_winter_phone.py +0 -0
  126. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/plugins/__init__.py +0 -0
  127. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/plugins/arrl_10m.py +0 -0
  128. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/plugins/arrl_dx_cw.py +0 -0
  129. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/plugins/arrl_dx_ssb.py +0 -0
  130. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/plugins/arrl_field_day.py +0 -0
  131. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/plugins/arrl_rtty_ru.py +0 -0
  132. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/plugins/arrl_ss_cw.py +0 -0
  133. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/plugins/arrl_ss_phone.py +0 -0
  134. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/plugins/arrl_vhf_jan.py +0 -0
  135. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/plugins/arrl_vhf_jun.py +0 -0
  136. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/plugins/arrl_vhf_sep.py +0 -0
  137. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/plugins/canada_day.py +0 -0
  138. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/plugins/cq_160_cw.py +0 -0
  139. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/plugins/cq_160_ssb.py +0 -0
  140. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/plugins/cq_wpx_cw.py +0 -0
  141. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/plugins/cq_wpx_ssb.py +0 -0
  142. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/plugins/cq_ww_cw.py +0 -0
  143. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/plugins/cq_ww_ssb.py +0 -0
  144. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/plugins/cwt.py +0 -0
  145. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/plugins/general_logging.py +0 -0
  146. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/plugins/iaru_hf.py +0 -0
  147. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/plugins/jidx_cw.py +0 -0
  148. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/plugins/jidx_ph.py +0 -0
  149. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/plugins/naqp_cw.py +0 -0
  150. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/plugins/naqp_ssb.py +0 -0
  151. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/plugins/phone_weekly_test.py +0 -0
  152. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/plugins/stew_perry_topband.py +0 -0
  153. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm/plugins/winter_field_day.py +0 -0
  154. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm.egg-info/dependency_links.txt +0 -0
  155. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm.egg-info/entry_points.txt +0 -0
  156. {not1mm-24.3.25 → not1mm-24.3.25.1}/not1mm.egg-info/requires.txt +0 -0
  157. {not1mm-24.3.25 → not1mm-24.3.25.1}/setup.cfg +0 -0
  158. {not1mm-24.3.25 → not1mm-24.3.25.1}/testing/detectdark.py +0 -0
  159. {not1mm-24.3.25 → not1mm-24.3.25.1}/testing/test.py +0 -0
  160. {not1mm-24.3.25 → not1mm-24.3.25.1}/usb_vfo_knob/code.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: not1mm
3
- Version: 24.3.25
3
+ Version: 24.3.25.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
@@ -167,6 +167,7 @@ I wish to thank those who've contributed to the project.
167
167
 
168
168
  ## Recent Changes
169
169
 
170
+ - [24-3-25-1] Dark mode sorted out. Atleast for me...
170
171
  - [24-3-25] Yanked version 24-3-24-1. Fixed widget focus issues.
171
172
  - [24-3-24-1] Killed an SQL query bug causing crash when pressing arrow down.
172
173
  - [24-3-24] Reworked fsutil.py to correct directory paths for Linux.
@@ -136,6 +136,7 @@ I wish to thank those who've contributed to the project.
136
136
 
137
137
  ## Recent Changes
138
138
 
139
+ - [24-3-25-1] Dark mode sorted out. Atleast for me...
139
140
  - [24-3-25] Yanked version 24-3-24-1. Fixed widget focus issues.
140
141
  - [24-3-24-1] Killed an SQL query bug causing crash when pressing arrow down.
141
142
  - [24-3-24] Reworked fsutil.py to correct directory paths for Linux.
@@ -501,12 +501,11 @@ class MainWindow(QtWidgets.QMainWindow):
501
501
 
502
502
  if dark:
503
503
  darkPalette = QtGui.QPalette()
504
- darkColor = QtGui.QColor(45, 45, 45)
505
-
504
+ darkColor = QtGui.QColor(56, 56, 56)
506
505
  disabledColor = QtGui.QColor(127, 127, 127)
507
506
  darkPalette.setColor(QtGui.QPalette.Window, darkColor)
508
507
  darkPalette.setColor(QtGui.QPalette.WindowText, Qt.white)
509
- darkPalette.setColor(QtGui.QPalette.Base, QtGui.QColor(18, 18, 18))
508
+ darkPalette.setColor(QtGui.QPalette.Base, QtGui.QColor(45, 45, 45))
510
509
  darkPalette.setColor(QtGui.QPalette.AlternateBase, darkColor)
511
510
  darkPalette.setColor(QtGui.QPalette.Text, Qt.white)
512
511
  darkPalette.setColor(
@@ -524,6 +523,21 @@ class MainWindow(QtWidgets.QMainWindow):
524
523
  darkPalette.setColor(
525
524
  QtGui.QPalette.Disabled, QtGui.QPalette.HighlightedText, disabledColor
526
525
  )
526
+ dark_button_style = (
527
+ "QPushButton {"
528
+ "background-color: rgb(56,56,56);"
529
+ "color: white;"
530
+ "border-style: outset;"
531
+ "border-width: 2px;"
532
+ "border-radius: 5px;"
533
+ "border-color: rgb(45,45,45);"
534
+ "padding: 6px;"
535
+ "}"
536
+ "QPushButton:pressed {"
537
+ "background-color: rgb(127, 127, 127);"
538
+ "border-style: inset;"
539
+ "}"
540
+ )
527
541
  self.current_palette = darkPalette
528
542
  self.setPalette(darkPalette)
529
543
  self.text_color = Qt.white
@@ -538,7 +552,18 @@ class MainWindow(QtWidgets.QMainWindow):
538
552
  self.other_1.setPalette(darkPalette)
539
553
  self.other_2.setPalette(darkPalette)
540
554
  self.cw_entry.setPalette(darkPalette)
541
-
555
+ self.F1.setStyleSheet(dark_button_style)
556
+ self.F2.setStyleSheet(dark_button_style)
557
+ self.F3.setStyleSheet(dark_button_style)
558
+ self.F4.setStyleSheet(dark_button_style)
559
+ self.F5.setStyleSheet(dark_button_style)
560
+ self.F6.setStyleSheet(dark_button_style)
561
+ self.F7.setStyleSheet(dark_button_style)
562
+ self.F8.setStyleSheet(dark_button_style)
563
+ self.F9.setStyleSheet(dark_button_style)
564
+ self.F10.setStyleSheet(dark_button_style)
565
+ self.F11.setStyleSheet(dark_button_style)
566
+ self.F12.setStyleSheet(dark_button_style)
542
567
  else:
543
568
  palette = self.style().standardPalette()
544
569
  self.current_palette = palette
@@ -555,6 +580,33 @@ class MainWindow(QtWidgets.QMainWindow):
555
580
  self.other_2.setPalette(palette)
556
581
  self.cw_entry.setPalette(palette)
557
582
  self.text_color = Qt.black
583
+ light_button_style = (
584
+ "QPushButton {"
585
+ "background-color: rgb(245,245,245);"
586
+ "color: rgb(52,52,52);"
587
+ "border-style: outset;"
588
+ "border-width: 2px;"
589
+ "border-radius: 5px;"
590
+ "border-color: rgb(150,150,150);"
591
+ "padding: 6px;"
592
+ "}"
593
+ "QPushButton:pressed {"
594
+ "background-color: rgb(127, 127, 127);"
595
+ "border-style: inset;"
596
+ "}"
597
+ )
598
+ self.F1.setStyleSheet(light_button_style)
599
+ self.F2.setStyleSheet(light_button_style)
600
+ self.F3.setStyleSheet(light_button_style)
601
+ self.F4.setStyleSheet(light_button_style)
602
+ self.F5.setStyleSheet(light_button_style)
603
+ self.F6.setStyleSheet(light_button_style)
604
+ self.F7.setStyleSheet(light_button_style)
605
+ self.F8.setStyleSheet(light_button_style)
606
+ self.F9.setStyleSheet(light_button_style)
607
+ self.F10.setStyleSheet(light_button_style)
608
+ self.F11.setStyleSheet(light_button_style)
609
+ self.F12.setStyleSheet(light_button_style)
558
610
 
559
611
  def set_radio_icon(self, state: int) -> None:
560
612
  """
@@ -3270,9 +3322,7 @@ logging.basicConfig(
3270
3322
  )
3271
3323
  logging.getLogger("PyQt5.uic.uiparser").setLevel("INFO")
3272
3324
  logging.getLogger("PyQt5.uic.properties").setLevel("INFO")
3273
- os.environ["QT_QPA_PLATFORMTHEME"] = "gnome"
3274
3325
  app = QtWidgets.QApplication(sys.argv)
3275
-
3276
3326
  families = load_fonts_from_dir(os.fspath(fsutils.APP_DATA_PATH))
3277
3327
  logger.info(f"font families {families}")
3278
3328
  window = MainWindow()
@@ -369,12 +369,12 @@ class BandMapWindow(QtWidgets.QDockWidget):
369
369
 
370
370
  if setdarkmode:
371
371
  darkPalette = QtGui.QPalette()
372
- darkColor = QtGui.QColor(45, 45, 45)
372
+ darkColor = QtGui.QColor(56, 56, 56)
373
373
  self.text_color = Qt.white
374
374
  disabledColor = QtGui.QColor(127, 127, 127)
375
375
  darkPalette.setColor(QtGui.QPalette.Window, darkColor)
376
376
  darkPalette.setColor(QtGui.QPalette.WindowText, Qt.white)
377
- darkPalette.setColor(QtGui.QPalette.Base, QtGui.QColor(18, 18, 18))
377
+ darkPalette.setColor(QtGui.QPalette.Base, QtGui.QColor(45, 45, 45))
378
378
  darkPalette.setColor(QtGui.QPalette.AlternateBase, darkColor)
379
379
  darkPalette.setColor(QtGui.QPalette.Text, Qt.white)
380
380
  darkPalette.setColor(
@@ -396,12 +396,50 @@ class BandMapWindow(QtWidgets.QDockWidget):
396
396
  self.setPalette(darkPalette)
397
397
  self.callsignField.setPalette(darkPalette)
398
398
  self.update()
399
+ dark_button_style = (
400
+ "QPushButton {"
401
+ "background-color: rgb(56,56,56);"
402
+ "color: white;"
403
+ "border-style: outset;"
404
+ "border-width: 2px;"
405
+ "border-radius: 5px;"
406
+ "border-color: rgb(45,45,45);"
407
+ "padding: 6px;"
408
+ "}"
409
+ "QPushButton:pressed {"
410
+ "background-color: rgb(127, 127, 127);"
411
+ "border-style: inset;"
412
+ "}"
413
+ )
414
+ self.connectButton.setStyleSheet(dark_button_style)
415
+ self.clearButton.setStyleSheet(dark_button_style)
416
+ self.zoominButton.setStyleSheet(dark_button_style)
417
+ self.zoomoutButton.setStyleSheet(dark_button_style)
399
418
  else:
400
419
  palette = self.style().standardPalette()
401
420
  self.setPalette(palette)
402
421
  self.callsignField.setPalette(palette)
403
422
  self.text_color = Qt.black
404
423
  self.update()
424
+ light_button_style = (
425
+ "QPushButton {"
426
+ "background-color: rgb(245,245,245);"
427
+ "color: rgb(52,52,52);"
428
+ "border-style: outset;"
429
+ "border-width: 2px;"
430
+ "border-radius: 5px;"
431
+ "border-color: rgb(150,150,150);"
432
+ "padding: 6px;"
433
+ "}"
434
+ "QPushButton:pressed {"
435
+ "background-color: rgb(127, 127, 127);"
436
+ "border-style: inset;"
437
+ "}"
438
+ )
439
+ self.connectButton.setStyleSheet(light_button_style)
440
+ self.clearButton.setStyleSheet(light_button_style)
441
+ self.zoominButton.setStyleSheet(light_button_style)
442
+ self.zoomoutButton.setStyleSheet(light_button_style)
405
443
 
406
444
  def connect(self):
407
445
  """Connect to the cluster."""
@@ -417,7 +455,7 @@ class BandMapWindow(QtWidgets.QDockWidget):
417
455
  port = self.settings.get("cluster_port", 7373)
418
456
  logger.info(f"connecting to dx cluster {server} {port}")
419
457
  self.socket.connectToHost(server, port)
420
- self.connectButton.setStyleSheet("color: white;")
458
+ # self.connectButton.setStyleSheet("color: white;")
421
459
  self.connectButton.setText("Connecting")
422
460
  self.connected = True
423
461
 
@@ -854,13 +892,13 @@ class BandMapWindow(QtWidgets.QDockWidget):
854
892
  logger.debug(f"couldn't parse freq from datablock {data}")
855
893
  return
856
894
  if self.callsignField.text().upper() in data:
857
- self.connectButton.setStyleSheet("color: green;")
895
+ # self.connectButton.setStyleSheet("color: green;")
858
896
  self.connectButton.setText("Connected")
859
897
  logger.debug(f"callsign login acknowledged {data}")
860
898
 
861
899
  def maybeconnected(self) -> None:
862
900
  """Update visual state of the connect button."""
863
- self.connectButton.setStyleSheet("color: yellow;")
901
+ # self.connectButton.setStyleSheet("color: yellow;")
864
902
  self.connectButton.setText("Connecting")
865
903
 
866
904
  def socket_error(self) -> None:
@@ -870,7 +908,7 @@ class BandMapWindow(QtWidgets.QDockWidget):
870
908
  def disconnected(self) -> None:
871
909
  """Called when socket is disconnected."""
872
910
  self.connected = False
873
- self.connectButton.setStyleSheet("color: red;")
911
+ # self.connectButton.setStyleSheet("color: red;")
874
912
  self.connectButton.setText("Closed")
875
913
 
876
914
  def send_command(self, cmd: str) -> None:
@@ -899,7 +937,7 @@ class BandMapWindow(QtWidgets.QDockWidget):
899
937
  logger.info("Closing dx cluster connection")
900
938
  self.socket.close()
901
939
  self.connected = False
902
- self.connectButton.setStyleSheet("color: red;")
940
+ # self.connectButton.setStyleSheet("color: red;")
903
941
  self.connectButton.setText("Closed")
904
942
 
905
943
  def closeEvent(self, _event: QtGui.QCloseEvent) -> None:
@@ -63,11 +63,11 @@ class CheckWindow(QWidget):
63
63
 
64
64
  if dark:
65
65
  darkPalette = QtGui.QPalette()
66
- darkColor = QtGui.QColor(45, 45, 45)
66
+ darkColor = QtGui.QColor(56, 56, 56)
67
67
  disabledColor = QtGui.QColor(127, 127, 127)
68
68
  darkPalette.setColor(QtGui.QPalette.Window, darkColor)
69
69
  darkPalette.setColor(QtGui.QPalette.WindowText, Qt.white)
70
- darkPalette.setColor(QtGui.QPalette.Base, QtGui.QColor(18, 18, 18))
70
+ darkPalette.setColor(QtGui.QPalette.Base, QtGui.QColor(45, 45, 45))
71
71
  darkPalette.setColor(QtGui.QPalette.AlternateBase, darkColor)
72
72
  darkPalette.setColor(QtGui.QPalette.Text, Qt.white)
73
73
  darkPalette.setColor(
@@ -0,0 +1,3 @@
1
+ """It's the version"""
2
+
3
+ __version__ = "24.3.25.1"
@@ -25,8 +25,6 @@ from not1mm.lib.n1mm import N1MM
25
25
 
26
26
  logger = logging.getLogger(__name__)
27
27
 
28
- # os.environ["QT_QPA_PLATFORMTHEME"] = "gnome"
29
-
30
28
 
31
29
  def safe_float(the_input: any, default=0.0) -> float:
32
30
  """
@@ -168,11 +166,11 @@ class LogWindow(QtWidgets.QWidget):
168
166
 
169
167
  if dark:
170
168
  dark_palette = QtGui.QPalette()
171
- dark_color = QtGui.QColor(45, 45, 45)
169
+ dark_color = QtGui.QColor(56, 56, 56)
172
170
  disabled_color = QtGui.QColor(127, 127, 127)
173
171
  dark_palette.setColor(QtGui.QPalette.Window, dark_color)
174
172
  dark_palette.setColor(QtGui.QPalette.WindowText, Qt.white)
175
- dark_palette.setColor(QtGui.QPalette.Base, QtGui.QColor(18, 18, 18))
173
+ dark_palette.setColor(QtGui.QPalette.Base, QtGui.QColor(45, 45, 45))
176
174
  dark_palette.setColor(QtGui.QPalette.AlternateBase, dark_color)
177
175
  dark_palette.setColor(QtGui.QPalette.Text, Qt.white)
178
176
  dark_palette.setColor(
@@ -65,11 +65,11 @@ class VfoWindow(QWidget):
65
65
 
66
66
  if dark:
67
67
  darkPalette = QtGui.QPalette()
68
- darkColor = QtGui.QColor(45, 45, 45)
68
+ darkColor = QtGui.QColor(56, 56, 56)
69
69
  disabledColor = QtGui.QColor(127, 127, 127)
70
70
  darkPalette.setColor(QtGui.QPalette.Window, darkColor)
71
71
  darkPalette.setColor(QtGui.QPalette.WindowText, Qt.white)
72
- darkPalette.setColor(QtGui.QPalette.Base, QtGui.QColor(18, 18, 18))
72
+ darkPalette.setColor(QtGui.QPalette.Base, QtGui.QColor(45, 45, 45))
73
73
  darkPalette.setColor(QtGui.QPalette.AlternateBase, darkColor)
74
74
  darkPalette.setColor(QtGui.QPalette.Text, Qt.white)
75
75
  darkPalette.setColor(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: not1mm
3
- Version: 24.3.25
3
+ Version: 24.3.25.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
@@ -167,6 +167,7 @@ I wish to thank those who've contributed to the project.
167
167
 
168
168
  ## Recent Changes
169
169
 
170
+ - [24-3-25-1] Dark mode sorted out. Atleast for me...
170
171
  - [24-3-25] Yanked version 24-3-24-1. Fixed widget focus issues.
171
172
  - [24-3-24-1] Killed an SQL query bug causing crash when pressing arrow down.
172
173
  - [24-3-24] Reworked fsutil.py to correct directory paths for Linux.
@@ -146,12 +146,6 @@ not1mm/plugins/naqp_ssb.py
146
146
  not1mm/plugins/phone_weekly_test.py
147
147
  not1mm/plugins/stew_perry_topband.py
148
148
  not1mm/plugins/winter_field_day.py
149
- not1mm/testing/fakeflrig.py
150
- not1mm/testing/flrigclient.py
151
- not1mm/testing/multicast_listener.py
152
- not1mm/testing/n1mm_listener.py
153
- not1mm/testing/simulant.py
154
- not1mm/testing/test.py
155
149
  testing/detectdark.py
156
150
  testing/test.py
157
151
  usb_vfo_knob/code.py
@@ -2,5 +2,3 @@ dist
2
2
  not1mm
3
3
  pic
4
4
  research
5
- testing
6
- usb_vfo_knob
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "not1mm"
7
- version = "24.3.25"
7
+ version = "24.3.25.1"
8
8
  description = "NOT1MM Logger"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -43,6 +43,8 @@ classifiers = [
43
43
  [tool.setuptools.packages.find]
44
44
  where = ["."]
45
45
 
46
+ exclude = ["not1mm.testing*", "not1mm.not1mm.testing*", "testing*", "usb_vfo_knob*",]
47
+
46
48
  [tool.setuptools.package-data]
47
49
  "not1mm.data" = ["*.json", "*.txt", "*.SCP", "*.ui", "*.ttf", "*.desktop", "*.png", "*.qss", "*.sql", "*.html",]
48
50
  "not1mm.data.phonetics" = ["*.wav",]
@@ -1,3 +0,0 @@
1
- """It's the version"""
2
-
3
- __version__ = "24.3.25"
@@ -1,88 +0,0 @@
1
- """Main PC does not have radio attached. So we'll make a fake flrig server."""
2
- import logging
3
- from xmlrpc.server import SimpleXMLRPCServer
4
- from xmlrpc.server import SimpleXMLRPCRequestHandler
5
-
6
-
7
- logging.basicConfig(level=logging.WARNING)
8
-
9
- radio_state = {
10
- "freq": "14032000",
11
- "mode": "CW",
12
- "bw": "50",
13
- "ptt": 0,
14
- }
15
-
16
-
17
- class RequestHandler(SimpleXMLRPCRequestHandler):
18
- """Doc String"""
19
-
20
- rpc_paths = ("/RPC2",)
21
-
22
-
23
- def get_vfo():
24
- """return frequency in hz"""
25
- return str(int(radio_state["freq"]))
26
-
27
-
28
- def set_vfo(freq):
29
- """set frequency in hz"""
30
- logging.warning("%s", f"Frequency set to: {freq} {type(freq)}")
31
- radio_state["freq"] = freq
32
- return 0
33
-
34
-
35
- def set_frequency(freq):
36
- """seturn frequency in hz"""
37
- logging.warning("%s", f"Frequency set to: {freq} {type(freq)}")
38
- radio_state["freq"] = freq
39
- return 0
40
-
41
-
42
- def get_mode():
43
- """return mode"""
44
- return radio_state["mode"]
45
-
46
-
47
- def set_mode(mode):
48
- """set frequency in hz"""
49
- logging.warning("%s", f"Mode set to: {mode}")
50
- radio_state["mode"] = mode
51
- return 0
52
-
53
-
54
- def get_bw():
55
- """return bandwidth"""
56
- return [radio_state["bw"], ""]
57
-
58
-
59
- def set_bw(bandwidth):
60
- """set bandwidth"""
61
- radio_state["bw"] = bandwidth
62
-
63
-
64
- def get_version():
65
- """return flrig version"""
66
- return "1.4.8"
67
-
68
-
69
- print("Stupid server to fake an flrig CAT control server.")
70
-
71
- # Create server
72
- with SimpleXMLRPCServer(
73
- ("0.0.0.0", 12345),
74
- requestHandler=RequestHandler,
75
- logRequests=False,
76
- allow_none=True,
77
- ) as server:
78
- server.register_function(get_vfo, name="rig.get_vfo")
79
- server.register_function(get_mode, name="rig.get_mode")
80
- server.register_function(set_vfo, name="rig.set_vfo")
81
- server.register_function(set_frequency, name="rig.set_frequency")
82
- server.register_function(set_mode, name="rig.set_mode")
83
- server.register_function(get_bw, name="rig.get_bw")
84
- server.register_function(set_bw, name="rig.set_bw")
85
- server.register_function(get_version, name="main.get_version")
86
-
87
- server.register_introspection_functions()
88
- server.serve_forever()
@@ -1,54 +0,0 @@
1
- """Fake client to test flrig"""
2
- import xmlrpc.client
3
-
4
- TARGET = "http://localhost:12345"
5
- server = xmlrpc.client.ServerProxy(TARGET)
6
-
7
- try: # show the version
8
- response = server.main.get_version()
9
- print(f"Version: {response} {type(response)}")
10
- except ConnectionRefusedError as exception:
11
- print(f"{exception}")
12
- except xmlrpc.client.Fault as exception:
13
- print(f"{exception}")
14
-
15
- try: # get the vfo
16
- response = server.rig.get_vfo()
17
- print(f"VFO: {response} {type(response)}")
18
- except ConnectionRefusedError as exception:
19
- print(f"{exception}")
20
- except xmlrpc.client.Fault as exception:
21
- print(f"{exception}")
22
-
23
- try: # set the vfo
24
- response = server.rig.set_vfo(float(7035000.0))
25
- print(f"Setting VFO: {response} {type(response)}")
26
- except ConnectionRefusedError as exception:
27
- print(f"{exception}")
28
- except xmlrpc.client.Fault as exception:
29
- print(f"{exception}")
30
-
31
- try: # get the vfo
32
- response = server.rig.get_vfo()
33
- print(f"VFO: {response} {type(response)}")
34
- except ConnectionRefusedError as exception:
35
- print(f"{exception}")
36
- except xmlrpc.client.Fault as exception:
37
- print(f"{exception}")
38
-
39
- try: # set the frequency
40
- response = server.rig.set_frequency(float(7350000.0))
41
- print(f"Setting Frequency: {response} {type(response)}")
42
- except ConnectionRefusedError as exception:
43
- print(f"{exception}")
44
- except xmlrpc.client.Fault as exception:
45
- print(f"{exception}")
46
-
47
-
48
- try: # get the vfo
49
- response = server.rig.get_vfo()
50
- print(f"VFO: {response} {type(response)}")
51
- except ConnectionRefusedError as exception:
52
- print(f"{exception}")
53
- except xmlrpc.client.Fault as exception:
54
- print(f"{exception}")
@@ -1,46 +0,0 @@
1
- #!/usr/bin/env python3
2
- """Test multicasting"""
3
- # pylint: disable=invalid-name
4
- import socket
5
- import time
6
- import threading
7
- import queue
8
-
9
- multicast_port = 2239
10
- multicast_group = "224.1.1.1"
11
- interface_ip = "0.0.0.0"
12
-
13
- fifo = queue.Queue()
14
-
15
- s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
16
- s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
17
- s.bind(("", multicast_port))
18
- mreq = socket.inet_aton(multicast_group) + socket.inet_aton(interface_ip)
19
- s.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, bytes(mreq))
20
- s.settimeout(0.1)
21
-
22
-
23
- def watch_udp():
24
- """watch udp"""
25
- while True:
26
- try:
27
- datagram = s.recv(1500)
28
- except socket.timeout:
29
- time.sleep(1)
30
- continue
31
- if datagram:
32
- fifo.put(datagram)
33
-
34
-
35
- _udpwatch = threading.Thread(
36
- target=watch_udp,
37
- daemon=True,
38
- )
39
- _udpwatch.start()
40
-
41
- while 1:
42
- # print("Waiting...")
43
- while not fifo.empty():
44
- timestamp = time.strftime("%H:%M:%S", time.gmtime())
45
- print(f"[{timestamp}] {fifo.get()}\n")
46
- time.sleep(1)
@@ -1,47 +0,0 @@
1
- #!/usr/bin/env python3
2
- """Test multicasting"""
3
- # pylint: disable=invalid-name
4
- import socket
5
- import time
6
- import threading
7
- import queue
8
- import xmltodict
9
-
10
- multicast_port = 12061
11
- multicast_group = "127.0.0.1"
12
- interface_ip = "0.0.0.0"
13
-
14
- fifo = queue.Queue()
15
-
16
- s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
17
- s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
18
- s.bind(("127.0.0.1", multicast_port))
19
- # mreq = socket.inet_aton(multicast_group) + socket.inet_aton(interface_ip)
20
- # s.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, bytes(mreq))
21
- s.settimeout(0.1)
22
-
23
-
24
- def watch_udp():
25
- """watch udp"""
26
- while True:
27
- try:
28
- datagram = s.recv(1500)
29
- except socket.timeout:
30
- time.sleep(1)
31
- continue
32
- if datagram:
33
- fifo.put(datagram)
34
-
35
-
36
- _udpwatch = threading.Thread(
37
- target=watch_udp,
38
- daemon=True,
39
- )
40
- _udpwatch.start()
41
-
42
- while 1:
43
- # print("Waiting...")
44
- while not fifo.empty():
45
- timestamp = time.strftime("%H:%M:%S", time.gmtime())
46
- print(f"[{timestamp}] {xmltodict.parse(fifo.get())}\n")
47
- time.sleep(1)