not1mm 24.10.5.1__py3-none-any.whl → 24.10.6__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.
not1mm/__main__.py CHANGED
@@ -95,7 +95,7 @@ class MainWindow(QtWidgets.QMainWindow):
95
95
  "command_buttons": False,
96
96
  "cw_macros": True,
97
97
  "bands_modes": True,
98
- "bands": ["160", "80", "60", "40", "30", "20", "17", "15", "12", "10"],
98
+ "bands": ["160", "80", "40", "20", "15", "10"],
99
99
  "current_database": "ham.db",
100
100
  "contest": "",
101
101
  "multicast_group": "239.1.1.1",
@@ -3602,6 +3602,21 @@ def run() -> None:
3602
3602
  """
3603
3603
  Main Entry
3604
3604
  """
3605
+ splash.show()
3606
+ # app.processEvents()
3607
+ splash.showMessage(
3608
+ "Starting Up",
3609
+ alignment=Qt.AlignmentFlag.AlignBottom | Qt.AlignmentFlag.AlignCenter,
3610
+ color=QColor(255, 255, 0),
3611
+ )
3612
+ QCoreApplication.processEvents()
3613
+
3614
+ families = load_fonts_from_dir(os.fspath(fsutils.APP_DATA_PATH))
3615
+ logger.info(f"font families {families}")
3616
+ window = MainWindow(splash)
3617
+ window.callsign.setFocus()
3618
+ splash.finish(window)
3619
+ window.show()
3605
3620
  logger.debug(
3606
3621
  f"Resolved OS file system paths: MODULE_PATH {fsutils.MODULE_PATH}, USER_DATA_PATH {fsutils.USER_DATA_PATH}, CONFIG_PATH {fsutils.CONFIG_PATH}"
3607
3622
  )
@@ -3625,25 +3640,11 @@ logging.basicConfig(
3625
3640
  )
3626
3641
  logging.getLogger("PyQt6.uic.uiparser").setLevel("INFO")
3627
3642
  logging.getLogger("PyQt6.uic.properties").setLevel("INFO")
3643
+
3628
3644
  app = QtWidgets.QApplication(sys.argv)
3629
3645
 
3630
3646
  pixmap = QPixmap(f"{os.fspath(fsutils.APP_DATA_PATH)}/splash.png")
3631
3647
  splash = QSplashScreen(pixmap)
3632
- splash.show()
3633
- # app.processEvents()
3634
- splash.showMessage(
3635
- "Starting Up",
3636
- alignment=Qt.AlignmentFlag.AlignBottom | Qt.AlignmentFlag.AlignCenter,
3637
- color=QColor(255, 255, 0),
3638
- )
3639
- QCoreApplication.processEvents()
3640
-
3641
- families = load_fonts_from_dir(os.fspath(fsutils.APP_DATA_PATH))
3642
- logger.info(f"font families {families}")
3643
- window = MainWindow(splash)
3644
- window.callsign.setFocus()
3645
- splash.finish(window)
3646
- window.show()
3647
3648
 
3648
3649
  if __name__ == "__main__":
3649
3650
  run()
not1mm/lib/multicast.py CHANGED
@@ -31,11 +31,11 @@ class Multicast:
31
31
  int(self.multicast_port),
32
32
  QtNetwork.QAbstractSocket.BindFlag.ReuseAddressHint,
33
33
  )
34
- logger.warn(f"multicast bind {b_result}")
34
+ logger.warning(f"multicast bind {b_result}")
35
35
  join_result = self.server_udp.joinMulticastGroup(
36
36
  QtNetwork.QHostAddress(self.multicast_group)
37
37
  )
38
- logger.warn(f"joinMulticastGroup result {join_result}")
38
+ logger.warning(f"joinMulticastGroup result {join_result}")
39
39
 
40
40
  def has_pending_datagrams(self) -> bool:
41
41
  """Check if there is a pending datagram"""
not1mm/lib/version.py CHANGED
@@ -1,3 +1,3 @@
1
1
  """It's the version"""
2
2
 
3
- __version__ = "24.10.5.1"
3
+ __version__ = "24.10.6"
@@ -491,7 +491,7 @@ def ft8_handler(the_packet: dict):
491
491
  ALTEREGO.contact["Call"] = the_packet.get("CALL", "")
492
492
  ALTEREGO.contact["SNT"] = ALTEREGO.sent.text()
493
493
  ALTEREGO.contact["RCV"] = ALTEREGO.receive.text()
494
- ALTEREGO.contact["Exchange1"] = f"{the_packet.get("STATE", "")}".strip()
494
+ ALTEREGO.contact["Exchange1"] = f'{the_packet.get("STATE", "")}'.strip()
495
495
  ALTEREGO.contact["ZN"] = the_packet.get("CQZ", "")
496
496
  ALTEREGO.contact["Mode"] = the_packet.get("MODE", "ERR")
497
497
  ALTEREGO.contact["Freq"] = round(float(the_packet.get("FREQ", "0.0")) * 1000, 2)
@@ -502,6 +502,6 @@ def ft8_handler(the_packet: dict):
502
502
  str(int(float(the_packet.get("FREQ", "0.0")) * 1000000))
503
503
  )
504
504
  logger.debug(f"{ALTEREGO.contact=}")
505
- ALTEREGO.other_1.setText(f"{the_packet.get("STX", "")}".strip())
506
- ALTEREGO.other_2.setText(f"{the_packet.get("SRX", "")}".strip())
505
+ ALTEREGO.other_1.setText(f'{the_packet.get("STX", "")}'.strip())
506
+ ALTEREGO.other_2.setText(f'{the_packet.get("SRX", "")}'.strip())
507
507
  ALTEREGO.save_contact()
@@ -477,7 +477,7 @@ def ft8_handler(the_packet: dict):
477
477
  ALTEREGO.contact["Call"] = the_packet.get("CALL", "")
478
478
  ALTEREGO.contact["SNT"] = ALTEREGO.sent.text()
479
479
  ALTEREGO.contact["RCV"] = ALTEREGO.receive.text()
480
- ALTEREGO.contact["Exchange1"] = f"{the_packet.get("STATE", "")}".strip()
480
+ ALTEREGO.contact["Exchange1"] = f'{the_packet.get("STATE", "")}'.strip()
481
481
  ALTEREGO.contact["ZN"] = the_packet.get("CQZ", "")
482
482
  ALTEREGO.contact["Mode"] = the_packet.get("MODE", "ERR")
483
483
  ALTEREGO.contact["Freq"] = round(float(the_packet.get("FREQ", "0.0")) * 1000, 2)
@@ -489,5 +489,5 @@ def ft8_handler(the_packet: dict):
489
489
  )
490
490
  logger.debug(f"{ALTEREGO.contact=}")
491
491
  ALTEREGO.other_1.setText(str(the_packet.get("CQZ", "ERR")))
492
- ALTEREGO.other_2.setText(f"{the_packet.get("STATE", "")}".strip())
492
+ ALTEREGO.other_2.setText(f'{the_packet.get("STATE", "")}'.strip())
493
493
  ALTEREGO.save_contact()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: not1mm
3
- Version: 24.10.5.1
3
+ Version: 24.10.6
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
@@ -219,6 +219,7 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
219
219
 
220
220
  ## Recent Changes
221
221
 
222
+ - [24-10-6] Removed 60, 30, 17 and 12M from the default list of bands.
222
223
  - [24-10-5-1] Store the bandmap spots age timer in the preferences.
223
224
  - [24-10-5] Force reselction of contest after different DB opened.
224
225
  - [24-10-2] Add WPX RTTY.
@@ -567,7 +568,7 @@ onscreen icon for CAT status. Green good, Red bad, Grey neither.
567
568
  ### CW Keyer interface
568
569
 
569
570
  Under the `CW` TAB, There are three options. `cwdaemon`, which normally uses IP
570
- `127.0.0.1` and port `6789`. `pywinkeyer` which normally uses IP `127.0.0.1` and
571
+ `127.0.0.1`port `6789`. `pywinkeyer` which normally uses IP `127.0.0.1` port `8000` and
571
572
  `CAT` which if your radio supports it, sends Morse characters via rigctld. As far
572
573
  as I can tell rigctld does not support setting the radios internal keyer speed. So
573
574
  the CW speed control widget will not be functional and you'd need to control the
@@ -1,5 +1,5 @@
1
1
  not1mm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- not1mm/__main__.py,sha256=8bgimshIW_mPwFTv6_j2cKutj3PNYyZgB3zqRzKrhKU,131487
2
+ not1mm/__main__.py,sha256=jShyKC6PnUdyT9htancQg_m5j1KlFnKmPdjmNV_he60,131520
3
3
  not1mm/bandmap.py,sha256=P91rYGmd8r5K6TRNZt7kqqW6zCBVlFA1_n9-V7as1WE,31672
4
4
  not1mm/checkwindow.py,sha256=aI-nr8OF90IWV7R_XRdmitvBJ9M85evCs72HoU3Jnvc,10374
5
5
  not1mm/fsutils.py,sha256=ukHKxKTeNKxKwqRaJjtzRShL4X5Xl0jRBbADyy3Ifp8,1701
@@ -106,7 +106,7 @@ not1mm/lib/fldigi_watcher.py,sha256=reZz3fZLDoJVVZhJD9nIssk2aczCzadDSQTVu-5mTCM,
106
106
  not1mm/lib/ft8_watcher.py,sha256=BFmVIsnbwuRMWoe-dIBybuCgi0WFmr8Km0O9l4eiwMM,4624
107
107
  not1mm/lib/ham_utility.py,sha256=WMmYLDI_fJHHsn0wkpGVit2Hv8fo6r9ybexXROia8Cg,11967
108
108
  not1mm/lib/lookup.py,sha256=_Awt1HjiuSrhLTrwoF8EoFQC_bYYH1vqfAo_HSaMb00,10838
109
- not1mm/lib/multicast.py,sha256=bnFUNHyy82GmIb3_88EPBVVssj7-HzkJPaH671cK8Qw,3249
109
+ not1mm/lib/multicast.py,sha256=KJcruI-bOuHfHXPjl3SGQhL6I9sKrygy-sdFSvxffUM,3255
110
110
  not1mm/lib/n1mm.py,sha256=H54mpgJF0GAmKavM-nb5OAq2SJFWYkux4eMWWiSRxJc,6288
111
111
  not1mm/lib/new_contest.py,sha256=IznTDMq7yXHB6zBoGUEC_WDYPCPpsSZW4wwMJi16zK0,816
112
112
  not1mm/lib/playsound.py,sha256=kxkcitBFbZCXJ2wxQ1lxg4rBwfxiSpuNpJSXHOPCoXA,9241
@@ -114,7 +114,7 @@ not1mm/lib/plugin_common.py,sha256=TbFUbftjELFt4QRdsjSHbqnXSngZOlSwlCTClqosDXA,9
114
114
  not1mm/lib/select_contest.py,sha256=WsptLuwkouIHeocJL3oZ6-eUfEnhpwdc-x7eMZ_TIVM,359
115
115
  not1mm/lib/settings.py,sha256=0Su8BQM4haVhc_P74q8UhzRZxtgWhM40UmVtQdMJQeM,10022
116
116
  not1mm/lib/super_check_partial.py,sha256=p5l3u2ZOCBtlWgbvskC50FpuoaIpR07tfC6zTdRWbh4,2334
117
- not1mm/lib/version.py,sha256=5uwpZq4lmKw9eq6mo-j6TGPKC-i7jRbA_5Tg5_AjOyo,50
117
+ not1mm/lib/version.py,sha256=-VK621TV7vjdeRUalV4nYjao7hyeK_a1xlqZJIMqY7A,48
118
118
  not1mm/lib/versiontest.py,sha256=8vDNptuBBunn-1IGkjNaquehqBYUJyjrPSF8Igmd4_Y,1286
119
119
  not1mm/plugins/10_10_fall_cw.py,sha256=IttjX1yy4nDdACGsiYlPteFG8eVseX_WtoFio6bqHE8,10953
120
120
  not1mm/plugins/10_10_spring_cw.py,sha256=ThCptdM3dX4ywhoy2JRcOEyHSqcJolFaT7O_PYzM1Mg,10958
@@ -135,10 +135,10 @@ not1mm/plugins/canada_day.py,sha256=OVpcCl1Chse_zLHf6PayTrgawWM4W-pmrTw40Al-o9s,
135
135
  not1mm/plugins/cq_160_cw.py,sha256=5s6rIZdJEnmWe1SI06BEyz7p5vP0N2n9mI4l_mZ0icw,14139
136
136
  not1mm/plugins/cq_160_ssb.py,sha256=zIwSMAjHSt6W2edrDzVbyTf860JowHoFkU9BKO8Enag,14182
137
137
  not1mm/plugins/cq_wpx_cw.py,sha256=9aNzAR-KhznIwUlxUFjAi_hbiw_6RrCMwUBk9I2f6Hs,14037
138
- not1mm/plugins/cq_wpx_rtty.py,sha256=d0YsC_RDNEhp0mFGxtm7Ao7tI8wEeJJOACYAXdSWiWw,16473
138
+ not1mm/plugins/cq_wpx_rtty.py,sha256=PpU_PxjQGeMjzbofYNsl-No37s7IgkPyW2bKFRkN9jU,16473
139
139
  not1mm/plugins/cq_wpx_ssb.py,sha256=-hGRovqHR9rfOUnG4LPOoABTb4heH8VAX6rYdJbCqsw,12687
140
140
  not1mm/plugins/cq_ww_cw.py,sha256=m4Xkqb_qFyXWEgkxqbanvtiCTvI8NNPKNXzHgFZzhnE,12340
141
- not1mm/plugins/cq_ww_rtty.py,sha256=N0togQbMSpRyRpGoYvnlGC3mpduR82g-D39Swtp5wjI,16772
141
+ not1mm/plugins/cq_ww_rtty.py,sha256=WnqSfCNX6ieLZlUg_P_vx-Z2iY0lxdwEgPuT9aax1JU,16772
142
142
  not1mm/plugins/cq_ww_ssb.py,sha256=hZwG88-hPLmwIGXHX_S_ty8Nhn1kIuPjSuTRpCWoN9g,12631
143
143
  not1mm/plugins/cwt.py,sha256=KvvkEfQrYSra0y8qE4yThvZNLrZcslt0IqYEomDpf-M,12774
144
144
  not1mm/plugins/general_logging.py,sha256=n-2es7erqK1ptwq_wwIKIwktptKN7ra2eWjAQlpXUac,3479
@@ -157,9 +157,10 @@ not1mm/plugins/ref_cw.py,sha256=aWjHHkqIKutjRUtzh09y5haFfnZK9poRQDWRQMDRxxU,1632
157
157
  not1mm/plugins/stew_perry_topband.py,sha256=CKBQbYl4ETxhXJd2dma4fg_C5pag_s7Nf61SCztZtqE,10668
158
158
  not1mm/plugins/weekly_rtty.py,sha256=DQcy3SY0Zn56EdlYGf3NxrRhTnkNa5IqRQPRQdKDSPs,14255
159
159
  not1mm/plugins/winter_field_day.py,sha256=4rcfRtobwjHO6BNL3WOTHzBmyyeuX79BNGBG8PfjrI8,10238
160
- not1mm-24.10.5.1.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
161
- not1mm-24.10.5.1.dist-info/METADATA,sha256=Cto5bth3V2_4VBPF_bV9cenpvAdRaLJ2xo_p6Xh3Mgk,30662
162
- not1mm-24.10.5.1.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
163
- not1mm-24.10.5.1.dist-info/entry_points.txt,sha256=pMcZk_0dxFgLkcUkF0Q874ojpwOmF3OL6EKw9LgvocM,47
164
- not1mm-24.10.5.1.dist-info/top_level.txt,sha256=0YmTxEcDzQlzXub-lXASvoLpg_mt1c2thb5cVkDf5J4,7
165
- not1mm-24.10.5.1.dist-info/RECORD,,
160
+ test/contests.py,sha256=bPJZz0zC_d_lpkc9_-Llct628DZIL5kI7m2QIVhAcVM,17498
161
+ not1mm-24.10.6.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
162
+ not1mm-24.10.6.dist-info/METADATA,sha256=7tWxHcNmpDHMgBdupY6ZsugM5vCFGFezsnFJveseiKE,30738
163
+ not1mm-24.10.6.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
164
+ not1mm-24.10.6.dist-info/entry_points.txt,sha256=pMcZk_0dxFgLkcUkF0Q874ojpwOmF3OL6EKw9LgvocM,47
165
+ not1mm-24.10.6.dist-info/top_level.txt,sha256=b4JoTnuFyh8DwxYUjTpCWpKI9Yi1tKwwvCjSYiNY4G8,12
166
+ not1mm-24.10.6.dist-info/RECORD,,
test/contests.py ADDED
@@ -0,0 +1,591 @@
1
+ import pytest
2
+ import os
3
+
4
+ from PyQt6 import QtCore, QtWidgets
5
+
6
+ import not1mm.__main__ as not1mm
7
+ import not1mm.fsutils as fsutils
8
+
9
+ WAIT_TIME = 10
10
+
11
+ # Entry options:
12
+ # callsign
13
+ # sent (field1)
14
+ # receive (field2)
15
+ # other_1 (field3)
16
+ # other_2 (field4)
17
+
18
+ CONTEST_DATA = {
19
+ "General Logging": [
20
+ {
21
+ "callsign": "KF0NRV",
22
+ "sent": "599",
23
+ "receive": "599",
24
+ "other_1": "dan",
25
+ "other_2": "cool dude",
26
+ },
27
+ {
28
+ "callsign": "KF0NRV",
29
+ "sent": "599",
30
+ "receive": "599",
31
+ "other_1": "dan",
32
+ "other_2": "cool dude",
33
+ },
34
+ {
35
+ "callsign": "K6GTE",
36
+ "sent": "599",
37
+ "receive": "599",
38
+ "other_1": "mike",
39
+ "other_2": "cool dude",
40
+ },
41
+ ],
42
+ "10 10 FALL CW": [
43
+ {
44
+ "callsign": "KF0NRV",
45
+ "sent": "599",
46
+ "receive": "599",
47
+ "other_2": "dan 1234 ia",
48
+ },
49
+ {
50
+ "callsign": "KF0NRV",
51
+ "sent": "599",
52
+ "receive": "599",
53
+ "other_2": "dan 1234 ia",
54
+ },
55
+ {
56
+ "callsign": "K6GTE",
57
+ "sent": "599",
58
+ "receive": "599",
59
+ "other_2": "mike 1234 ca",
60
+ },
61
+ ],
62
+ "10 10 SPRING CW": [
63
+ {
64
+ "callsign": "KF0NRV",
65
+ "sent": "599",
66
+ "receive": "599",
67
+ "other_2": "dan 1234 ia",
68
+ },
69
+ {
70
+ "callsign": "KF0NRV",
71
+ "sent": "599",
72
+ "receive": "599",
73
+ "other_2": "dan 1234 ia",
74
+ },
75
+ {
76
+ "callsign": "K6GTE",
77
+ "sent": "599",
78
+ "receive": "599",
79
+ "other_2": "mike 1234 ca",
80
+ },
81
+ ],
82
+ "10 10 SUMMER PHONE": [
83
+ {"callsign": "KF0NRV", "sent": "59", "receive": "59", "other_2": "dan 1234 ia"},
84
+ {"callsign": "KF0NRV", "sent": "59", "receive": "59", "other_2": "dan 1234 ia"},
85
+ {"callsign": "K6GTE", "sent": "59", "receive": "59", "other_2": "mike 1234 ca"},
86
+ ],
87
+ "10 10 WINTER PHONE": [
88
+ {"callsign": "KF0NRV", "sent": "59", "receive": "59", "other_2": "dan 1234 ia"},
89
+ {"callsign": "KF0NRV", "sent": "59", "receive": "59", "other_2": "dan 1234 ia"},
90
+ {"callsign": "K6GTE", "sent": "59", "receive": "59", "other_2": "mike 1234 ca"},
91
+ ],
92
+ "ARRL 10M": [
93
+ {
94
+ "callsign": "KF0NRV",
95
+ "sent": "599",
96
+ "receive": "599",
97
+ "other_1": "1234",
98
+ "other_2": "ia",
99
+ },
100
+ {
101
+ "callsign": "KF0NRV",
102
+ "sent": "599",
103
+ "receive": "599",
104
+ "other_1": "1234",
105
+ "other_2": "ia",
106
+ },
107
+ {
108
+ "callsign": "K6GTE",
109
+ "sent": "599",
110
+ "receive": "599",
111
+ "other_1": "2345",
112
+ "other_2": "ca",
113
+ },
114
+ ],
115
+ "ARRL DX CW": [
116
+ {"callsign": "KF0NRV", "sent": "599", "receive": "599", "other_2": "100W"},
117
+ {"callsign": "KF0NRV", "sent": "599", "receive": "599", "other_2": "100W"},
118
+ {"callsign": "K6GTE", "sent": "599", "receive": "599", "other_2": "100W"},
119
+ ],
120
+ "ARRL DX SSB": [
121
+ {"callsign": "KF0NRV", "sent": "59", "receive": "59", "other_2": "100W"},
122
+ {"callsign": "KF0NRV", "sent": "59", "receive": "59", "other_2": "100W"},
123
+ {"callsign": "K6GTE", "sent": "59", "receive": "59", "other_2": "100W"},
124
+ ],
125
+ "ARRL FIELD DAY": [
126
+ {"callsign": "KF0NRV", "other_1": "1", "other_2": "a"},
127
+ {"callsign": "KF0NRV", "other_1": "1", "other_2": "a"},
128
+ {"callsign": "K6GTE", "other_1": "1", "other_2": "a"},
129
+ ],
130
+ "ARRL SS CW": [
131
+ {
132
+ "callsign": "KF0NRV",
133
+ "sent": "599",
134
+ "receive": "599",
135
+ "other_1": "1",
136
+ "other_2": "27",
137
+ },
138
+ {
139
+ "callsign": "KF0NRV",
140
+ "sent": "599",
141
+ "receive": "599",
142
+ "other_1": "2",
143
+ "other_2": "42",
144
+ },
145
+ {
146
+ "callsign": "K6GTE",
147
+ "sent": "599",
148
+ "receive": "599",
149
+ "other_1": "3",
150
+ "other_2": "100",
151
+ },
152
+ ],
153
+ "ARRL SS PHONE": [
154
+ {
155
+ "callsign": "KF0NRV",
156
+ "sent": "59",
157
+ "receive": "59",
158
+ "other_1": "1",
159
+ "other_2": "27",
160
+ },
161
+ {
162
+ "callsign": "KF0NRV",
163
+ "sent": "59",
164
+ "receive": "59",
165
+ "other_1": "2",
166
+ "other_2": "42",
167
+ },
168
+ {
169
+ "callsign": "K6GTE",
170
+ "sent": "59",
171
+ "receive": "59",
172
+ "other_1": "3",
173
+ "other_2": "100",
174
+ },
175
+ ],
176
+ "ARRL VHF JAN": [
177
+ {
178
+ "callsign": "KF0NRV",
179
+ "sent": "599",
180
+ "receive": "599",
181
+ "other_1": "1234",
182
+ "other_2": "BB22AA",
183
+ },
184
+ {
185
+ "callsign": "KF0NRV",
186
+ "sent": "599",
187
+ "receive": "599",
188
+ "other_1": "1234",
189
+ "other_2": "BB22AA",
190
+ },
191
+ {
192
+ "callsign": "K6GTE",
193
+ "sent": "599",
194
+ "receive": "599",
195
+ "other_1": "2345",
196
+ "other_2": "AA11bb",
197
+ },
198
+ ],
199
+ "ARRL VHF JUN": [
200
+ {
201
+ "callsign": "KF0NRV",
202
+ "sent": "599",
203
+ "receive": "599",
204
+ "other_1": "1234",
205
+ "other_2": "BB22AA",
206
+ },
207
+ {
208
+ "callsign": "KF0NRV",
209
+ "sent": "599",
210
+ "receive": "599",
211
+ "other_1": "1234",
212
+ "other_2": "BB22AA",
213
+ },
214
+ {
215
+ "callsign": "K6GTE",
216
+ "sent": "599",
217
+ "receive": "599",
218
+ "other_1": "2345",
219
+ "other_2": "AA11bb",
220
+ },
221
+ ],
222
+ "ARRL VHF SEP": [
223
+ {
224
+ "callsign": "KF0NRV",
225
+ "sent": "599",
226
+ "receive": "599",
227
+ "other_1": "1234",
228
+ "other_2": "BB22AA",
229
+ },
230
+ {
231
+ "callsign": "KF0NRV",
232
+ "sent": "599",
233
+ "receive": "599",
234
+ "other_1": "1234",
235
+ "other_2": "BB22AA",
236
+ },
237
+ {
238
+ "callsign": "K6GTE",
239
+ "sent": "599",
240
+ "receive": "599",
241
+ "other_1": "2345",
242
+ "other_2": "AA11bb",
243
+ },
244
+ ],
245
+ "CANADA DAY": [
246
+ {
247
+ "callsign": "KF0NRV",
248
+ "sent": "599",
249
+ "receive": "599",
250
+ "other_1": "1",
251
+ "other_2": "ia",
252
+ },
253
+ {
254
+ "callsign": "KF0NRV",
255
+ "sent": "599",
256
+ "receive": "599",
257
+ "other_1": "2",
258
+ "other_2": "ia",
259
+ },
260
+ {
261
+ "callsign": "K6GTE",
262
+ "sent": "599",
263
+ "receive": "599",
264
+ "other_1": "3",
265
+ "other_2": "ca",
266
+ },
267
+ ],
268
+ "CQ 160 CW": [
269
+ {"callsign": "KF0NRV", "sent": "599", "receive": "599", "other_2": "ia"},
270
+ {"callsign": "KF0NRV", "sent": "599", "receive": "599", "other_2": "ia"},
271
+ {"callsign": "K6GTE", "sent": "599", "receive": "599", "other_2": "ca"},
272
+ ],
273
+ "CQ 160 SSB": [
274
+ {"callsign": "KF0NRV", "sent": "59", "receive": "59", "other_2": "ia"},
275
+ {"callsign": "KF0NRV", "sent": "59", "receive": "59", "other_2": "ia"},
276
+ {"callsign": "K6GTE", "sent": "59", "receive": "59", "other_2": "ca"},
277
+ ],
278
+ "CQ WPX CW": [
279
+ {
280
+ "callsign": "KF0NRV",
281
+ "sent": "599",
282
+ "receive": "599",
283
+ "other_1": "1",
284
+ "other_2": "3",
285
+ },
286
+ {
287
+ "callsign": "KF0NRV",
288
+ "sent": "599",
289
+ "receive": "599",
290
+ "other_1": "2",
291
+ "other_2": "2",
292
+ },
293
+ {
294
+ "callsign": "K6GTE",
295
+ "sent": "599",
296
+ "receive": "599",
297
+ "other_1": "3",
298
+ "other_2": "1",
299
+ },
300
+ ],
301
+ "CQ WPX SSB": [
302
+ {
303
+ "callsign": "KF0NRV",
304
+ "sent": "59",
305
+ "receive": "59",
306
+ "other_1": "1",
307
+ "other_2": "3",
308
+ },
309
+ {
310
+ "callsign": "KF0NRV",
311
+ "sent": "59",
312
+ "receive": "59",
313
+ "other_1": "2",
314
+ "other_2": "2",
315
+ },
316
+ {
317
+ "callsign": "K6GTE",
318
+ "sent": "59",
319
+ "receive": "59",
320
+ "other_1": "3",
321
+ "other_2": "1",
322
+ },
323
+ ],
324
+ "CQ WW CW": [
325
+ {"callsign": "KF0NRV", "sent": "599", "receive": "599", "other_2": "4"},
326
+ {"callsign": "KF0NRV", "sent": "599", "receive": "599", "other_2": "4"},
327
+ {"callsign": "K6GTE", "sent": "599", "receive": "599", "other_2": "3"},
328
+ ],
329
+ "CQ WW RTTY": [
330
+ {"callsign": "KF0NRV", "sent": "599", "receive": "599", "other_2": "4"},
331
+ {"callsign": "KF0NRV", "sent": "599", "receive": "599", "other_2": "4"},
332
+ {"callsign": "K6GTE", "sent": "599", "receive": "599", "other_2": "3"},
333
+ ],
334
+ "CQ WW SSB": [
335
+ {"callsign": "KF0NRV", "sent": "59", "receive": "59", "other_2": "4"},
336
+ {"callsign": "KF0NRV", "sent": "59", "receive": "59", "other_2": "4"},
337
+ {"callsign": "K6GTE", "sent": "59", "receive": "59", "other_2": "3"},
338
+ ],
339
+ "CWT": [
340
+ {"callsign": "KF0NRV", "other_1": "dan", "other_2": "ia"},
341
+ {"callsign": "KF0NRV", "other_1": "dan", "other_2": "ia"},
342
+ {"callsign": "K6GTE", "other_1": "mike", "other_2": "ca"},
343
+ ],
344
+ "HELVETIA": [
345
+ {
346
+ "callsign": "KF0NRV",
347
+ "sent": "599",
348
+ "receive": "599",
349
+ "other_1": "1",
350
+ "other_2": "3",
351
+ },
352
+ {
353
+ "callsign": "KF0NRV",
354
+ "sent": "599",
355
+ "receive": "599",
356
+ "other_1": "2",
357
+ "other_2": "2",
358
+ },
359
+ {
360
+ "callsign": "K6GTE",
361
+ "sent": "599",
362
+ "receive": "599",
363
+ "other_1": "3",
364
+ "other_2": "1",
365
+ },
366
+ ],
367
+ "ICWC MST": [
368
+ {"callsign": "KF0NRV", "sent": "1", "other_1": "dan", "other_2": "1"},
369
+ {"callsign": "KF0NRV", "sent": "2", "other_1": "dan", "other_2": "2"},
370
+ {"callsign": "K6GTE", "sent": "3", "other_1": "mike", "other_2": "3"},
371
+ ],
372
+ "IARU FIELDDAY R1 CW": [
373
+ {
374
+ "callsign": "KF0NRV",
375
+ "sent": "599",
376
+ "receive": "599",
377
+ "other_1": "1",
378
+ "other_2": "1",
379
+ },
380
+ {
381
+ "callsign": "KF0NRV",
382
+ "sent": "599",
383
+ "receive": "599",
384
+ "other_1": "2",
385
+ "other_2": "2",
386
+ },
387
+ {
388
+ "callsign": "K6GTE",
389
+ "sent": "599",
390
+ "receive": "599",
391
+ "other_1": "3",
392
+ "other_2": "3",
393
+ },
394
+ ],
395
+ "IARU FIELDDAY R1 SSB": [
396
+ {
397
+ "callsign": "KF0NRV",
398
+ "sent": "59",
399
+ "receive": "59",
400
+ "other_1": "1",
401
+ "other_2": "1",
402
+ },
403
+ {
404
+ "callsign": "KF0NRV",
405
+ "sent": "59",
406
+ "receive": "59",
407
+ "other_1": "2",
408
+ "other_2": "2",
409
+ },
410
+ {
411
+ "callsign": "K6GTE",
412
+ "sent": "59",
413
+ "receive": "59",
414
+ "other_1": "3",
415
+ "other_2": "3",
416
+ },
417
+ ],
418
+ "IARU HF": [
419
+ {"callsign": "KF0NRV", "sent": "599", "receive": "599", "other_2": "7"},
420
+ {"callsign": "KF0NRV", "sent": "599", "receive": "599", "other_2": "7"},
421
+ {"callsign": "K6GTE", "sent": "599", "receive": "599", "other_2": "6"},
422
+ ],
423
+ "JIDX CW": [
424
+ {
425
+ "callsign": "KF0NRV",
426
+ "sent": "599",
427
+ "receive": "599",
428
+ "other_1": "1",
429
+ "other_2": "1",
430
+ },
431
+ {
432
+ "callsign": "KF0NRV",
433
+ "sent": "599",
434
+ "receive": "599",
435
+ "other_1": "2",
436
+ "other_2": "2",
437
+ },
438
+ {
439
+ "callsign": "K6GTE",
440
+ "sent": "599",
441
+ "receive": "599",
442
+ "other_1": "3",
443
+ "other_2": "3",
444
+ },
445
+ ],
446
+ "JIDX PH": [
447
+ {
448
+ "callsign": "KF0NRV",
449
+ "sent": "59",
450
+ "receive": "59",
451
+ "other_1": "1",
452
+ "other_2": "1",
453
+ },
454
+ {
455
+ "callsign": "KF0NRV",
456
+ "sent": "59",
457
+ "receive": "59",
458
+ "other_1": "2",
459
+ "other_2": "2",
460
+ },
461
+ {
462
+ "callsign": "K6GTE",
463
+ "sent": "59",
464
+ "receive": "59",
465
+ "other_1": "3",
466
+ "other_2": "3",
467
+ },
468
+ ],
469
+ "K1USN SST": [
470
+ {"callsign": "KF0NRV", "other_1": "dan", "other_2": "ia"},
471
+ {"callsign": "KF0NRV", "other_1": "dan", "other_2": "ia"},
472
+ {"callsign": "K6GTE", "other_1": "mike", "other_2": "ca"},
473
+ ],
474
+ "NAQP CW": [
475
+ {"callsign": "KF0NRV", "other_1": "dan", "other_2": "ia"},
476
+ {"callsign": "KF0NRV", "other_1": "dan", "other_2": "ia"},
477
+ {"callsign": "K6GTE", "other_1": "mike", "other_2": "ca"},
478
+ ],
479
+ "NAQP SSB": [
480
+ {"callsign": "KF0NRV", "other_1": "dan", "other_2": "ia"},
481
+ {"callsign": "KF0NRV", "other_1": "dan", "other_2": "ia"},
482
+ {"callsign": "K6GTE", "other_1": "mike", "other_2": "ca"},
483
+ ],
484
+ "PHONE WEEKLY TEST": [
485
+ {"callsign": "KF0NRV", "other_1": "dan", "other_2": "ia"},
486
+ {"callsign": "KF0NRV", "other_1": "dan", "other_2": "ia"},
487
+ {"callsign": "K6GTE", "other_1": "mike", "other_2": "ca"},
488
+ ],
489
+ "STEW PERRY TOPBAND": [
490
+ {"callsign": "KF0NRV", "sent": "599", "receive": "599", "other_1": "BB22AA"},
491
+ {"callsign": "KF0NRV", "sent": "599", "receive": "599", "other_1": "BB22AA"},
492
+ {"callsign": "K6GTE", "sent": "599", "receive": "599", "other_1": "AA11bb"},
493
+ ],
494
+ "WEEKLY RTTY": [
495
+ {"callsign": "KF0NRV", "other_1": "dan", "other_2": "ia"},
496
+ {"callsign": "KF0NRV", "other_1": "dan", "other_2": "ia"},
497
+ {"callsign": "K6GTE", "other_1": "mike", "other_2": "ca"},
498
+ ],
499
+ "WINTER FIELD DAY": [
500
+ {"callsign": "KF0NRV", "other_1": "1", "other_2": "a"},
501
+ {"callsign": "KF0NRV", "other_1": "1", "other_2": "a"},
502
+ {"callsign": "K6GTE", "other_1": "1", "other_2": "a"},
503
+ ],
504
+ }
505
+
506
+
507
+ @pytest.fixture
508
+ def app(qtbot):
509
+ # Qbot setup
510
+ not1mm_app = not1mm.MainWindow(not1mm.splash)
511
+ not1mm_app.show()
512
+ qtbot.addWidget(not1mm_app)
513
+
514
+ # Stub out filepicker and create a new database
515
+ if os.path.exists(fsutils.USER_DATA_PATH / "contest_testing.db"):
516
+ os.remove(fsutils.USER_DATA_PATH / "contest_testing.db")
517
+ not1mm_app.filepicker = lambda x: "contest_testing.db"
518
+ not1mm_app.actionNew_Database.trigger()
519
+
520
+ # Enter initial setings as default
521
+ settings_dialog = not1mm_app.settings_dialog
522
+ settings_dialog.Call.setText("K5TUX")
523
+ settings_dialog.ITUZone.setText("7")
524
+ settings_dialog.CQZone.setText("4")
525
+ settings_dialog.Country.setText("United States")
526
+ settings_dialog.GridSquare.setText("EM37bb")
527
+ settings_dialog.Latitude.setText("37.0625")
528
+ settings_dialog.Longitude.setText("-93.875")
529
+
530
+ qtbot.keyClick(
531
+ settings_dialog,
532
+ QtCore.Qt.Key.Key_Tab,
533
+ modifier=QtCore.Qt.KeyboardModifier.ShiftModifier,
534
+ delay=WAIT_TIME,
535
+ )
536
+ qtbot.keyClick(settings_dialog, QtCore.Qt.Key.Key_Return)
537
+
538
+ # Enter initial contest as default
539
+ contest_dialog = not1mm_app.contest_dialog
540
+ qtbot.keyClick(
541
+ contest_dialog,
542
+ QtCore.Qt.Key.Key_Tab,
543
+ modifier=QtCore.Qt.KeyboardModifier.ShiftModifier,
544
+ delay=WAIT_TIME,
545
+ )
546
+ qtbot.keyClick(contest_dialog, QtCore.Qt.Key.Key_Return)
547
+ yield not1mm_app
548
+ # Cleanup
549
+ if os.path.exists(fsutils.USER_DATA_PATH / "contest_testing.db"):
550
+ os.remove(fsutils.USER_DATA_PATH / "contest_testing.db")
551
+
552
+
553
+ def test_contests(app, qtbot):
554
+ # Each contest has an initial log, a duplicate log, and a unique log
555
+
556
+ for contest in CONTEST_DATA:
557
+ app.actionNew_Contest.trigger()
558
+
559
+ contest_dialog = app.contest_dialog
560
+ contest_dialog.contest.setCurrentText(contest)
561
+ qtbot.keyClick(
562
+ contest_dialog,
563
+ QtCore.Qt.Key.Key_Tab,
564
+ modifier=QtCore.Qt.KeyboardModifier.ShiftModifier,
565
+ delay=WAIT_TIME,
566
+ )
567
+ qtbot.keyClick(contest_dialog, QtCore.Qt.Key.Key_Return)
568
+
569
+ # Enter each field and tab keystroke to exercise plugin hooks
570
+ for entry in CONTEST_DATA[contest]:
571
+ if "callsign" in entry:
572
+ app.callsign.setText(entry["callsign"])
573
+ qtbot.keyClick(app, QtCore.Qt.Key.Key_Tab, delay=WAIT_TIME)
574
+
575
+ if "sent" in entry:
576
+ app.sent.setText(entry["sent"])
577
+ qtbot.keyClick(app, QtCore.Qt.Key.Key_Tab, delay=WAIT_TIME)
578
+
579
+ if "receive" in entry:
580
+ app.receive.setText(entry["receive"])
581
+ qtbot.keyClick(app, QtCore.Qt.Key.Key_Tab, delay=WAIT_TIME)
582
+
583
+ if "other_1" in entry:
584
+ app.other_1.setText(entry["other_1"])
585
+ qtbot.keyClick(app, QtCore.Qt.Key.Key_Tab, delay=WAIT_TIME)
586
+
587
+ if "other_2" in entry:
588
+ app.other_2.setText(entry["other_2"])
589
+
590
+ qtbot.wait(WAIT_TIME)
591
+ qtbot.keyClick(app.callsign, QtCore.Qt.Key.Key_Return)