not1mm 24.4.2.1__py3-none-any.whl → 24.4.4.1__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 (42) hide show
  1. not1mm/__main__.py +63 -15
  2. not1mm/data/main.ui +12 -1
  3. not1mm/lib/new_contest.py +11 -0
  4. not1mm/lib/version.py +1 -1
  5. not1mm/plugins/10_10_fall_cw.py +2 -0
  6. not1mm/plugins/10_10_spring_cw.py +2 -0
  7. not1mm/plugins/10_10_summer_phone.py +2 -0
  8. not1mm/plugins/10_10_winter_phone.py +2 -0
  9. not1mm/plugins/arrl_10m.py +2 -0
  10. not1mm/plugins/arrl_dx_cw.py +2 -0
  11. not1mm/plugins/arrl_dx_ssb.py +2 -0
  12. not1mm/plugins/arrl_field_day.py +2 -0
  13. not1mm/plugins/arrl_rtty_ru.py +2 -0
  14. not1mm/plugins/arrl_ss_cw.py +2 -5
  15. not1mm/plugins/arrl_ss_phone.py +2 -5
  16. not1mm/plugins/arrl_vhf_jan.py +2 -0
  17. not1mm/plugins/arrl_vhf_jun.py +2 -0
  18. not1mm/plugins/arrl_vhf_sep.py +2 -0
  19. not1mm/plugins/canada_day.py +2 -0
  20. not1mm/plugins/cq_160_cw.py +2 -0
  21. not1mm/plugins/cq_160_ssb.py +2 -0
  22. not1mm/plugins/cq_wpx_cw.py +2 -0
  23. not1mm/plugins/cq_wpx_ssb.py +2 -0
  24. not1mm/plugins/cq_ww_cw.py +2 -0
  25. not1mm/plugins/cq_ww_ssb.py +2 -0
  26. not1mm/plugins/cwt.py +3 -0
  27. not1mm/plugins/general_logging.py +1 -1
  28. not1mm/plugins/iaru_hf.py +2 -0
  29. not1mm/plugins/jidx_cw.py +2 -0
  30. not1mm/plugins/jidx_ph.py +2 -0
  31. not1mm/plugins/naqp_cw.py +2 -0
  32. not1mm/plugins/naqp_ssb.py +2 -0
  33. not1mm/plugins/phone_weekly_test.py +2 -0
  34. not1mm/plugins/stew_perry_topband.py +1 -0
  35. not1mm/plugins/winter_field_day.py +2 -0
  36. not1mm/vfo.py +2 -1
  37. {not1mm-24.4.2.1.dist-info → not1mm-24.4.4.1.dist-info}/METADATA +3 -1
  38. {not1mm-24.4.2.1.dist-info → not1mm-24.4.4.1.dist-info}/RECORD +42 -42
  39. {not1mm-24.4.2.1.dist-info → not1mm-24.4.4.1.dist-info}/LICENSE +0 -0
  40. {not1mm-24.4.2.1.dist-info → not1mm-24.4.4.1.dist-info}/WHEEL +0 -0
  41. {not1mm-24.4.2.1.dist-info → not1mm-24.4.4.1.dist-info}/entry_points.txt +0 -0
  42. {not1mm-24.4.2.1.dist-info → not1mm-24.4.4.1.dist-info}/top_level.txt +0 -0
not1mm/__main__.py CHANGED
@@ -484,6 +484,40 @@ class MainWindow(QtWidgets.QMainWindow):
484
484
  if self.pref.get("contest"):
485
485
  self.load_contest()
486
486
 
487
+ self.actionLog_Window.setChecked(self.pref.get("logwindow", False))
488
+ if self.log_window:
489
+ self.log_window.close()
490
+ if self.actionLog_Window.isChecked():
491
+ self.log_window = LogWindow()
492
+ self.addDockWidget(Qt.DockWidgetArea.BottomDockWidgetArea, self.log_window)
493
+ self.log_window.show()
494
+
495
+ self.actionBandmap.setChecked(self.pref.get("bandmapwindow", False))
496
+ if self.bandmap_window:
497
+ self.bandmap_window.close()
498
+ if self.actionBandmap.isChecked():
499
+ self.bandmap_window = BandMapWindow()
500
+ self.addDockWidget(
501
+ Qt.DockWidgetArea.RightDockWidgetArea, self.bandmap_window
502
+ )
503
+ self.bandmap_window.show()
504
+
505
+ self.actionCheck_Window.setChecked(self.pref.get("checkwindow", False))
506
+ if self.check_window:
507
+ self.check_window.close()
508
+ if self.actionCheck_Window.isChecked():
509
+ self.check_window = CheckWindow()
510
+ self.addDockWidget(Qt.DockWidgetArea.RightDockWidgetArea, self.check_window)
511
+ self.check_window.show()
512
+
513
+ self.actionVFO.setChecked(self.pref.get("vfowindow", False))
514
+ if self.vfo_window:
515
+ self.vfo_window.close()
516
+ if self.actionVFO.isChecked():
517
+ self.vfo_window = VfoWindow()
518
+ self.addDockWidget(Qt.DockWidgetArea.RightDockWidgetArea, self.vfo_window)
519
+ self.vfo_window.show()
520
+
487
521
  if not DEBUG_ENABLED:
488
522
  if VersionTest(__version__).test():
489
523
  self.show_message_box(
@@ -1389,35 +1423,49 @@ class MainWindow(QtWidgets.QMainWindow):
1389
1423
 
1390
1424
  def launch_log_window(self) -> None:
1391
1425
  """Launch the log window"""
1426
+ self.pref["logwindow"] = self.actionLog_Window.isChecked()
1427
+ self.write_preference()
1392
1428
  if self.log_window:
1393
1429
  self.log_window.close()
1394
- self.log_window = LogWindow()
1395
- self.addDockWidget(Qt.DockWidgetArea.BottomDockWidgetArea, self.log_window)
1396
- self.log_window.show()
1430
+ if self.actionLog_Window.isChecked():
1431
+ self.log_window = LogWindow()
1432
+ self.addDockWidget(Qt.DockWidgetArea.BottomDockWidgetArea, self.log_window)
1433
+ self.log_window.show()
1397
1434
 
1398
1435
  def launch_bandmap_window(self) -> None:
1399
1436
  """Launch the bandmap window"""
1437
+ self.pref["bandmapwindow"] = self.actionBandmap.isChecked()
1438
+ self.write_preference()
1400
1439
  if self.bandmap_window:
1401
1440
  self.bandmap_window.close()
1402
- self.bandmap_window = BandMapWindow()
1403
- self.addDockWidget(Qt.DockWidgetArea.RightDockWidgetArea, self.bandmap_window)
1404
- self.bandmap_window.show()
1441
+ if self.actionBandmap.isChecked():
1442
+ self.bandmap_window = BandMapWindow()
1443
+ self.addDockWidget(
1444
+ Qt.DockWidgetArea.RightDockWidgetArea, self.bandmap_window
1445
+ )
1446
+ self.bandmap_window.show()
1405
1447
 
1406
1448
  def launch_check_window(self) -> None:
1407
1449
  """Launch the check window"""
1450
+ self.pref["checkwindow"] = self.actionCheck_Window.isChecked()
1451
+ self.write_preference()
1408
1452
  if self.check_window:
1409
1453
  self.check_window.close()
1410
- self.check_window = CheckWindow()
1411
- self.addDockWidget(Qt.DockWidgetArea.RightDockWidgetArea, self.check_window)
1412
- self.check_window.show()
1454
+ if self.actionCheck_Window.isChecked():
1455
+ self.check_window = CheckWindow()
1456
+ self.addDockWidget(Qt.DockWidgetArea.RightDockWidgetArea, self.check_window)
1457
+ self.check_window.show()
1413
1458
 
1414
1459
  def launch_vfo(self) -> None:
1415
1460
  """Launch the VFO window"""
1461
+ self.pref["vfowindow"] = self.actionVFO.isChecked()
1462
+ self.write_preference()
1416
1463
  if self.vfo_window:
1417
1464
  self.vfo_window.close()
1418
- self.vfo_window = VfoWindow()
1419
- self.addDockWidget(Qt.DockWidgetArea.RightDockWidgetArea, self.vfo_window)
1420
- self.vfo_window.show()
1465
+ if self.actionVFO.isChecked():
1466
+ self.vfo_window = VfoWindow()
1467
+ self.addDockWidget(Qt.DockWidgetArea.RightDockWidgetArea, self.vfo_window)
1468
+ self.vfo_window.show()
1421
1469
 
1422
1470
  def clear_band_indicators(self) -> None:
1423
1471
  """
@@ -3181,9 +3229,9 @@ class MainWindow(QtWidgets.QMainWindow):
3181
3229
  )
3182
3230
  try:
3183
3231
  fsutils.openFileWithOS(fsutils.USER_DATA_PATH / macro_file)
3184
- except:
3185
- logger.exception(
3186
- f"Could not open file {fsutils.USER_DATA_PATH / macro_file}"
3232
+ except FileNotFoundError | PermissionError | OSError as err:
3233
+ logger.critical(
3234
+ f"Could not open file {fsutils.USER_DATA_PATH / macro_file} {err}"
3187
3235
  )
3188
3236
 
3189
3237
  def read_cw_macros(self) -> None:
not1mm/data/main.ui CHANGED
@@ -894,7 +894,6 @@
894
894
  <item>
895
895
  <widget class="QFrame" name="Button_Row1">
896
896
  <layout class="QHBoxLayout" name="ButtonRow1">
897
-
898
897
  <property name="sizeConstraint">
899
898
  <enum>QLayout::SetNoConstraint</enum>
900
899
  </property>
@@ -1543,6 +1542,9 @@
1543
1542
  </property>
1544
1543
  </action>
1545
1544
  <action name="actionLog_Window">
1545
+ <property name="checkable">
1546
+ <bool>true</bool>
1547
+ </property>
1546
1548
  <property name="text">
1547
1549
  <string>QSO Log</string>
1548
1550
  </property>
@@ -1708,6 +1710,9 @@
1708
1710
  </property>
1709
1711
  </action>
1710
1712
  <action name="actionBandmap">
1713
+ <property name="checkable">
1714
+ <bool>true</bool>
1715
+ </property>
1711
1716
  <property name="text">
1712
1717
  <string>Bandmap</string>
1713
1718
  </property>
@@ -1743,11 +1748,17 @@
1743
1748
  </property>
1744
1749
  </action>
1745
1750
  <action name="actionCheck_Window">
1751
+ <property name="checkable">
1752
+ <bool>true</bool>
1753
+ </property>
1746
1754
  <property name="text">
1747
1755
  <string>Check Partial</string>
1748
1756
  </property>
1749
1757
  </action>
1750
1758
  <action name="actionVFO">
1759
+ <property name="checkable">
1760
+ <bool>true</bool>
1761
+ </property>
1751
1762
  <property name="text">
1752
1763
  <string>VFO</string>
1753
1764
  </property>
not1mm/lib/new_contest.py CHANGED
@@ -1,5 +1,6 @@
1
1
  """New Contest Dialog"""
2
2
 
3
+ import importlib
3
4
  from PyQt6 import QtWidgets, uic
4
5
 
5
6
 
@@ -10,6 +11,16 @@ class NewContest(QtWidgets.QDialog):
10
11
  super().__init__(None)
11
12
  uic.loadUi(app_data_path / "new_contest.ui", self)
12
13
  self.buttonBox.clicked.connect(self.store)
14
+ self.contest.currentTextChanged.connect(self.add_exchange_hint)
13
15
 
14
16
  def store(self):
15
17
  """dialog magic"""
18
+
19
+ def add_exchange_hint(self):
20
+ """add hint"""
21
+ contest_name = self.contest.currentText().lower().replace(" ", "_")
22
+ temp = importlib.import_module(f"not1mm.plugins.{contest_name}")
23
+ if hasattr(temp, "EXCHANGE_HINT"):
24
+ self.exchange.setPlaceholderText(temp.EXCHANGE_HINT)
25
+ else:
26
+ self.exchange.setPlaceholderText("")
not1mm/lib/version.py CHANGED
@@ -1,3 +1,3 @@
1
1
  """It's the version"""
2
2
 
3
- __version__ = "24.4.2.1"
3
+ __version__ = "24.4.4.1"
@@ -13,6 +13,8 @@ from not1mm.lib.version import __version__
13
13
 
14
14
  logger = logging.getLogger(__name__)
15
15
 
16
+ EXCHANGE_HINT = "Name + 10-10# + SPC"
17
+
16
18
  name = "10 10 FALL CW"
17
19
  cabrillo_name = "10-10-FALL-CW"
18
20
  mode = "CW" # CW SSB BOTH RTTY
@@ -12,6 +12,8 @@ from not1mm.lib.version import __version__
12
12
 
13
13
  logger = logging.getLogger(__name__)
14
14
 
15
+ EXCHANGE_HINT = "Name + 10-10# + SPC"
16
+
15
17
  name = "10 10 SPRING CW"
16
18
  cabrillo_name = "10-10-SPRING-CW"
17
19
  mode = "CW" # CW SSB BOTH RTTY
@@ -14,6 +14,8 @@ from not1mm.lib.version import __version__
14
14
 
15
15
  logger = logging.getLogger(__name__)
16
16
 
17
+ EXCHANGE_HINT = "Name + 10-10# + SPC"
18
+
17
19
  name = "10 10 SUMMER PHONE"
18
20
  cabrillo_name = "10-10-SUMMER-PHONE"
19
21
  mode = "SSB" # CW SSB BOTH RTTY
@@ -14,6 +14,8 @@ from not1mm.lib.version import __version__
14
14
 
15
15
  logger = logging.getLogger(__name__)
16
16
 
17
+ EXCHANGE_HINT = "Name + 10-10# + SPC"
18
+
17
19
  name = "10 10 WINTER PHONE"
18
20
  cabrillo_name = "10-10-WINTER-PHONE"
19
21
  mode = "SSB" # CW SSB BOTH RTTY
@@ -57,6 +57,8 @@ from not1mm.lib.version import __version__
57
57
 
58
58
  logger = logging.getLogger(__name__)
59
59
 
60
+ EXCHANGE_HINT = "State/Province"
61
+
60
62
  name = "ARRL 10M"
61
63
  mode = "BOTH" # CW SSB BOTH RTTY
62
64
  cabrillo_name = "ARRL-10"
@@ -15,6 +15,8 @@ from not1mm.lib.version import __version__
15
15
 
16
16
  logger = logging.getLogger(__name__)
17
17
 
18
+ EXCHANGE_HINT = "State/Province"
19
+
18
20
  name = "ARRL DX CW"
19
21
  cabrillo_name = "ARRL-DX-CW"
20
22
  mode = "CW" # CW SSB BOTH RTTY
@@ -15,6 +15,8 @@ from not1mm.lib.version import __version__
15
15
 
16
16
  logger = logging.getLogger(__name__)
17
17
 
18
+ EXCHANGE_HINT = "State/Province"
19
+
18
20
  name = "ARRL DX SSB"
19
21
  cabrillo_name = "ARRL-DX-SSB"
20
22
  mode = "SSB" # CW SSB BOTH RTTY
@@ -13,6 +13,8 @@ from not1mm.lib.version import __version__
13
13
 
14
14
  logger = logging.getLogger(__name__)
15
15
 
16
+ EXCHANGE_HINT = "1D ORG"
17
+
16
18
  name = "ARRL Field Day"
17
19
  mode = "BOTH" # CW SSB BOTH RTTY
18
20
  cabrillo_name = "ARRL-FD"
@@ -8,6 +8,8 @@ from pathlib import Path
8
8
 
9
9
  from PyQt6 import QtWidgets
10
10
 
11
+ EXCHANGE_HINT = ""
12
+
11
13
  name = "ARRL RTTY Round Up"
12
14
  cabrillo_name = "ARRL-RTTY"
13
15
  mode = "BOTH" # CW SSB BOTH RTTY
@@ -14,6 +14,8 @@ from not1mm.lib.version import __version__
14
14
 
15
15
  logger = logging.getLogger(__name__)
16
16
 
17
+ EXCHANGE_HINT = "Prec Call Check Section"
18
+
17
19
  name = "ARRL Sweepstakes CW"
18
20
  cabrillo_name = "ARRL-SS-CW"
19
21
  mode = "CW" # CW SSB BOTH RTTY
@@ -381,23 +383,19 @@ def parse_exchange(self):
381
383
  for tokens in exchange.split():
382
384
  text = ""
383
385
  numb = ""
384
- print(f"'{tokens}'")
385
386
  if tokens.isdigit():
386
- print(f"{tokens} is digits")
387
387
  if sn == "":
388
388
  sn = tokens
389
389
  else:
390
390
  ck = tokens
391
391
  continue
392
392
  elif tokens.isalpha():
393
- print(f"{tokens} is alpha")
394
393
  if len(tokens) == 1:
395
394
  prec = tokens
396
395
  else:
397
396
  sec = tokens
398
397
  continue
399
398
  elif tokens.isalnum():
400
- print("isalnum")
401
399
  if tokens[:1].isalpha():
402
400
  print(f"{tokens} is callsign")
403
401
  call = tokens
@@ -406,7 +404,6 @@ def parse_exchange(self):
406
404
  if c.isalpha():
407
405
  text = tokens[i:]
408
406
  numb = tokens[:i]
409
- print(f"{tokens[:i]} {tokens[i:]}")
410
407
  break
411
408
  if len(text) == 1:
412
409
  prec = text
@@ -14,6 +14,8 @@ from not1mm.lib.version import __version__
14
14
 
15
15
  logger = logging.getLogger(__name__)
16
16
 
17
+ EXCHANGE_HINT = "Prec Call Check Section"
18
+
17
19
  name = "ARRL Sweepstakes Phone"
18
20
  cabrillo_name = "ARRL-SS-SSB"
19
21
  mode = "SSB" # CW SSB BOTH RTTY
@@ -383,30 +385,25 @@ def parse_exchange(self):
383
385
  numb = ""
384
386
  print(f"'{tokens}'")
385
387
  if tokens.isdigit():
386
- print(f"{tokens} is digits")
387
388
  if sn == "":
388
389
  sn = tokens
389
390
  else:
390
391
  ck = tokens
391
392
  continue
392
393
  elif tokens.isalpha():
393
- print(f"{tokens} is alpha")
394
394
  if len(tokens) == 1:
395
395
  prec = tokens
396
396
  else:
397
397
  sec = tokens
398
398
  continue
399
399
  elif tokens.isalnum():
400
- print("isalnum")
401
400
  if tokens[:1].isalpha():
402
- print(f"{tokens} is callsign")
403
401
  call = tokens
404
402
  continue
405
403
  for i, c in enumerate(tokens):
406
404
  if c.isalpha():
407
405
  text = tokens[i:]
408
406
  numb = tokens[:i]
409
- print(f"{tokens[:i]} {tokens[i:]}")
410
407
  break
411
408
  if len(text) == 1:
412
409
  prec = text
@@ -48,6 +48,8 @@ from not1mm.lib.version import __version__
48
48
 
49
49
  logger = logging.getLogger(__name__)
50
50
 
51
+ EXCHANGE_HINT = "4-character grid square"
52
+
51
53
  name = "ARRL VHF JAN"
52
54
  mode = "BOTH" # CW SSB BOTH RTTY
53
55
  cabrillo_name = "ARRL-VHF-JAN"
@@ -16,6 +16,8 @@ from not1mm.lib.version import __version__
16
16
 
17
17
  logger = logging.getLogger(__name__)
18
18
 
19
+ EXCHANGE_HINT = "4-character grid square"
20
+
19
21
  name = "ARRL VHF JUN"
20
22
  mode = "BOTH" # CW SSB BOTH RTTY
21
23
  cabrillo_name = "ARRL-VHF-JUN"
@@ -16,6 +16,8 @@ from not1mm.lib.version import __version__
16
16
 
17
17
  logger = logging.getLogger(__name__)
18
18
 
19
+ EXCHANGE_HINT = "4-character grid square"
20
+
19
21
  name = "ARRL VHF SEP"
20
22
  mode = "BOTH" # CW SSB BOTH RTTY
21
23
  cabrillo_name = "ARRL-VHF-SEP"
@@ -14,6 +14,8 @@ from not1mm.lib.version import __version__
14
14
 
15
15
  logger = logging.getLogger(__name__)
16
16
 
17
+ EXCHANGE_HINT = "Province/Territory"
18
+
17
19
  name = "CANADA DAY"
18
20
  cabrillo_name = "CANADA-DAY"
19
21
  mode = "BOTH" # CW SSB BOTH RTTY
@@ -15,6 +15,8 @@ from not1mm.lib.version import __version__
15
15
 
16
16
  logger = logging.getLogger(__name__)
17
17
 
18
+ EXCHANGE_HINT = "ST/Prov or DX CQ Zone"
19
+
18
20
  name = "CQ 160 CW"
19
21
  cabrillo_name = "CQ-160-CW"
20
22
  mode = "CW" # CW SSB BOTH RTTY
@@ -15,6 +15,8 @@ from not1mm.lib.version import __version__
15
15
 
16
16
  logger = logging.getLogger(__name__)
17
17
 
18
+ EXCHANGE_HINT = "ST/Prov or DX CQ Zone"
19
+
18
20
  name = "CQ 160 SSB"
19
21
  cabrillo_name = "CQ-160-SSB"
20
22
  mode = "SSB" # CW SSB BOTH RTTY
@@ -14,6 +14,8 @@ from not1mm.lib.version import __version__
14
14
 
15
15
  logger = logging.getLogger(__name__)
16
16
 
17
+ EXCHANGE_HINT = "#"
18
+
17
19
  name = "CQ WPX CW"
18
20
  cabrillo_name = "CQ-WPX-CW"
19
21
  mode = "CW" # CW SSB BOTH RTTY
@@ -14,6 +14,8 @@ from not1mm.lib.version import __version__
14
14
 
15
15
  logger = logging.getLogger(__name__)
16
16
 
17
+ EXCHANGE_HINT = "#"
18
+
17
19
  name = "CQ WPX SSB"
18
20
  cabrillo_name = "CQ-WPX-SSB"
19
21
  mode = "SSB" # CW SSB BOTH RTTY
@@ -14,6 +14,8 @@ from not1mm.lib.version import __version__
14
14
 
15
15
  logger = logging.getLogger(__name__)
16
16
 
17
+ EXCHANGE_HINT = "CQ Zone No."
18
+
17
19
  name = "CQ WW CW"
18
20
  cabrillo_name = "CQ-WW-CW"
19
21
  mode = "CW" # CW SSB BOTH RTTY
@@ -14,6 +14,8 @@ from not1mm.lib.version import __version__
14
14
 
15
15
  logger = logging.getLogger(__name__)
16
16
 
17
+ EXCHANGE_HINT = "CQ Zone No."
18
+
17
19
  name = "CQ WW SSB"
18
20
  cabrillo_name = "CQ-WW-SSB"
19
21
  mode = "SSB" # CW SSB BOTH RTTY
not1mm/plugins/cwt.py CHANGED
@@ -13,6 +13,9 @@ from not1mm.lib.plugin_common import gen_adif, get_points
13
13
  from not1mm.lib.version import __version__
14
14
 
15
15
  logger = logging.getLogger(__name__)
16
+
17
+ EXCHANGE_HINT = "Name + Member No./'CWA'"
18
+
16
19
  name = "CWT"
17
20
  mode = "CW" # CW SSB BOTH RTTY
18
21
  # columns = [0, 1, 2, 3, 4, 5, 6, 11, 15]
@@ -10,7 +10,7 @@ from not1mm.lib.plugin_common import gen_adif, get_points
10
10
  from not1mm.lib.version import __version__
11
11
 
12
12
  logger = logging.getLogger(__name__)
13
-
13
+ EXCHANGE_HINT = ""
14
14
  name = "General Logging"
15
15
  cabrillo_name = "General-Logging"
16
16
  mode = "BOTH" # CW SSB BOTH RTTY
not1mm/plugins/iaru_hf.py CHANGED
@@ -27,6 +27,8 @@ from not1mm.lib.version import __version__
27
27
 
28
28
  logger = logging.getLogger(__name__)
29
29
 
30
+ EXCHANGE_HINT = "ITU Zone"
31
+
30
32
  name = "IARU HF"
31
33
  cabrillo_name = "IARU-HF"
32
34
  mode = "BOTH" # CW SSB BOTH RTTY
not1mm/plugins/jidx_cw.py CHANGED
@@ -14,6 +14,8 @@ from not1mm.lib.version import __version__
14
14
 
15
15
  logger = logging.getLogger(__name__)
16
16
 
17
+ EXCHANGE_HINT = "Prefecture or CQ Zone"
18
+
17
19
  name = "JIDX CW"
18
20
  cabrillo_name = "JIDX-CW"
19
21
  mode = "CW" # CW SSB BOTH RTTY
not1mm/plugins/jidx_ph.py CHANGED
@@ -14,6 +14,8 @@ from not1mm.lib.version import __version__
14
14
 
15
15
  logger = logging.getLogger(__name__)
16
16
 
17
+ EXCHANGE_HINT = "Prefecture or CQ Zone"
18
+
17
19
  name = "JIDX PH"
18
20
  cabrillo_name = "JIDX-PH"
19
21
  mode = "SSB" # CW SSB BOTH RTTY
not1mm/plugins/naqp_cw.py CHANGED
@@ -15,6 +15,8 @@ from not1mm.lib.version import __version__
15
15
 
16
16
  logger = logging.getLogger(__name__)
17
17
 
18
+ EXCHANGE_HINT = "Name or Name + SPC"
19
+
18
20
  name = "NAQP CW"
19
21
  cabrillo_name = "NAQP-CW"
20
22
  mode = "CW" # CW SSB BOTH RTTY
@@ -15,6 +15,8 @@ from not1mm.lib.version import __version__
15
15
 
16
16
  logger = logging.getLogger(__name__)
17
17
 
18
+ EXCHANGE_HINT = "Name or Name + SPC"
19
+
18
20
  name = "NAQP SSB"
19
21
  cabrillo_name = "NAQP-SSB"
20
22
  mode = "SSB" # CW SSB BOTH RTTY
@@ -37,6 +37,8 @@ from not1mm.lib.version import __version__
37
37
 
38
38
  logger = logging.getLogger(__name__)
39
39
 
40
+ EXCHANGE_HINT = "Name or Name + SPC"
41
+
40
42
  name = "PHONE WEEKLY TEST"
41
43
  cabrillo_name = "PHONE-WEEKLY-TEST"
42
44
  mode = "SSB" # CW SSB BOTH RTTY
@@ -39,6 +39,7 @@ from not1mm.lib.ham_utility import distance
39
39
 
40
40
  logger = logging.getLogger(__name__)
41
41
 
42
+ EXCHANGE_HINT = "4-Character grid square"
42
43
  cabrillo_name = "STEW-PERRY"
43
44
  name = "Stew Perry Topband"
44
45
 
@@ -12,6 +12,8 @@ from not1mm.lib.version import __version__
12
12
 
13
13
  logger = logging.getLogger(__name__)
14
14
 
15
+ EXCHANGE_HINT = "1O ORG"
16
+
15
17
  cabrillo_name = "WFD"
16
18
  name = "Winter Field Day"
17
19
  # 1 once per contest, 2 work each band, 3 each band/mode, 4 no dupe checking
not1mm/vfo.py CHANGED
@@ -328,7 +328,8 @@ class VfoWindow(QDockWidget):
328
328
  Display an alert box with the supplied message.
329
329
  """
330
330
  message_box = QtWidgets.QMessageBox()
331
- message_box.setPalette(self.current_palette)
331
+ if self.current_palette:
332
+ message_box.setPalette(self.current_palette)
332
333
  message_box.setIcon(QtWidgets.QMessageBox.Icon.Information)
333
334
  message_box.setText(message)
334
335
  message_box.setWindowTitle("Information")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: not1mm
3
- Version: 24.4.2.1
3
+ Version: 24.4.4.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
@@ -177,6 +177,8 @@ I wish to thank those who've contributed to the project.
177
177
 
178
178
  ## Recent Changes
179
179
 
180
+ - [24-4-4-1] Made docking widgets open state persistent.
181
+ - [24-4-4] Added per-contest echange hint when adding new contest.
180
182
  - [24-4-2] Migrated to PyQt6. I'm sure there are broken things.
181
183
  - [24-4-1-2] Added color text indicators to the Check Partial window. Poached the code from @kyleboyle. Thanks! Fixed the Log, VFO and Check Partial windows to be actual docking widgets. Refocus call field after double clicking on item in the check partial window.
182
184
  - [24-4-1] Removed some un-needed loops and widgets from the check window. Fixed docking to the left side.
@@ -1,10 +1,10 @@
1
1
  not1mm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- not1mm/__main__.py,sha256=5Nua-ZRvIZDsQAepkqw5anj0eHnWvZK1bnzrcnE5fOc,119800
2
+ not1mm/__main__.py,sha256=B-r1r8Do8Vw4FsyzgyB4P_KPU9LTlNTrmueknGmmI28,121967
3
3
  not1mm/bandmap.py,sha256=-wHbUmj-zqefyFO_ydLECwTtWcs37tSkA7Xm2zOVcLA,34318
4
4
  not1mm/checkwindow.py,sha256=ncIOZmuhM_eLR1gb-St8FqEefbUkD9p9VltFDJVxLeY,10465
5
5
  not1mm/fsutils.py,sha256=Li8Tq9K7c_q7onOHOQ7u1dOOFfhIIz5Aj2LKuQtGOO4,1652
6
6
  not1mm/logwindow.py,sha256=H6FbKowq5ekEhALRPiRugZk_Rv1mwtMF5VT_OBZ63Oo,44900
7
- not1mm/vfo.py,sha256=4szh2mwiPqUW4nNbHFsBaxDxxntUCk9wS5grq2izyOY,12430
7
+ not1mm/vfo.py,sha256=HIr73gob-JLaJqn0TpTYxWApwKR1YpmA43M8QyTnYik,12467
8
8
  not1mm/data/JetBrainsMono-Regular.ttf,sha256=UOHctAKY_PzCGh7zy-6f6egnCcSK0wzmF0csBqO9lDY,203952
9
9
  not1mm/data/MASTER.SCP,sha256=1vQRvEZ865brfmmajp-Lj-hgWejVGI992q8o971bUV8,366478
10
10
  not1mm/data/about.ui,sha256=7TqvtXFFm0Rmcu0bmLupwpO1CsK8MekfZ09_xn6kZrQ,2067
@@ -26,7 +26,7 @@ not1mm/data/k6gte.not1mm-32.png,sha256=XdTsCa3xqwTfn26Ga7RwO_Vlbg_77RKkSc8bMxVcC
26
26
  not1mm/data/k6gte.not1mm-64.png,sha256=6ku45Gq1g5ezh04F07osoKRtanb3e4kbx5XdIEh3N90,2925
27
27
  not1mm/data/logwindow.ui,sha256=vfkNdzJgFs3tTOBKLDavF2zVMvNHWOZ82fAErRi6pQY,1436
28
28
  not1mm/data/logwindowx.ui,sha256=9FzDJtLRpagvAWcDjFdB9NnvNZ4bVxdTNHy1Jit2ido,1610
29
- not1mm/data/main.ui,sha256=X9sNqSZyKennX-7Ne4c8yLnkbN13T5YpDUeri-wPOn4,54070
29
+ not1mm/data/main.ui,sha256=imj6FbVeYxz90Z4MuTy730GFjpeT0OYs7TvzybmcSY8,54341
30
30
  not1mm/data/new_contest.ui,sha256=Xubngdbs_V_-o8huXzKOOaQOfj1NSXu9giIcaL4d0qk,21823
31
31
  not1mm/data/not1mm.html,sha256=c9-mfjMwDt4f5pySUruz2gREW33CQ2_rCddM2z5CZQo,23273
32
32
  not1mm/data/opon.ui,sha256=mC4OhoVIfR1H9IqHAKXliPMm8VOVmxSEadpsFQ7XnS4,2247
@@ -99,48 +99,48 @@ not1mm/lib/ham_utility.py,sha256=pUrysod3wGk4BYOWDAKJxZZTiUNDE4ZzRk8S5ZnllNA,109
99
99
  not1mm/lib/lookup.py,sha256=F2fl5QkMxaGSxl1XMWnLUub3T9Mt7LhCX4acOlAsks4,13952
100
100
  not1mm/lib/multicast.py,sha256=bnFUNHyy82GmIb3_88EPBVVssj7-HzkJPaH671cK8Qw,3249
101
101
  not1mm/lib/n1mm.py,sha256=V1NiNyOHaPNYKe_vRsq44O1R42N8uS5PlfRa5Db4Tv0,5712
102
- not1mm/lib/new_contest.py,sha256=cenfR08g_7hGPYQOmg6Q48xgZg0YLwbJlwNS67IsP84,350
102
+ not1mm/lib/new_contest.py,sha256=IznTDMq7yXHB6zBoGUEC_WDYPCPpsSZW4wwMJi16zK0,816
103
103
  not1mm/lib/plugin_common.py,sha256=AAKBPCXzTWZJb-h08uPNnHVG7bSCg7kwukc211gFivY,8605
104
104
  not1mm/lib/select_contest.py,sha256=WsptLuwkouIHeocJL3oZ6-eUfEnhpwdc-x7eMZ_TIVM,359
105
105
  not1mm/lib/settings.py,sha256=tlXlJUUZP0IFwIDc9DboM5_1by_tHNtMXvyJ0E7B6RI,8877
106
106
  not1mm/lib/super_check_partial.py,sha256=p5l3u2ZOCBtlWgbvskC50FpuoaIpR07tfC6zTdRWbh4,2334
107
- not1mm/lib/version.py,sha256=DS1h7kkVnHKLBBMYmohGaprRAqnhs1v82TS0sDtvLlo,49
107
+ not1mm/lib/version.py,sha256=_FQGpyHUssH34gTKJKt464g2di65ZgL7GI1Ug-H6BCs,49
108
108
  not1mm/lib/versiontest.py,sha256=8vDNptuBBunn-1IGkjNaquehqBYUJyjrPSF8Igmd4_Y,1286
109
- not1mm/plugins/10_10_fall_cw.py,sha256=pzwdVk_ezaZIlAWDiEF0FVyZYPzx93xaIx8EZ8OTOwM,10834
110
- not1mm/plugins/10_10_spring_cw.py,sha256=hUdC5vkdIHSuMil4zhlid1HwUkkkbtppsvMTQd5gLvY,10839
111
- not1mm/plugins/10_10_summer_phone.py,sha256=2-Ry9mp7A_1dUD1gQLbdaeD9ubGez9Ik4mzRio9KUz8,10848
112
- not1mm/plugins/10_10_winter_phone.py,sha256=qd5f9oeJ6DUsA42VdJg_dLIpZYo74mWndjzzgqx6YGk,10851
109
+ not1mm/plugins/10_10_fall_cw.py,sha256=fUjfwjuscDjicXIxsO0JHh7xTR9Vu0iPsrOLb896Qak,10873
110
+ not1mm/plugins/10_10_spring_cw.py,sha256=WNaJP5mBQfaB6SxnFI0Vawt3AKDr94tKVtAK-EVhtUY,10878
111
+ not1mm/plugins/10_10_summer_phone.py,sha256=_dgrXDQ4S44EiTr1bDydSBkvY9jOY_ll8PQ54eXfd8U,10887
112
+ not1mm/plugins/10_10_winter_phone.py,sha256=8uKM7iE6_fkARUpvOZeTmJkgME5nAhGq7axOX7JA4sg,10890
113
113
  not1mm/plugins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
114
- not1mm/plugins/arrl_10m.py,sha256=-6oOW2775wKL19xY5ARWzjStkPbuvp1dlRp8wti6ORk,13643
115
- not1mm/plugins/arrl_dx_cw.py,sha256=Rx6i1tGFXw2nicM4Y_IczwwkUhBQQMhO-gySBMfy1Jo,13688
116
- not1mm/plugins/arrl_dx_ssb.py,sha256=SVdXNBBdm0JVnqUoMeNv3vlEZO2uJLpFyCz80Cp6kG8,13691
117
- not1mm/plugins/arrl_field_day.py,sha256=jB9DqrGo_tbdHDevTd_DeYCebHoNS8qPrx3X3WVYnVk,10026
118
- not1mm/plugins/arrl_rtty_ru.py,sha256=j7niG1BUoBU383QwNfM4bDRmfALjFLGNDQtxPTXMloY,7974
119
- not1mm/plugins/arrl_ss_cw.py,sha256=X2gmVVsVhn3mO38EIpGalaKAY_noEZl1Z-I3dr6AKFQ,13141
120
- not1mm/plugins/arrl_ss_phone.py,sha256=KAuuFdY4koZxYRdqC6D5HwfyUMYI3r6rz73LmHNaC4A,13147
121
- not1mm/plugins/arrl_vhf_jan.py,sha256=wdB3TQG90NFktHxU3_KBfgDBf0iKsxXLHz-0Vt_N4MY,12438
122
- not1mm/plugins/arrl_vhf_jun.py,sha256=M8xL7PExwi5tHNbr3G1YfWzO3v46Q4f_69KYIppIhh8,11457
123
- not1mm/plugins/arrl_vhf_sep.py,sha256=vll2uKDB_Mu_Yut4KKtPqZKxdeBG1X7dQAC4zLTWXoU,11457
124
- not1mm/plugins/canada_day.py,sha256=_y1Gqa4AenQNHYwOJAM8L-BwLDTIy4uCtZdVHq2GLyQ,11869
125
- not1mm/plugins/cq_160_cw.py,sha256=mNfqgq_SungfUoj7AfuEHrJFXZ9aMFUuvg5W5FOA7fQ,14018
126
- not1mm/plugins/cq_160_ssb.py,sha256=jZaWjLV1kQgUMWI_eZ8GqnZPOzJ_kENR8B9pd2dHS0k,14061
127
- not1mm/plugins/cq_wpx_cw.py,sha256=ejgTQzkPvwTnp4XAEPa3A3IWRA5hBNocFLhIjI8hb5k,12378
128
- not1mm/plugins/cq_wpx_ssb.py,sha256=VCl3rib5S8BCvSAM5XBESz0c8Ab3lE7r8pQwtw-1tes,12466
129
- not1mm/plugins/cq_ww_cw.py,sha256=t9ExXSlPZik2NRDSf1kgW0-v5wtzq55WJfxKY2CVytQ,11083
130
- not1mm/plugins/cq_ww_ssb.py,sha256=9oAWVdDfiYlNjq8EYlcwq_CMP5jvxmeaJujS4V74mEc,11088
131
- not1mm/plugins/cwt.py,sha256=Fd8d0QilYmmZq4PSXKGAxZ9yYuous7cGHYNlQczi2qw,11976
132
- not1mm/plugins/general_logging.py,sha256=wkopclj5_Kw2bY9COMbAtK1lrvVtAbRIZoGDfD_ZgfY,3369
133
- not1mm/plugins/iaru_hf.py,sha256=YYU-Ny50SU1v_jwCkatN6nCl0nUIrMbdRLEW15OzFJg,11433
134
- not1mm/plugins/jidx_cw.py,sha256=qx-o99zlSW5OPjbU2zE9ce_v3r3yTs1TV8G4S2XvZ2o,11049
135
- not1mm/plugins/jidx_ph.py,sha256=D8FMo9m-pD1qGXBoeVC68Re6h5WqN7eTToWjxIclQ5s,11051
136
- not1mm/plugins/naqp_cw.py,sha256=dLZOKY186HSKml6F9it1r1QbyDxhiOyvMON1R8ZiyQ4,11472
137
- not1mm/plugins/naqp_ssb.py,sha256=HJtPznRpVI66DCXNehDcxrdZmtAKW5WNm4AtqBK2ZiU,11477
138
- not1mm/plugins/phone_weekly_test.py,sha256=DklwBvVBVJ60HLGLd8_DNrloD1TyFtWgCztSwUdW4Ag,12278
139
- not1mm/plugins/stew_perry_topband.py,sha256=2uWD6MEENiqq01PwuhhgzTNIS0P5ukeBG1jesrFNOP0,10546
140
- not1mm/plugins/winter_field_day.py,sha256=Fb5Bb-VejO5K983h_nZfwpqC0rUdiolfr_iSkaqGF0M,10212
141
- not1mm-24.4.2.1.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
142
- not1mm-24.4.2.1.dist-info/METADATA,sha256=JVLUsuf--jY5Zoz-kKldSAUtrLECoydq27iRuDgkFWc,26569
143
- not1mm-24.4.2.1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
144
- not1mm-24.4.2.1.dist-info/entry_points.txt,sha256=pMcZk_0dxFgLkcUkF0Q874ojpwOmF3OL6EKw9LgvocM,47
145
- not1mm-24.4.2.1.dist-info/top_level.txt,sha256=0YmTxEcDzQlzXub-lXASvoLpg_mt1c2thb5cVkDf5J4,7
146
- not1mm-24.4.2.1.dist-info/RECORD,,
114
+ not1mm/plugins/arrl_10m.py,sha256=pnRyBqAZy5rP2kTWNyEX-fAjJTOF7ze8STc4KHULvTQ,13677
115
+ not1mm/plugins/arrl_dx_cw.py,sha256=B4mX8C1pPygioG8NjEXhrgSUrbhnXhceo1ZTbTB0hsQ,13722
116
+ not1mm/plugins/arrl_dx_ssb.py,sha256=aVhNnA2dGl5BLoIXY8ZuJ5nHNok8EFVN2y-dXN7H66o,13725
117
+ not1mm/plugins/arrl_field_day.py,sha256=OSro24LsSVW41yecKziWQMjflJbo62P8C53Q3M3-Lb0,10052
118
+ not1mm/plugins/arrl_rtty_ru.py,sha256=hKUS4isjdXo3EYxQrsqsDupPp2chW8fpoWj0T1pTgJ4,7994
119
+ not1mm/plugins/arrl_ss_cw.py,sha256=yxir0G-UfRCR2NiniTVyE2oWh6rEbTqUUNEm3Der5Ms,12989
120
+ not1mm/plugins/arrl_ss_phone.py,sha256=M9CKmzyzpEvwPYkbjJepzbOtJ2DVuxZLSmN_sYvT4Ic,12977
121
+ not1mm/plugins/arrl_vhf_jan.py,sha256=ttYIXvwlnwqp0Jg6zkwEj-f1aLj4SZ7gJKKfmpNa5n8,12481
122
+ not1mm/plugins/arrl_vhf_jun.py,sha256=I3dcU01n5-VC07EM3mWJu7CpKo515MduImi9P0sLWz4,11500
123
+ not1mm/plugins/arrl_vhf_sep.py,sha256=HR3zuArCNUu86Nh3xhbPiVNF4ug_GtBrGPwNEG131Fo,11500
124
+ not1mm/plugins/canada_day.py,sha256=X7T0AjEoooHlm0h37KuLb4u5hQsrCNp8qtd3affbUbE,11907
125
+ not1mm/plugins/cq_160_cw.py,sha256=0h90dF8avfl7UJcUsAK4SMuXpmStkssQB2gSQMW3tnU,14059
126
+ not1mm/plugins/cq_160_ssb.py,sha256=jhUc_1hc68jtv8vNS_UadqfaRjY1KnBPHJXGE1K27d4,14102
127
+ not1mm/plugins/cq_wpx_cw.py,sha256=iGuGvsLe9V_HzsGRjMckCPJBklvuDjyp9jVOX6Wr-1A,12399
128
+ not1mm/plugins/cq_wpx_ssb.py,sha256=C-25CMIhvKIhUx6j4TEvOK5597EwRYrTcHptILAoEnI,12487
129
+ not1mm/plugins/cq_ww_cw.py,sha256=O4E4r0Jbp-lz5Npuhe3GYPwJ9dcEalW1YNe3TusforU,11114
130
+ not1mm/plugins/cq_ww_ssb.py,sha256=WG_wsMuqt6F1M7DRvbW3c4kdl5nycUeIHcffjMHGVJs,11119
131
+ not1mm/plugins/cwt.py,sha256=YtgWH1wjXVmaTNfYG5e3yCrXnfbjOmxuTe8fFCqObFU,12020
132
+ not1mm/plugins/general_logging.py,sha256=1Y9ruPaxCQkvHHX6N0cwKjZtdC9az-jLbHnJLrcj3M0,3387
133
+ not1mm/plugins/iaru_hf.py,sha256=PN31WHeRyOFJf8obZPkoPySTxguIQ2KGG8ulj_ZzJRc,11461
134
+ not1mm/plugins/jidx_cw.py,sha256=Yc-LWjqhphAkiBxZT3KEAJzJ5IUKUdTQEMjfN1OUsBo,11090
135
+ not1mm/plugins/jidx_ph.py,sha256=S-0Pxti_OdIQGID7w0tR6G44J4hoxQ3XGaCWm_3LXOE,11092
136
+ not1mm/plugins/naqp_cw.py,sha256=27m1PtUQCROusrzs7OSx1Uxb5223ob5FJKksUj2BTjs,11510
137
+ not1mm/plugins/naqp_ssb.py,sha256=IWksulcb2_DxlkeW0h3048t8I-u00G_67KBVKkp-TV4,11515
138
+ not1mm/plugins/phone_weekly_test.py,sha256=gCX0ESUoiQzDp9puwibt9-dRembNsiuEeBdawCVvjHA,12316
139
+ not1mm/plugins/stew_perry_topband.py,sha256=DIMI3mGMKokXXb9pPLqdhBI6JVnnIs7ZnAL23nFmshE,10588
140
+ not1mm/plugins/winter_field_day.py,sha256=4rcfRtobwjHO6BNL3WOTHzBmyyeuX79BNGBG8PfjrI8,10238
141
+ not1mm-24.4.4.1.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
142
+ not1mm-24.4.4.1.dist-info/METADATA,sha256=o_y3YMD6rXzqQejTEeOdxVbusU6Ige_Mj-IWF9No2Fo,26693
143
+ not1mm-24.4.4.1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
144
+ not1mm-24.4.4.1.dist-info/entry_points.txt,sha256=pMcZk_0dxFgLkcUkF0Q874ojpwOmF3OL6EKw9LgvocM,47
145
+ not1mm-24.4.4.1.dist-info/top_level.txt,sha256=0YmTxEcDzQlzXub-lXASvoLpg_mt1c2thb5cVkDf5J4,7
146
+ not1mm-24.4.4.1.dist-info/RECORD,,