not1mm 24.3.19__py3-none-any.whl → 24.3.21__py3-none-any.whl

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 (66) hide show
  1. not1mm/__main__.py +289 -123
  2. not1mm/bandmap.py +168 -163
  3. not1mm/checkwindow.py +55 -107
  4. not1mm/data/MASTER.SCP +1077 -749
  5. not1mm/data/bandmap.ui +4 -4
  6. not1mm/data/checkwindow.ui +9 -16
  7. not1mm/data/logwindow.ui +16 -11
  8. not1mm/data/main.ui +16 -6
  9. not1mm/data/vfo.ui +64 -52
  10. not1mm/data/vfo2.ui +84 -0
  11. not1mm/fsutils.py +38 -0
  12. not1mm/lib/about.py +4 -2
  13. not1mm/lib/cat_interface.py +1 -1
  14. not1mm/lib/cwinterface.py +1 -1
  15. not1mm/lib/database.py +4 -4
  16. not1mm/lib/edit_contact.py +2 -2
  17. not1mm/lib/edit_macro.py +2 -3
  18. not1mm/lib/edit_opon.py +2 -2
  19. not1mm/lib/edit_station.py +3 -3
  20. not1mm/lib/ham_utility.py +1 -1
  21. not1mm/lib/lookup.py +1 -1
  22. not1mm/lib/multicast.py +9 -4
  23. not1mm/lib/n1mm.py +1 -1
  24. not1mm/lib/new_contest.py +2 -2
  25. not1mm/lib/select_contest.py +2 -2
  26. not1mm/lib/settings.py +3 -4
  27. not1mm/lib/super_check_partial.py +6 -5
  28. not1mm/lib/version.py +1 -1
  29. not1mm/logwindow.py +60 -104
  30. not1mm/plugins/10_10_fall_cw.py +1 -1
  31. not1mm/plugins/10_10_spring_cw.py +1 -1
  32. not1mm/plugins/10_10_summer_phone.py +1 -1
  33. not1mm/plugins/10_10_winter_phone.py +1 -1
  34. not1mm/plugins/arrl_10m.py +1 -1
  35. not1mm/plugins/arrl_dx_cw.py +1 -1
  36. not1mm/plugins/arrl_dx_ssb.py +1 -1
  37. not1mm/plugins/arrl_field_day.py +1 -1
  38. not1mm/plugins/arrl_ss_cw.py +1 -1
  39. not1mm/plugins/arrl_ss_phone.py +1 -1
  40. not1mm/plugins/arrl_vhf_jan.py +1 -1
  41. not1mm/plugins/arrl_vhf_jun.py +1 -1
  42. not1mm/plugins/arrl_vhf_sep.py +1 -1
  43. not1mm/plugins/canada_day.py +1 -1
  44. not1mm/plugins/cq_160_cw.py +1 -1
  45. not1mm/plugins/cq_160_ssb.py +1 -1
  46. not1mm/plugins/cq_wpx_cw.py +1 -1
  47. not1mm/plugins/cq_wpx_ssb.py +1 -1
  48. not1mm/plugins/cq_ww_cw.py +1 -1
  49. not1mm/plugins/cq_ww_ssb.py +1 -1
  50. not1mm/plugins/cwt.py +1 -1
  51. not1mm/plugins/general_logging.py +1 -1
  52. not1mm/plugins/iaru_hf.py +1 -1
  53. not1mm/plugins/jidx_cw.py +1 -1
  54. not1mm/plugins/jidx_ph.py +1 -1
  55. not1mm/plugins/naqp_cw.py +1 -1
  56. not1mm/plugins/naqp_ssb.py +1 -1
  57. not1mm/plugins/phone_weekly_test.py +1 -1
  58. not1mm/plugins/stew_perry_topband.py +1 -1
  59. not1mm/plugins/winter_field_day.py +1 -1
  60. not1mm/vfo.py +77 -98
  61. {not1mm-24.3.19.dist-info → not1mm-24.3.21.dist-info}/METADATA +3 -1
  62. {not1mm-24.3.19.dist-info → not1mm-24.3.21.dist-info}/RECORD +66 -64
  63. {not1mm-24.3.19.dist-info → not1mm-24.3.21.dist-info}/LICENSE +0 -0
  64. {not1mm-24.3.19.dist-info → not1mm-24.3.21.dist-info}/WHEEL +0 -0
  65. {not1mm-24.3.19.dist-info → not1mm-24.3.21.dist-info}/entry_points.txt +0 -0
  66. {not1mm-24.3.19.dist-info → not1mm-24.3.21.dist-info}/top_level.txt +0 -0
not1mm/vfo.py CHANGED
@@ -9,58 +9,33 @@ VFO Window
9
9
  # usb-Raspberry_Pi_Pico_W_E6614C311B331139-if00
10
10
 
11
11
  import logging
12
-
13
12
  import os
14
-
15
13
  import platform
16
- import queue
17
- import sys
18
14
  from json import loads, JSONDecodeError
19
- from pathlib import Path
20
15
 
21
16
  import serial
22
- from PyQt5 import QtCore, QtNetwork, uic, QtWidgets
23
- from PyQt5.QtCore import QTimer
24
- from PyQt5.QtWidgets import QApplication, QMainWindow
17
+ from PyQt5 import QtCore, QtGui, QtWidgets, uic
18
+ from PyQt5.QtCore import Qt, QTimer
19
+ from PyQt5.QtWidgets import QWidget
25
20
 
21
+ from not1mm import fsutils
26
22
  from not1mm.lib.cat_interface import CAT
27
23
  from not1mm.lib.multicast import Multicast
28
24
 
29
- os.environ["QT_QPA_PLATFORMTHEME"] = "gnome"
30
-
31
- if __loader__:
32
- WORKING_PATH = os.path.dirname(__loader__.get_filename())
33
- else:
34
- WORKING_PATH = os.path.dirname(os.path.realpath(__file__))
35
-
36
- if "XDG_DATA_HOME" in os.environ:
37
- DATA_PATH = os.environ.get("XDG_DATA_HOME")
38
- else:
39
- DATA_PATH = str(Path.home() / ".local" / "share")
40
- DATA_PATH += "/not1mm"
41
-
42
- if "XDG_CONFIG_HOME" in os.environ:
43
- CONFIG_PATH = os.environ.get("XDG_CONFIG_HOME")
44
- else:
45
- CONFIG_PATH = str(Path.home() / ".config")
46
- CONFIG_PATH += "/not1mm"
47
-
25
+ logger = logging.getLogger(__name__)
48
26
 
49
- class MainWindow(QMainWindow):
50
- """
51
- The main window
52
- """
27
+ class VfoWindow(QWidget):
53
28
 
54
29
  pref = {}
55
30
  old_vfo = ""
56
31
  old_pico = ""
57
32
  message_shown = False
58
33
  multicast_interface = None
34
+ current_palette = None
59
35
 
60
36
  def __init__(self, *args, **kwargs):
61
37
  super().__init__(*args, **kwargs)
62
- data_path = WORKING_PATH + "/data/vfo.ui"
63
- uic.loadUi(data_path, self)
38
+ uic.loadUi(fsutils.APP_DATA_PATH / "vfo.ui", self)
64
39
  self.rig_control = None
65
40
  self.timer = QTimer()
66
41
  self.timer.timeout.connect(self.getwaiting)
@@ -69,7 +44,7 @@ class MainWindow(QMainWindow):
69
44
  self.lcdNumber.display(0)
70
45
  self.pico = None
71
46
  self._udpwatch = None
72
- self.udp_fifo = queue.Queue()
47
+
73
48
  self.multicast_interface = Multicast(
74
49
  self.pref.get("multicast_group", "239.1.1.1"),
75
50
  self.pref.get("multicast_port", 2239),
@@ -77,9 +52,45 @@ class MainWindow(QMainWindow):
77
52
  )
78
53
  self.multicast_interface.ready_read_connect(self.watch_udp)
79
54
 
80
- def quit_app(self) -> None:
81
- """Shutdown the app."""
82
- app.quit()
55
+ self.setup_serial()
56
+ #app.processEvents()
57
+ self.poll_rig_timer = QtCore.QTimer()
58
+ self.poll_rig_timer.timeout.connect(self.poll_radio)
59
+ self.poll_rig_timer.start(500)
60
+
61
+ def setDarkMode(self, dark: bool):
62
+ """testing"""
63
+
64
+ if dark:
65
+ darkPalette = QtGui.QPalette()
66
+ darkColor = QtGui.QColor(45, 45, 45)
67
+ disabledColor = QtGui.QColor(127, 127, 127)
68
+ darkPalette.setColor(QtGui.QPalette.Window, darkColor)
69
+ darkPalette.setColor(QtGui.QPalette.WindowText, Qt.white)
70
+ darkPalette.setColor(QtGui.QPalette.Base, QtGui.QColor(18, 18, 18))
71
+ darkPalette.setColor(QtGui.QPalette.AlternateBase, darkColor)
72
+ darkPalette.setColor(QtGui.QPalette.Text, Qt.white)
73
+ darkPalette.setColor(
74
+ QtGui.QPalette.Disabled, QtGui.QPalette.Text, disabledColor
75
+ )
76
+ darkPalette.setColor(QtGui.QPalette.Button, darkColor)
77
+ darkPalette.setColor(QtGui.QPalette.ButtonText, Qt.white)
78
+ darkPalette.setColor(
79
+ QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, disabledColor
80
+ )
81
+ darkPalette.setColor(QtGui.QPalette.BrightText, Qt.red)
82
+ darkPalette.setColor(QtGui.QPalette.Link, QtGui.QColor(42, 130, 218))
83
+ darkPalette.setColor(QtGui.QPalette.Highlight, QtGui.QColor(42, 130, 218))
84
+ darkPalette.setColor(QtGui.QPalette.HighlightedText, Qt.black)
85
+ darkPalette.setColor(
86
+ QtGui.QPalette.Disabled, QtGui.QPalette.HighlightedText, disabledColor
87
+ )
88
+ self.current_palette = darkPalette
89
+ self.setPalette(darkPalette)
90
+ else:
91
+ palette = self.style().standardPalette()
92
+ self.current_palette = palette
93
+ self.setPalette(palette)
83
94
 
84
95
  def load_pref(self) -> None:
85
96
  """
@@ -87,9 +98,9 @@ class MainWindow(QMainWindow):
87
98
  Get CAT interface.
88
99
  """
89
100
  try:
90
- if os.path.exists(CONFIG_PATH + "/not1mm.json"):
101
+ if os.path.exists(fsutils.CONFIG_FILE):
91
102
  with open(
92
- CONFIG_PATH + "/not1mm.json", "rt", encoding="utf-8"
103
+ fsutils.CONFIG_FILE, "rt", encoding="utf-8"
93
104
  ) as file_descriptor:
94
105
  self.pref = loads(file_descriptor.read())
95
106
  logger.info("%s", self.pref)
@@ -119,6 +130,7 @@ class MainWindow(QMainWindow):
119
130
  int(self.pref.get("CAT_port", 4532)),
120
131
  )
121
132
  self.timer.start(100)
133
+ self.setDarkMode(self.pref.get("darkmode", False))
122
134
 
123
135
  def discover_device(self) -> str:
124
136
  """
@@ -131,7 +143,7 @@ class MainWindow(QMainWindow):
131
143
 
132
144
  devices = None
133
145
  data = None
134
- app.processEvents()
146
+ #app.processEvents()
135
147
  try:
136
148
  devices = os.listdir("/dev/serial/by-id")
137
149
  except FileNotFoundError:
@@ -154,29 +166,28 @@ class MainWindow(QMainWindow):
154
166
  Setup the device returned by discover_device()
155
167
  Or display message saying we didn't find one.
156
168
  """
157
- while True:
158
- device = self.discover_device()
159
- if device:
160
- try:
161
- self.pico = serial.Serial("/dev/serial/by-id/" + device, 115200)
162
- self.pico.timeout = 100
163
- self.lcdNumber.setStyleSheet("QLCDNumber { color: white; }")
164
- break
165
- except OSError:
166
- if self.message_shown is False:
167
- self.message_shown = True
168
- self.show_message_box(
169
- "Unable to locate or open the VFO knob serial device."
170
- )
171
- self.lcdNumber.setStyleSheet("QLCDNumber { color: red; }")
172
- else:
169
+
170
+ device = self.discover_device()
171
+ if device:
172
+ try:
173
+ self.pico = serial.Serial("/dev/serial/by-id/" + device, 115200)
174
+ self.pico.timeout = 100
175
+ self.lcdNumber.setStyleSheet("QLCDNumber { color: white; }")
176
+ except OSError:
173
177
  if self.message_shown is False:
174
178
  self.message_shown = True
175
179
  self.show_message_box(
176
180
  "Unable to locate or open the VFO knob serial device."
177
181
  )
178
182
  self.lcdNumber.setStyleSheet("QLCDNumber { color: red; }")
179
- app.processEvents()
183
+ else:
184
+ if self.message_shown is False:
185
+ self.message_shown = True
186
+ self.show_message_box(
187
+ "Unable to locate or open the VFO knob serial device."
188
+ )
189
+ self.lcdNumber.setStyleSheet("QLCDNumber { color: red; }")
190
+ #app.processEvents()
180
191
 
181
192
  def watch_udp(self) -> None:
182
193
  """
@@ -200,8 +211,7 @@ class MainWindow(QMainWindow):
200
211
  if json_data.get("station", "") != platform.node():
201
212
  continue
202
213
  logger.debug(f"{json_data=}")
203
- if json_data.get("cmd", "") == "HALT":
204
- self.quit_app()
214
+
205
215
  if json_data.get("cmd", "") == "TUNE":
206
216
  # b'{"cmd": "TUNE", "freq": 7.0235, "spot": "MM0DGI"}'
207
217
  vfo = json_data.get("freq")
@@ -214,6 +224,9 @@ class MainWindow(QMainWindow):
214
224
  logger.critical("Unable to write to serial device.")
215
225
  except AttributeError:
216
226
  logger.critical("Unable to write to serial device.")
227
+ continue
228
+ if json_data.get("cmd", "") == "DARKMODE":
229
+ self.setDarkMode(json_data.get("state", False))
217
230
 
218
231
  def showNumber(self, the_number) -> None:
219
232
  """Display vfo value with dots"""
@@ -221,7 +234,7 @@ class MainWindow(QMainWindow):
221
234
  if len(dvfo) > 6:
222
235
  dnum = f"{dvfo[:len(dvfo)-6]}.{dvfo[-6:-3]}.{dvfo[-3:]}"
223
236
  self.lcdNumber.display(dnum)
224
- app.processEvents()
237
+ #app.processEvents()
225
238
 
226
239
  def poll_radio(self) -> None:
227
240
  """
@@ -244,7 +257,7 @@ class MainWindow(QMainWindow):
244
257
  logger.debug(f"{vfo}")
245
258
  self.showNumber(vfo)
246
259
  # self.lcdNumber.display(dnum)
247
- app.processEvents()
260
+ #app.processEvents()
248
261
  cmd = f"F {vfo}\r"
249
262
  try:
250
263
  if self.pico:
@@ -271,56 +284,22 @@ class MainWindow(QMainWindow):
271
284
  self.rig_control.set_vfo(result)
272
285
  self.showNumber(result)
273
286
  # self.lcdNumber.display(result)
274
- app.processEvents()
287
+ #app.processEvents()
275
288
  except OSError:
276
289
  logger.critical("Unable to write to serial device.")
277
290
  except AttributeError:
278
291
  logger.critical("Unable to write to serial device.")
279
- app.processEvents()
292
+ #app.processEvents()
280
293
 
281
294
  def show_message_box(self, message: str) -> None:
282
295
  """
283
296
  Display an alert box with the supplied message.
284
297
  """
285
298
  message_box = QtWidgets.QMessageBox()
299
+ message_box.setPalette(self.current_palette)
286
300
  message_box.setIcon(QtWidgets.QMessageBox.Information)
287
301
  message_box.setText(message)
288
302
  message_box.setWindowTitle("Information")
289
303
  message_box.setStandardButtons(QtWidgets.QMessageBox.Ok)
290
304
  _ = message_box.exec_()
291
305
 
292
-
293
- def main():
294
- """main entry"""
295
- window.show()
296
- window.setup_serial()
297
- app.processEvents()
298
- timer = QtCore.QTimer()
299
- timer.timeout.connect(window.poll_radio)
300
- timer.start(250)
301
- sys.exit(app.exec())
302
-
303
-
304
- logger = logging.getLogger("__main__")
305
- handler = logging.StreamHandler()
306
- formatter = logging.Formatter(
307
- datefmt="%H:%M:%S",
308
- fmt="[%(asctime)s] %(levelname)s %(module)s - %(funcName)s Line %(lineno)d:\n%(message)s",
309
- )
310
- handler.setFormatter(formatter)
311
- logger.addHandler(handler)
312
-
313
- if Path("./debug").exists():
314
- logger.setLevel(logging.DEBUG)
315
- logger.debug("debugging on")
316
- else:
317
- logger.setLevel(logging.WARNING)
318
- logger.warning("debugging off")
319
-
320
- app = QApplication(sys.argv)
321
- app.setStyle("Adwaita-Dark")
322
- window = MainWindow()
323
-
324
-
325
- if __name__ == "__main__":
326
- main()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: not1mm
3
- Version: 24.3.19
3
+ Version: 24.3.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
@@ -27,6 +27,7 @@ Requires-Dist: soundfile
27
27
  Requires-Dist: numpy
28
28
  Requires-Dist: notctyparser >=23.6.21
29
29
  Requires-Dist: rapidfuzz
30
+ Requires-Dist: appdata
30
31
 
31
32
  # Not1MM
32
33
 
@@ -168,6 +169,7 @@ I wish to thank those who've contributed to the project.
168
169
 
169
170
  ## Recent Changes
170
171
 
172
+ - [24-3-21] Merged PR from @kyleboyle for docking windows. MacOS and Windows support.
171
173
  - [24-3-19] Removed some useless bloat causing slow interface on FreeBSD 13/14 and maybe others.
172
174
  - [24-3-16] Add Save/Fail confirmation dialogs when saving ADIF of Cabrillo files.
173
175
  - [24-3-15] Change 'CWR' to 'CW' in the ADIF output.
@@ -1,16 +1,17 @@
1
1
  not1mm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- not1mm/__main__.py,sha256=1qsz42uPC2r1XBVhScPYYPnnRphipNVprn0bX7t_CZE,108424
3
- not1mm/bandmap.py,sha256=hL76Hyz2omB_jroaUeXJ9XTYuD_qbWZQrqfTMW1Wx3E,29645
4
- not1mm/checkwindow.py,sha256=QyxPtGwqOCTQR3kVREhwSkhdbWcGfDyGNHId-b6FpQQ,7449
5
- not1mm/logwindow.py,sha256=Rk9GAxOjic8JeqjrCJrCbnLIdoKT9kdE-G32AjAwVX4,44021
6
- not1mm/vfo.py,sha256=AWqNVdcF4WRFls6J9443UM7V2YdLO0FzVWOcs9B1g0c,11096
2
+ not1mm/__main__.py,sha256=kyio6SVPPMwC-Lq0sigYdt-dp7AFvoMHW_Uv2dzxeBU,115688
3
+ not1mm/bandmap.py,sha256=8X4f6mPwkeKk5FRKZz4RVHpZ2BiYMC1kdZ7yI1U_uF8,31328
4
+ not1mm/checkwindow.py,sha256=uiVreSneOcacQHlsLXF-TqSEGjVA8q7xd3YC0-p8eME,7187
5
+ not1mm/fsutils.py,sha256=a3LSvc_GbNSDQUvEzICEmo3MN8EKB0N8RZqNfGsCqv8,976
6
+ not1mm/logwindow.py,sha256=hKdl7-LsYW3MtjNRgtPdHSTvPoQ6X9UPQ1HyRIobCto,43586
7
+ not1mm/vfo.py,sha256=q08nk-Fig2rj9L5Qbd98awxMS0FsMThSyhexFQGNHBA,11491
7
8
  not1mm/data/JetBrainsMono-Regular.ttf,sha256=UOHctAKY_PzCGh7zy-6f6egnCcSK0wzmF0csBqO9lDY,203952
8
- not1mm/data/MASTER.SCP,sha256=K3oXgFMOyhmEsi2e4_JVrxwKe2ZFJkEiAsix1hGGeyw,364222
9
+ not1mm/data/MASTER.SCP,sha256=1vQRvEZ865brfmmajp-Lj-hgWejVGI992q8o971bUV8,366478
9
10
  not1mm/data/about.ui,sha256=7TqvtXFFm0Rmcu0bmLupwpO1CsK8MekfZ09_xn6kZrQ,2067
10
11
  not1mm/data/alpha bravo charlie delta.txt,sha256=d5QMmSWEUAe4Rj1XbNjTPLa_5Be4Se6u5LUIqAYidOQ,224
11
- not1mm/data/bandmap.ui,sha256=iWl5RSCQMbshLz4EyTnljnsc_HzAd8flUOERxa92ILY,6762
12
+ not1mm/data/bandmap.ui,sha256=X6BpebEQLc77OF37a_25JTndL5LPc6PJUaIF9THogQs,6746
12
13
  not1mm/data/check.png,sha256=UvFOLr8V-79qnjW8wUaGItXk_OSP8m8hqPevs8NDlFY,387
13
- not1mm/data/checkwindow.ui,sha256=nc4FRc4D3ozC1jhm96Q2y6rolayKF6OwMrbCSaQ-vbg,2572
14
+ not1mm/data/checkwindow.ui,sha256=_a22PpCNxO2TrXL0n9xT6JDkCuck2vAIrCmTf0ffAmo,2564
14
15
  not1mm/data/configuration.ui,sha256=DJZxA4zZPb4sTdVn17j1fwaTw-5lJCNQ6PspQrsdMe4,51643
15
16
  not1mm/data/contests.sql,sha256=4hmJCDvrbxnA_Y5S4T5o52TZieeFk6QUwFerwlFePNA,89307
16
17
  not1mm/data/cty.json,sha256=1x0RqUdqGuhLBU2yklu1isYm_4HyPstn7ehQilZduHw,4753305
@@ -23,8 +24,8 @@ not1mm/data/k6gte-not1mm.desktop,sha256=bSiSG7PzGygv0bBaF7Nf48PApVyrobSBVNk7j7wR
23
24
  not1mm/data/k6gte.not1mm-128.png,sha256=ZP93MfRqr4WwsFCwg1m5MZjLs8bG895vDW9DDDn1B_Q,6076
24
25
  not1mm/data/k6gte.not1mm-32.png,sha256=XdTsCa3xqwTfn26Ga7RwO_Vlbg_77RKkSc8bMxVcCac,1526
25
26
  not1mm/data/k6gte.not1mm-64.png,sha256=6ku45Gq1g5ezh04F07osoKRtanb3e4kbx5XdIEh3N90,2925
26
- not1mm/data/logwindow.ui,sha256=_-wobHhIjALzCswyXIrqNadnLdc88eay1GNF23a-Qh0,970
27
- not1mm/data/main.ui,sha256=zhF00NG9BL6EDr7159GNvvU8vb0oH9FUsdTGli9xY58,53841
27
+ not1mm/data/logwindow.ui,sha256=hC_G_4UCxBogUrQ4NX-pY1cXVGQOltbRF361HbZG2cI,1229
28
+ not1mm/data/main.ui,sha256=X9sNqSZyKennX-7Ne4c8yLnkbN13T5YpDUeri-wPOn4,54070
28
29
  not1mm/data/new_contest.ui,sha256=Xubngdbs_V_-o8huXzKOOaQOfj1NSXu9giIcaL4d0qk,21823
29
30
  not1mm/data/not1mm.html,sha256=c9-mfjMwDt4f5pySUruz2gREW33CQ2_rCddM2z5CZQo,23273
30
31
  not1mm/data/opon.ui,sha256=mC4OhoVIfR1H9IqHAKXliPMm8VOVmxSEadpsFQ7XnS4,2247
@@ -35,7 +36,8 @@ not1mm/data/radio_red.png,sha256=QvkMk7thd_hCEIyK5xGAG4xVVXivl39nwOfD8USDI20,957
35
36
  not1mm/data/reddot.png,sha256=M33jEMoU8W4rQ4_MVyzzKxDPDte1ypKBch5VnUMNLKE,565
36
37
  not1mm/data/settings.ui,sha256=7r4aZwxKUHQGm8NLQGLINurGMvT_5VMU9p2dznW25bA,40028
37
38
  not1mm/data/ssbmacros.txt,sha256=0Qccj4y0nlK-w5da9a9ti-jILkURtwztoDuL_D0pEJM,470
38
- not1mm/data/vfo.ui,sha256=71PziPIo7tpVbNQ4J4bpIgkCg67foZmdyCyUUeHOCHY,1874
39
+ not1mm/data/vfo.ui,sha256=f18m5r3gMbm0xtPJAZH1qVvOggK24XKBL7OGmip_Ks8,2405
40
+ not1mm/data/vfo2.ui,sha256=f18m5r3gMbm0xtPJAZH1qVvOggK24XKBL7OGmip_Ks8,2405
39
41
  not1mm/data/phonetics/0.wav,sha256=0OpYiR-3MK6fVHE6MB-HeOxSAPiDNMjqvx5JcIZtsQk,42590
40
42
  not1mm/data/phonetics/1.wav,sha256=OEAavA8cfVxFZwaT0HY9Wg9NAGEPKBhwhEdzGXkQs_U,30248
41
43
  not1mm/data/phonetics/2.wav,sha256=AmCfvo8y8BT9OlHkCs_N4y_mUAjmyG_x9ahbgiwU2FE,29584
@@ -85,57 +87,57 @@ not1mm/data/phonetics/y.wav,sha256=QINogHdj01-zkUX9E3fnVTzjGM8wc5F5NEGz-bSd3Ng,5
85
87
  not1mm/data/phonetics/yourcall.wav,sha256=4kheHJmCiRDL2kjhlgXQ8_u_eEMgKxiNGu5UBk9k08E,46510
86
88
  not1mm/data/phonetics/z.wav,sha256=arafCi7fwmBLdVDI-PRyaL4U-03PIQDhffwY5noJ_2c,51768
87
89
  not1mm/lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
88
- not1mm/lib/about.py,sha256=O9i8ypv2W9KZkPAp2bcRI0J5RgPE5R1vMfU8ZGlok_E,379
89
- not1mm/lib/cat_interface.py,sha256=fLiIzVk2azQPYNRPa1bLPkfMY6UogNmOu-aFHz26W5w,15122
90
- not1mm/lib/cwinterface.py,sha256=fZ5BXVyF7by0yGTJVznUTjRCxRt3lJaUIsNC-_mCGP4,3123
91
- not1mm/lib/database.py,sha256=YXtWgHE9vvEyTtc6S_Q6zWjVXm19rT_s9ubSmr0Qlqs,42486
92
- not1mm/lib/edit_contact.py,sha256=YwuX-BuIa7AuPtLRENs4jTzxOrtk6MCxZj3BR_bDPW8,357
93
- not1mm/lib/edit_macro.py,sha256=lyToZb1nmcONNFh6W35NzYHLU48gbAs2_OsnuRQGHck,559
94
- not1mm/lib/edit_opon.py,sha256=GqAOJMiC265_4YRVbkT1PflBuCa4HiCNfRhq8-J6ZVY,363
95
- not1mm/lib/edit_station.py,sha256=WGeFg-LuHdYzjzFh91bcOBFViv-D0Lzly3onfpcVyZQ,1973
96
- not1mm/lib/ham_utility.py,sha256=q4xyXD5Rtarn0TdbL7WGzLBiq94X1nMuPwbh_57x5_A,10975
97
- not1mm/lib/lookup.py,sha256=nuRyeUCcGOj0reBXcmPkGXCYGyKN5vsBD5xF8iE0fF8,13777
98
- not1mm/lib/multicast.py,sha256=VbKyppKVu6m2RN9prcd6jknEivr5hcDH0MAsnyAC9Gw,3000
99
- not1mm/lib/n1mm.py,sha256=O3U2dhOX-_5nBomyuiyfx-_GQk6rj067lwrcC9GtDpQ,5713
100
- not1mm/lib/new_contest.py,sha256=mHKNCS3iKOKN-bT9d8ZK3JemThOZFQ0ikfUSS0-ZTpY,354
90
+ not1mm/lib/about.py,sha256=3PSyHeNS9BIqhyY4QCm1a5Tzr7jMDOrkKnUWJh4j5lg,416
91
+ not1mm/lib/cat_interface.py,sha256=dr5bBcObNtRWVHr9A5kq9GCq0wQfOOfVhkrEAzJez90,15127
92
+ not1mm/lib/cwinterface.py,sha256=Seupz7tMkCvJ80mgmyaNU_1AUADsvNPkAfwDSlwibF0,3126
93
+ not1mm/lib/database.py,sha256=RQoj3JsTejMiiFIN42lY3N4jrj80htftdoFeRqVKnKs,42480
94
+ not1mm/lib/edit_contact.py,sha256=W4SrP3MHO0o87d02_9APx5pDaBPiCGwCNgMazTduFYA,353
95
+ not1mm/lib/edit_macro.py,sha256=1wyKiLYyTCvoVeIYRfZ7cu-OyfwDVEq6dsbeRyOdyXc,517
96
+ not1mm/lib/edit_opon.py,sha256=2_oJIpTbaXccPWvc4f9C_tRp2TFXHlhwL8xOvQrUmJI,359
97
+ not1mm/lib/edit_station.py,sha256=DQ-HW6RxIagyFHxj34-Ocbc5mXM11UsJ7ptXCreDeTQ,1964
98
+ not1mm/lib/ham_utility.py,sha256=pUrysod3wGk4BYOWDAKJxZZTiUNDE4ZzRk8S5ZnllNA,10978
99
+ not1mm/lib/lookup.py,sha256=WyLfb4i763fyRR9_QjV4eLexNxwsEcPUpuycevGuntw,13775
100
+ not1mm/lib/multicast.py,sha256=w4uFeZhjBFa_s5ltNGe2mTrG4r5xA2POtrxNLFKG8aQ,3196
101
+ not1mm/lib/n1mm.py,sha256=V1NiNyOHaPNYKe_vRsq44O1R42N8uS5PlfRa5Db4Tv0,5712
102
+ not1mm/lib/new_contest.py,sha256=EMiSYHijebaOZJBBJ2M94PZ9fmIr-EjonNPke2yEMto,350
101
103
  not1mm/lib/plugin_common.py,sha256=AAKBPCXzTWZJb-h08uPNnHVG7bSCg7kwukc211gFivY,8605
102
- not1mm/lib/select_contest.py,sha256=XQdRUkPAIHIMVsilm82M54b_v9yWpYrZ1nfInJrtZoo,363
103
- not1mm/lib/settings.py,sha256=t_JLJPnDBtMGAvJMAF1AL1eVB7MyucqlksVTU47yxvk,8933
104
- not1mm/lib/super_check_partial.py,sha256=YFc3_o2OdKMwQMlUAcKyZaLbvbSfMcSjWAAPUjd84uk,2258
105
- not1mm/lib/version.py,sha256=NverN5hpmAk3Ah6yKS1qYkPZvhf-HhWdM2eEqEOMf24,48
104
+ not1mm/lib/select_contest.py,sha256=Ezc7MTZXEbQ_nXK7gmghalqfbbDyxp0pAVt0-chBJOw,359
105
+ not1mm/lib/settings.py,sha256=9dyXiUZcrR57EVemGDrO2ad3HSMQbe5ngl_bxtZtEic,8877
106
+ not1mm/lib/super_check_partial.py,sha256=zX8OGNXP7GuigAG9bXyzTLG3_Ug5HqqzlZ1uPL6F8Ns,2299
107
+ not1mm/lib/version.py,sha256=xR-By9G65TFr0NJRvzJxtPVUkB6eBlNVpWZxRDFItUo,48
106
108
  not1mm/lib/versiontest.py,sha256=8vDNptuBBunn-1IGkjNaquehqBYUJyjrPSF8Igmd4_Y,1286
107
- not1mm/plugins/10_10_fall_cw.py,sha256=HUZ92o-zem0tUBvRDpQP904Y5eQd1FlGp3Ky0xOhVpA,10836
108
- not1mm/plugins/10_10_spring_cw.py,sha256=lrIHJns5tCVfnRVaA0ygw9SdbJkRFuGhwA6LacOHBlk,10842
109
- not1mm/plugins/10_10_summer_phone.py,sha256=JLlH1Ry6mvA69-DVYyBc_xKWUchPgj7nCs4TF4555NE,10850
110
- not1mm/plugins/10_10_winter_phone.py,sha256=b1aXJ-umbSMhtGXppPtGhgE00WoXzDWgkpku0btvKG8,10853
109
+ not1mm/plugins/10_10_fall_cw.py,sha256=pG0cFmTNOFO03wXcI1a3EEaT1QK83yWIsrSdqCOU-gg,10834
110
+ not1mm/plugins/10_10_spring_cw.py,sha256=aWTohVrnZpT0SlQuqq7zxQaYe4SExEkOl3NI8xYYJWI,10840
111
+ not1mm/plugins/10_10_summer_phone.py,sha256=HMJYIC8hxQbc31BJv6f1BaZora8YWrDvptQPabNvjk4,10848
112
+ not1mm/plugins/10_10_winter_phone.py,sha256=csiQlznP7yOBqEhoEHvd5LKQ_2NGJk8Tul3xTwZO-Ug,10851
111
113
  not1mm/plugins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
112
- not1mm/plugins/arrl_10m.py,sha256=iwUyELv5J2x4jq8j6vWmUh5K_SE9qZUIF9VnTr5mi4M,13645
113
- not1mm/plugins/arrl_dx_cw.py,sha256=Bhm82iykXpzUqFCq854d55Op_1KW5Gla3RZfU6dVvLk,13690
114
- not1mm/plugins/arrl_dx_ssb.py,sha256=dZDRZfRKJgMFtHNsSZo44IDLU6K8GYQI-YeRboOGHjg,13693
115
- not1mm/plugins/arrl_field_day.py,sha256=4tPFQZQirMD4YXAH1kYqnqaSsQ7jkoKROaioCZPADiE,10028
114
+ not1mm/plugins/arrl_10m.py,sha256=EUmP3LFDqhL2mJxhsvN3dPEXJpfiazAoVMKHBipVoas,13643
115
+ not1mm/plugins/arrl_dx_cw.py,sha256=cNdVo58bbllTM4HzxVtnpwnlcBFGbh83isWSrDPaIEE,13688
116
+ not1mm/plugins/arrl_dx_ssb.py,sha256=Qw-jgCJ7isiVr-8wyQ1xuWpLJN3qlDucy0621sDL2Uc,13691
117
+ not1mm/plugins/arrl_field_day.py,sha256=sMBVPoCUkL6_3YNRNWdrdQNvEBM1aXGlC_eEgRmrPLs,10026
116
118
  not1mm/plugins/arrl_rtty_ru.py,sha256=9v9wApmUZHAKX4t_O6hVqBnT7v5bqAGV8SjgDhfOuMs,7974
117
- not1mm/plugins/arrl_ss_cw.py,sha256=czRrTHa6599gafekqRqSFObupt7HE18Zy4d4icj-ngw,13145
118
- not1mm/plugins/arrl_ss_phone.py,sha256=raYIuUp0FIMv0ihC8x3EuQ8TdMGbl72W5zaZyinNF10,13151
119
- not1mm/plugins/arrl_vhf_jan.py,sha256=rrTYN3q4BVSO-8br-85ap15w6sTvcX6SvT0oSgPfnCU,12440
120
- not1mm/plugins/arrl_vhf_jun.py,sha256=z2g4usOtCSp0wNDEqX39QdEBlDVvJcmdMBQBNZy0K-A,11459
121
- not1mm/plugins/arrl_vhf_sep.py,sha256=CnWOU1rFZws--4CwMa0Qgo2J6UvPfqCL5eKz1-BzFqA,11459
122
- not1mm/plugins/canada_day.py,sha256=xuy0bJj0o0h0oNsbtC0rS-AGCx4Od0f8PtlTPXigiE8,11871
123
- not1mm/plugins/cq_160_cw.py,sha256=I3t1NWeaICbUeR0zIB4VLnQp5cMZeYbu6NgkBXCbu-w,14020
124
- not1mm/plugins/cq_160_ssb.py,sha256=5pZPTHZoduBr6g4L08WTCe3vCW-xkS0Gvys58R24wiE,14063
125
- not1mm/plugins/cq_wpx_cw.py,sha256=bm4WyYdItE0gQjA0G6itX-uOzZmH0szniZ0f_SiTdOI,12380
126
- not1mm/plugins/cq_wpx_ssb.py,sha256=gtsb5jcfr6bDzmYPlA7UNCtqbH22EGy1VI0ozX0DBgI,12468
127
- not1mm/plugins/cq_ww_cw.py,sha256=Py2NfZeEWWtB6PIXPYFlkd7BrTv1fpq86x_nUTf0RbQ,11085
128
- not1mm/plugins/cq_ww_ssb.py,sha256=W8cb_opy1dnXQbUgMPGx1sSfBJpAcGk-tTbgZMd_330,11090
129
- not1mm/plugins/cwt.py,sha256=8XBUOMg7Jfo_I2I6mc5QcX7q7zNtcBXMCuT7gMHrINU,11978
130
- not1mm/plugins/general_logging.py,sha256=naz16xAfjdWRm8B-dB_UBJ0NVjBuvbu98hDR1f7UgFk,3371
131
- not1mm/plugins/iaru_hf.py,sha256=ED_gtrl1-HztqrOG5_A3nhHlFd0Nf0U2YH7C95gYDZU,11435
132
- not1mm/plugins/jidx_cw.py,sha256=eu0LGX2iMbh70UCxRgr56HlVyW0DW7tLJV5zV0hJSgY,11051
133
- not1mm/plugins/jidx_ph.py,sha256=2A0ruAMLOn0Jvp7T7dzN8znaoGAiaNpWpU3PsQXlCE8,11053
134
- not1mm/plugins/naqp_cw.py,sha256=MwpIddEW7DtLUMHM7VqvZU4mhbzwf0mx_c-SyUBgMJA,11474
135
- not1mm/plugins/naqp_ssb.py,sha256=x5nVoeyRJWcmH6fcYclFGQywpIAEnBMVulfdiGMpdCo,11479
136
- not1mm/plugins/phone_weekly_test.py,sha256=eP4ChoQ7WqElOZIaiBI9XI0bnIHQb6qAHLeR1LzAplA,12280
137
- not1mm/plugins/stew_perry_topband.py,sha256=OPkvULiJ3MSxiVXwkZZFs7Qj0NQ9DaFq5g_RqSN3Vrg,10548
138
- not1mm/plugins/winter_field_day.py,sha256=ReA5HufYryFz9nd4Aa3V-FGKBXwdUu-rDZsLlaKt8NY,10214
119
+ not1mm/plugins/arrl_ss_cw.py,sha256=epwosJmLhrVBY5lVdRkT_z8vJzxUxbmwiK1PJz_LLzQ,13143
120
+ not1mm/plugins/arrl_ss_phone.py,sha256=oVw2z1IEc6-7GU-JM2PiOE83tob5JJcHXYPMf03x6fQ,13149
121
+ not1mm/plugins/arrl_vhf_jan.py,sha256=zGFYQ83F9tt-zM_1oL5n8c0gAyvekxF7WPAAEA79GT0,12438
122
+ not1mm/plugins/arrl_vhf_jun.py,sha256=zpIUoGIlRK9UN9BhhzfZlgfxvEJXO1Xl0U_CaD7doXI,11457
123
+ not1mm/plugins/arrl_vhf_sep.py,sha256=a3i5wmVWkEfo4A_3Hi4WS-6dQBCXdV_62SHhYTMclR4,11457
124
+ not1mm/plugins/canada_day.py,sha256=oyIPi73IoiF3-puYzcvXLVkchAeqemRvhHZPZvdICzc,11869
125
+ not1mm/plugins/cq_160_cw.py,sha256=I-z7Z3R3jEPL6qBChY9H4F3AW_gvEdrkYuDQ2EmtO2o,14018
126
+ not1mm/plugins/cq_160_ssb.py,sha256=nxIVfpF_QGR0gige5lUf1oEYRpT05eWtxCNUA7sjW_4,14061
127
+ not1mm/plugins/cq_wpx_cw.py,sha256=Ftw08EU8vYUIYgzJ-Olkt-qCWtfyBtFEGACQV-GMjA0,12378
128
+ not1mm/plugins/cq_wpx_ssb.py,sha256=zMh31RweV6EIORLfMUHFKzg7v4d-43H_N75r6wCLx2I,12466
129
+ not1mm/plugins/cq_ww_cw.py,sha256=gQ5XUfRXHER7dJzAbv8xx6WKlbNzoT0VmEmxYnMENpw,11083
130
+ not1mm/plugins/cq_ww_ssb.py,sha256=dsE-KIDk2_Zpx-x8R7LwAMpP0lNn5D0qz3okZ_iS-YM,11088
131
+ not1mm/plugins/cwt.py,sha256=abiNdx8lPSONkoSQZI-tV3nL2tMOgybOEY9LErqiAww,11976
132
+ not1mm/plugins/general_logging.py,sha256=kC3Gl-dxV9FwzkjOTLQwS3eHx3LLNrq6s5jPuT4Qn00,3369
133
+ not1mm/plugins/iaru_hf.py,sha256=M5c8FiyMyoIcUkV5-g5-nZ-ufW0ug4hTwVmY2awJY_c,11433
134
+ not1mm/plugins/jidx_cw.py,sha256=qHNJW6OnXzBdFQiL0Ua9c7cWkQuTPyKCDibma1OwumE,11049
135
+ not1mm/plugins/jidx_ph.py,sha256=UbawmW7obhjkRLa43V8o8rdkfReIKp_SM7k3EeLxAN8,11051
136
+ not1mm/plugins/naqp_cw.py,sha256=73aTpREZVtDqfEGYLGekqRLksEenpJ7EkIyZ2Zs4DMM,11472
137
+ not1mm/plugins/naqp_ssb.py,sha256=pof1k6Eg_MDQXSaCOJLh1jfVyyIri0LdHYrZQu7P_gs,11477
138
+ not1mm/plugins/phone_weekly_test.py,sha256=EfLQzKREEXO_Ljg-q3VWg87JfbPVar9ydNhCdmHCrt8,12278
139
+ not1mm/plugins/stew_perry_topband.py,sha256=bjcImkZhBXpw4XKogs85mpShz7QgYbVohvhFMQ050DI,10546
140
+ not1mm/plugins/winter_field_day.py,sha256=7JK-RS1abcj1xQLnTF8rIPHRpDzmp4sAFBBML8b-Lwk,10212
139
141
  not1mm/testing/fakeflrig.py,sha256=_vJHGjARpSNxSZngkHNO_kkHoVnqtf--T6gwTAYnnZQ,2083
140
142
  not1mm/testing/flrigclient.py,sha256=24r_0HqpoTjyJ6Bqg_HIC8Nn9wjtnwwWQ26I7UprwgA,1658
141
143
  not1mm/testing/multicast_listener.py,sha256=2CkiyZ4EQxBX68_1QzGIX9g_UB9-CQq63OH-pUY3FiU,1051
@@ -145,9 +147,9 @@ not1mm/testing/test.py,sha256=97xdCpTVIWx1CUMU7JBrn9PMU7DqWnz6zO96XificC4,99
145
147
  testing/detectdark.py,sha256=d2oUDqLkDLMCTFjW3lSJgaf-PgLDrk71gw2Cess5itY,895
146
148
  testing/test.py,sha256=VkkKwKTJ4lqB7ozS9OEqy3NH67xU-_Dq0xkixKUdjrY,312
147
149
  usb_vfo_knob/code.py,sha256=h59iPPlcYbkXmRcYPQHDBP0yfLEl7fY3VkiIszdQeyI,1057
148
- not1mm-24.3.19.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
149
- not1mm-24.3.19.dist-info/METADATA,sha256=4U1PwcCWaTk9MpFeh3FJWi43udD7kUuQj80LhoF07D0,26059
150
- not1mm-24.3.19.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
151
- not1mm-24.3.19.dist-info/entry_points.txt,sha256=pMcZk_0dxFgLkcUkF0Q874ojpwOmF3OL6EKw9LgvocM,47
152
- not1mm-24.3.19.dist-info/top_level.txt,sha256=PBUZJeDgW5ta7ghk__UYh_ygOFIhe9ymJDaxEuVumFU,28
153
- not1mm-24.3.19.dist-info/RECORD,,
150
+ not1mm-24.3.21.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
151
+ not1mm-24.3.21.dist-info/METADATA,sha256=wCb8l8Lz7tCkN5j0ACgHDn-_P8LMfIyWN4zPqx0VeYg,26168
152
+ not1mm-24.3.21.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
153
+ not1mm-24.3.21.dist-info/entry_points.txt,sha256=pMcZk_0dxFgLkcUkF0Q874ojpwOmF3OL6EKw9LgvocM,47
154
+ not1mm-24.3.21.dist-info/top_level.txt,sha256=PBUZJeDgW5ta7ghk__UYh_ygOFIhe9ymJDaxEuVumFU,28
155
+ not1mm-24.3.21.dist-info/RECORD,,