not1mm 24.10.10__py3-none-any.whl → 24.10.13__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 +16 -2
- not1mm/lib/version.py +1 -1
- not1mm/plugins/cq_ww_cw.py +3 -10
- not1mm/plugins/cq_ww_rtty.py +125 -16
- not1mm/plugins/cq_ww_ssb.py +99 -0
- not1mm/plugins/cwt.py +99 -0
- not1mm/plugins/k1usn_sst.py +99 -0
- not1mm/plugins/weekly_rtty.py +105 -0
- {not1mm-24.10.10.dist-info → not1mm-24.10.13.dist-info}/METADATA +41 -39
- {not1mm-24.10.10.dist-info → not1mm-24.10.13.dist-info}/RECORD +14 -14
- {not1mm-24.10.10.dist-info → not1mm-24.10.13.dist-info}/LICENSE +0 -0
- {not1mm-24.10.10.dist-info → not1mm-24.10.13.dist-info}/WHEEL +0 -0
- {not1mm-24.10.10.dist-info → not1mm-24.10.13.dist-info}/entry_points.txt +0 -0
- {not1mm-24.10.10.dist-info → not1mm-24.10.13.dist-info}/top_level.txt +0 -0
not1mm/__main__.py
CHANGED
@@ -199,6 +199,13 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
199
199
|
self.setCorner(Qt.Corner.BottomLeftCorner, Qt.DockWidgetArea.LeftDockWidgetArea)
|
200
200
|
uic.loadUi(fsutils.APP_DATA_PATH / "main.ui", self)
|
201
201
|
QApplication.instance().focusObjectChanged.connect(self.on_focus_changed)
|
202
|
+
self.inputs_dict = {
|
203
|
+
self.callsign: "callsign",
|
204
|
+
self.sent: "sent",
|
205
|
+
self.receive: "receive",
|
206
|
+
self.other_1: "other_1",
|
207
|
+
self.other_2: "other_2",
|
208
|
+
}
|
202
209
|
self.cw_entry.hide()
|
203
210
|
self.leftdot.hide()
|
204
211
|
self.rightdot.hide()
|
@@ -2107,6 +2114,10 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
2107
2114
|
float(self.radio_state.get("vfoa", 0.0)) / 1000, 2
|
2108
2115
|
)
|
2109
2116
|
self.contact["Mode"] = self.radio_state.get("mode", "")
|
2117
|
+
self.contact["Freq"] = round(float(self.radio_state.get("vfoa", 0.0)) / 1000, 2)
|
2118
|
+
self.contact["QSXFreq"] = round(
|
2119
|
+
float(self.radio_state.get("vfoa", 0.0)) / 1000, 2
|
2120
|
+
)
|
2110
2121
|
self.contact["ContestName"] = self.contest.cabrillo_name
|
2111
2122
|
self.contact["ContestNR"] = self.pref.get("contest", "0")
|
2112
2123
|
self.contact["StationPrefix"] = self.station.get("Call", "")
|
@@ -2465,7 +2476,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
2465
2476
|
app.processEvents()
|
2466
2477
|
self.rig_control.ptt_off()
|
2467
2478
|
|
2468
|
-
def process_function_key(self, function_key) -> None:
|
2479
|
+
def process_function_key(self, function_key, rttysendrx=True) -> None:
|
2469
2480
|
"""
|
2470
2481
|
Called when a function key is clicked.
|
2471
2482
|
|
@@ -2495,7 +2506,10 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
2495
2506
|
"DIGI-U",
|
2496
2507
|
"DIGI-L",
|
2497
2508
|
]:
|
2498
|
-
self.fldigi_util.send_string(
|
2509
|
+
self.fldigi_util.send_string(
|
2510
|
+
self.process_macro(function_key.toolTip()), rxafter=rttysendrx
|
2511
|
+
)
|
2512
|
+
return
|
2499
2513
|
if self.cw:
|
2500
2514
|
if self.pref.get("cwtype") == 3 and self.rig_control is not None:
|
2501
2515
|
self.rig_control.sendcw(self.process_macro(function_key.toolTip()))
|
not1mm/lib/version.py
CHANGED
not1mm/plugins/cq_ww_cw.py
CHANGED
@@ -403,15 +403,8 @@ def process_esm(self, new_focused_widget=None, with_enter=False):
|
|
403
403
|
# self.other_1
|
404
404
|
# self.other_2
|
405
405
|
|
406
|
-
inputs = {
|
407
|
-
self.callsign: "callsign",
|
408
|
-
self.sent: "sent",
|
409
|
-
self.receive: "receive",
|
410
|
-
self.other_1: "other_1",
|
411
|
-
self.other_2: "other_2",
|
412
|
-
}
|
413
406
|
if new_focused_widget is not None:
|
414
|
-
self.current_widget =
|
407
|
+
self.current_widget = self.inputs_dict.get(new_focused_widget)
|
415
408
|
|
416
409
|
# print(f"checking esm {self.current_widget=} {with_enter=} {self.pref.get("run_state")=}")
|
417
410
|
|
@@ -444,7 +437,7 @@ def process_esm(self, new_focused_widget=None, with_enter=False):
|
|
444
437
|
buttons_to_send.append(self.esm_dict["HISCALL"])
|
445
438
|
buttons_to_send.append(self.esm_dict["EXCH"])
|
446
439
|
|
447
|
-
|
440
|
+
elif self.current_widget == "other_2":
|
448
441
|
if self.other_2.text() == "":
|
449
442
|
self.make_button_green(self.esm_dict["AGN"])
|
450
443
|
buttons_to_send.append(self.esm_dict["AGN"])
|
@@ -469,7 +462,7 @@ def process_esm(self, new_focused_widget=None, with_enter=False):
|
|
469
462
|
self.make_button_green(self.esm_dict["MYCALL"])
|
470
463
|
buttons_to_send.append(self.esm_dict["MYCALL"])
|
471
464
|
|
472
|
-
|
465
|
+
elif self.current_widget == "other_2":
|
473
466
|
if self.other_2.text() == "":
|
474
467
|
self.make_button_green(self.esm_dict["AGN"])
|
475
468
|
buttons_to_send.append(self.esm_dict["AGN"])
|
not1mm/plugins/cq_ww_rtty.py
CHANGED
@@ -146,7 +146,7 @@ def set_contact_vars(self):
|
|
146
146
|
self.contact["ZN"] = self.other_1.text()
|
147
147
|
self.contact["Exchange1"] = self.other_2.text()
|
148
148
|
self.contact["SentNr"] = self.contest_settings.get("SentExchange", 0)
|
149
|
-
|
149
|
+
|
150
150
|
|
151
151
|
def predupe(self):
|
152
152
|
"""called after callsign entered"""
|
@@ -195,7 +195,11 @@ def show_mults(self):
|
|
195
195
|
res3_query = f"select count(DISTINCT(Exchange1 || ':' || Band)) as spc_count from dxlog where ContestNR = {self.database.current_contest};"
|
196
196
|
result3 = self.database.exec_sql(res3_query)
|
197
197
|
if result1 and result2 and result3:
|
198
|
-
return
|
198
|
+
return (
|
199
|
+
int(result1.get("zb_count", 0))
|
200
|
+
+ int(result2.get("cb_count", 0))
|
201
|
+
+ int(result3.get("spc_count", 0))
|
202
|
+
)
|
199
203
|
return 0
|
200
204
|
|
201
205
|
|
@@ -366,21 +370,21 @@ def cabrillo(self):
|
|
366
370
|
if themode == "LSB" or themode == "USB":
|
367
371
|
themode = "PH"
|
368
372
|
if themode.strip() in (
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
373
|
+
"RTTY",
|
374
|
+
"RTTY-R",
|
375
|
+
"LSB-D",
|
376
|
+
"USB-D",
|
377
|
+
"AM-D",
|
378
|
+
"FM-D",
|
379
|
+
"DIGI-U",
|
380
|
+
"DIGI-L",
|
381
|
+
"RTTYR",
|
382
|
+
"PKTLSB",
|
383
|
+
"PKTUSB",
|
384
|
+
):
|
381
385
|
themode = "RY"
|
382
|
-
exchange1 = contact.get(
|
383
|
-
if exchange1 ==
|
386
|
+
exchange1 = contact.get("Exchange1", "")
|
387
|
+
if exchange1 == "":
|
384
388
|
exchange1 = "DX"
|
385
389
|
frequency = str(int(contact.get("Freq", "0"))).rjust(5)
|
386
390
|
|
@@ -491,3 +495,108 @@ def ft8_handler(the_packet: dict):
|
|
491
495
|
ALTEREGO.other_1.setText(str(the_packet.get("CQZ", "ERR")))
|
492
496
|
ALTEREGO.other_2.setText(f'{the_packet.get("STATE", "")}'.strip())
|
493
497
|
ALTEREGO.save_contact()
|
498
|
+
|
499
|
+
|
500
|
+
def process_esm(self, new_focused_widget=None, with_enter=False):
|
501
|
+
"""ESM State Machine"""
|
502
|
+
|
503
|
+
# self.pref["run_state"]
|
504
|
+
|
505
|
+
# -----===== Assigned F-Keys =====-----
|
506
|
+
# self.esm_dict["CQ"]
|
507
|
+
# self.esm_dict["EXCH"]
|
508
|
+
# self.esm_dict["QRZ"]
|
509
|
+
# self.esm_dict["AGN"]
|
510
|
+
# self.esm_dict["HISCALL"]
|
511
|
+
# self.esm_dict["MYCALL"]
|
512
|
+
# self.esm_dict["QSOB4"]
|
513
|
+
|
514
|
+
# ----==== text fields ====----
|
515
|
+
# self.callsign
|
516
|
+
# self.sent
|
517
|
+
# self.receive
|
518
|
+
# self.other_1
|
519
|
+
# self.other_2
|
520
|
+
|
521
|
+
if new_focused_widget is not None:
|
522
|
+
self.current_widget = self.inputs_dict.get(new_focused_widget)
|
523
|
+
|
524
|
+
# print(f"checking esm {self.current_widget=} {with_enter=} {self.pref.get("run_state")=}")
|
525
|
+
|
526
|
+
for a_button in [
|
527
|
+
self.F1,
|
528
|
+
self.F2,
|
529
|
+
self.F3,
|
530
|
+
self.F4,
|
531
|
+
self.F5,
|
532
|
+
self.F6,
|
533
|
+
self.F7,
|
534
|
+
self.F8,
|
535
|
+
self.F9,
|
536
|
+
self.F10,
|
537
|
+
self.F11,
|
538
|
+
self.F12,
|
539
|
+
]:
|
540
|
+
self.restore_button_color(a_button)
|
541
|
+
|
542
|
+
buttons_to_send = []
|
543
|
+
|
544
|
+
if self.pref.get("run_state"):
|
545
|
+
if self.current_widget == "callsign":
|
546
|
+
if len(self.callsign.text()) < 3:
|
547
|
+
self.make_button_green(self.esm_dict["CQ"])
|
548
|
+
buttons_to_send.append(self.esm_dict["CQ"])
|
549
|
+
elif len(self.callsign.text()) > 2 and self.callsign.text().isalnum():
|
550
|
+
self.make_button_green(self.esm_dict["HISCALL"])
|
551
|
+
self.make_button_green(self.esm_dict["EXCH"])
|
552
|
+
buttons_to_send.append(self.esm_dict["HISCALL"])
|
553
|
+
buttons_to_send.append(self.esm_dict["EXCH"])
|
554
|
+
|
555
|
+
elif self.current_widget in ["other_1", "other_2"]:
|
556
|
+
if self.other_2.text() == "" or self.other_1.text() == "":
|
557
|
+
self.make_button_green(self.esm_dict["AGN"])
|
558
|
+
buttons_to_send.append(self.esm_dict["AGN"])
|
559
|
+
elif self.other_1.text().isnumeric() and self.other_2.text().isalpha():
|
560
|
+
self.make_button_green(self.esm_dict["QRZ"])
|
561
|
+
buttons_to_send.append(self.esm_dict["QRZ"])
|
562
|
+
buttons_to_send.append("LOGIT")
|
563
|
+
else:
|
564
|
+
self.make_button_green(self.esm_dict["AGN"])
|
565
|
+
buttons_to_send.append(self.esm_dict["AGN"])
|
566
|
+
|
567
|
+
if with_enter is True and bool(len(buttons_to_send)):
|
568
|
+
sendstring = ""
|
569
|
+
for button in buttons_to_send:
|
570
|
+
if button:
|
571
|
+
if button == "LOGIT":
|
572
|
+
self.save_contact()
|
573
|
+
continue
|
574
|
+
sendstring = f"{sendstring}{self.process_macro(button.toolTip())} "
|
575
|
+
self.fldigi_util.send_string(sendstring)
|
576
|
+
else:
|
577
|
+
if self.current_widget == "callsign":
|
578
|
+
if len(self.callsign.text()) > 2 and self.callsign.text().isalnum():
|
579
|
+
self.make_button_green(self.esm_dict["MYCALL"])
|
580
|
+
buttons_to_send.append(self.esm_dict["MYCALL"])
|
581
|
+
|
582
|
+
elif self.current_widget in ["other_1", "other_2"]:
|
583
|
+
if self.other_2.text() == "" or self.other_1.text() == "":
|
584
|
+
self.make_button_green(self.esm_dict["AGN"])
|
585
|
+
buttons_to_send.append(self.esm_dict["AGN"])
|
586
|
+
elif self.other_1.text().isnumeric() and self.other_2.text().isalpha():
|
587
|
+
self.make_button_green(self.esm_dict["EXCH"])
|
588
|
+
buttons_to_send.append(self.esm_dict["EXCH"])
|
589
|
+
buttons_to_send.append("LOGIT")
|
590
|
+
else:
|
591
|
+
self.make_button_green(self.esm_dict["AGN"])
|
592
|
+
buttons_to_send.append(self.esm_dict["AGN"])
|
593
|
+
|
594
|
+
if with_enter is True and bool(len(buttons_to_send)):
|
595
|
+
sendstring = ""
|
596
|
+
for button in buttons_to_send:
|
597
|
+
if button:
|
598
|
+
if button == "LOGIT":
|
599
|
+
self.save_contact()
|
600
|
+
continue
|
601
|
+
sendstring = f"{sendstring}{self.process_macro(button.toolTip())} "
|
602
|
+
self.fldigi_util.send_string(sendstring)
|
not1mm/plugins/cq_ww_ssb.py
CHANGED
@@ -380,3 +380,102 @@ def cabrillo(self):
|
|
380
380
|
|
381
381
|
def recalculate_mults(self):
|
382
382
|
"""Recalculates multipliers after change in logged qso."""
|
383
|
+
|
384
|
+
|
385
|
+
def process_esm(self, new_focused_widget=None, with_enter=False):
|
386
|
+
"""ESM State Machine"""
|
387
|
+
|
388
|
+
# self.pref["run_state"]
|
389
|
+
|
390
|
+
# -----===== Assigned F-Keys =====-----
|
391
|
+
# self.esm_dict["CQ"]
|
392
|
+
# self.esm_dict["EXCH"]
|
393
|
+
# self.esm_dict["QRZ"]
|
394
|
+
# self.esm_dict["AGN"]
|
395
|
+
# self.esm_dict["HISCALL"]
|
396
|
+
# self.esm_dict["MYCALL"]
|
397
|
+
# self.esm_dict["QSOB4"]
|
398
|
+
|
399
|
+
# ----==== text fields ====----
|
400
|
+
# self.callsign
|
401
|
+
# self.sent
|
402
|
+
# self.receive
|
403
|
+
# self.other_1
|
404
|
+
# self.other_2
|
405
|
+
|
406
|
+
if new_focused_widget is not None:
|
407
|
+
self.current_widget = self.inputs_dict.get(new_focused_widget)
|
408
|
+
|
409
|
+
for a_button in [
|
410
|
+
self.F1,
|
411
|
+
self.F2,
|
412
|
+
self.F3,
|
413
|
+
self.F4,
|
414
|
+
self.F5,
|
415
|
+
self.F6,
|
416
|
+
self.F7,
|
417
|
+
self.F8,
|
418
|
+
self.F9,
|
419
|
+
self.F10,
|
420
|
+
self.F11,
|
421
|
+
self.F12,
|
422
|
+
]:
|
423
|
+
self.restore_button_color(a_button)
|
424
|
+
|
425
|
+
buttons_to_send = []
|
426
|
+
|
427
|
+
if self.pref.get("run_state"):
|
428
|
+
if self.current_widget == "callsign":
|
429
|
+
if len(self.callsign.text()) < 3:
|
430
|
+
self.make_button_green(self.esm_dict["CQ"])
|
431
|
+
buttons_to_send.append(self.esm_dict["CQ"])
|
432
|
+
elif len(self.callsign.text()) > 2 and self.callsign.text().isalnum():
|
433
|
+
self.make_button_green(self.esm_dict["HISCALL"])
|
434
|
+
self.make_button_green(self.esm_dict["EXCH"])
|
435
|
+
buttons_to_send.append(self.esm_dict["HISCALL"])
|
436
|
+
buttons_to_send.append(self.esm_dict["EXCH"])
|
437
|
+
|
438
|
+
elif self.current_widget == "other_2":
|
439
|
+
if self.other_2.text() == "":
|
440
|
+
self.make_button_green(self.esm_dict["AGN"])
|
441
|
+
buttons_to_send.append(self.esm_dict["AGN"])
|
442
|
+
elif self.other_2.text().isnumeric():
|
443
|
+
self.make_button_green(self.esm_dict["QRZ"])
|
444
|
+
buttons_to_send.append(self.esm_dict["QRZ"])
|
445
|
+
buttons_to_send.append("LOGIT")
|
446
|
+
else:
|
447
|
+
self.make_button_green(self.esm_dict["AGN"])
|
448
|
+
buttons_to_send.append(self.esm_dict["AGN"])
|
449
|
+
|
450
|
+
if with_enter is True and bool(len(buttons_to_send)):
|
451
|
+
for button in buttons_to_send:
|
452
|
+
if button:
|
453
|
+
if button == "LOGIT":
|
454
|
+
self.save_contact()
|
455
|
+
continue
|
456
|
+
self.process_function_key(button)
|
457
|
+
else:
|
458
|
+
if self.current_widget == "callsign":
|
459
|
+
if len(self.callsign.text()) > 2 and self.callsign.text().isalnum():
|
460
|
+
self.make_button_green(self.esm_dict["MYCALL"])
|
461
|
+
buttons_to_send.append(self.esm_dict["MYCALL"])
|
462
|
+
|
463
|
+
elif self.current_widget == "other_2":
|
464
|
+
if self.other_2.text() == "":
|
465
|
+
self.make_button_green(self.esm_dict["AGN"])
|
466
|
+
buttons_to_send.append(self.esm_dict["AGN"])
|
467
|
+
elif self.other_2.text().isnumeric():
|
468
|
+
self.make_button_green(self.esm_dict["EXCH"])
|
469
|
+
buttons_to_send.append(self.esm_dict["EXCH"])
|
470
|
+
buttons_to_send.append("LOGIT")
|
471
|
+
else:
|
472
|
+
self.make_button_green(self.esm_dict["AGN"])
|
473
|
+
buttons_to_send.append(self.esm_dict["AGN"])
|
474
|
+
|
475
|
+
if with_enter is True and bool(len(buttons_to_send)):
|
476
|
+
for button in buttons_to_send:
|
477
|
+
if button:
|
478
|
+
if button == "LOGIT":
|
479
|
+
self.save_contact()
|
480
|
+
continue
|
481
|
+
self.process_function_key(button)
|
not1mm/plugins/cwt.py
CHANGED
@@ -390,3 +390,102 @@ def recalculate_mults(self):
|
|
390
390
|
else:
|
391
391
|
contact["IsMultiplier1"] = 0
|
392
392
|
self.database.change_contact(contact)
|
393
|
+
|
394
|
+
|
395
|
+
def process_esm(self, new_focused_widget=None, with_enter=False):
|
396
|
+
"""ESM State Machine"""
|
397
|
+
|
398
|
+
# self.pref["run_state"]
|
399
|
+
|
400
|
+
# -----===== Assigned F-Keys =====-----
|
401
|
+
# self.esm_dict["CQ"]
|
402
|
+
# self.esm_dict["EXCH"]
|
403
|
+
# self.esm_dict["QRZ"]
|
404
|
+
# self.esm_dict["AGN"]
|
405
|
+
# self.esm_dict["HISCALL"]
|
406
|
+
# self.esm_dict["MYCALL"]
|
407
|
+
# self.esm_dict["QSOB4"]
|
408
|
+
|
409
|
+
# ----==== text fields ====----
|
410
|
+
# self.callsign
|
411
|
+
# self.sent
|
412
|
+
# self.receive
|
413
|
+
# self.other_1
|
414
|
+
# self.other_2
|
415
|
+
|
416
|
+
if new_focused_widget is not None:
|
417
|
+
self.current_widget = self.inputs_dict.get(new_focused_widget)
|
418
|
+
|
419
|
+
# print(f"checking esm {self.current_widget=} {with_enter=} {self.pref.get("run_state")=}")
|
420
|
+
|
421
|
+
for a_button in [
|
422
|
+
self.F1,
|
423
|
+
self.F2,
|
424
|
+
self.F3,
|
425
|
+
self.F4,
|
426
|
+
self.F5,
|
427
|
+
self.F6,
|
428
|
+
self.F7,
|
429
|
+
self.F8,
|
430
|
+
self.F9,
|
431
|
+
self.F10,
|
432
|
+
self.F11,
|
433
|
+
self.F12,
|
434
|
+
]:
|
435
|
+
self.restore_button_color(a_button)
|
436
|
+
|
437
|
+
buttons_to_send = []
|
438
|
+
|
439
|
+
if self.pref.get("run_state"):
|
440
|
+
if self.current_widget == "callsign":
|
441
|
+
if len(self.callsign.text()) < 3:
|
442
|
+
self.make_button_green(self.esm_dict["CQ"])
|
443
|
+
buttons_to_send.append(self.esm_dict["CQ"])
|
444
|
+
elif len(self.callsign.text()) > 2 and self.callsign.text().isalnum():
|
445
|
+
self.make_button_green(self.esm_dict["HISCALL"])
|
446
|
+
self.make_button_green(self.esm_dict["EXCH"])
|
447
|
+
buttons_to_send.append(self.esm_dict["HISCALL"])
|
448
|
+
buttons_to_send.append(self.esm_dict["EXCH"])
|
449
|
+
|
450
|
+
elif self.current_widget in ["other_1", "other_2"]:
|
451
|
+
if self.other_2.text() == "" or self.other_1.text() == "":
|
452
|
+
self.make_button_green(self.esm_dict["AGN"])
|
453
|
+
buttons_to_send.append(self.esm_dict["AGN"])
|
454
|
+
elif self.other_1.text().isalpha() and self.other_2.text().isalpha():
|
455
|
+
self.make_button_green(self.esm_dict["QRZ"])
|
456
|
+
buttons_to_send.append(self.esm_dict["QRZ"])
|
457
|
+
buttons_to_send.append("LOGIT")
|
458
|
+
else:
|
459
|
+
self.make_button_green(self.esm_dict["AGN"])
|
460
|
+
buttons_to_send.append(self.esm_dict["AGN"])
|
461
|
+
if with_enter is True and bool(len(buttons_to_send)):
|
462
|
+
for button in buttons_to_send:
|
463
|
+
if button:
|
464
|
+
if button == "LOGIT":
|
465
|
+
self.save_contact()
|
466
|
+
continue
|
467
|
+
self.process_function_key(button)
|
468
|
+
else:
|
469
|
+
if self.current_widget == "callsign":
|
470
|
+
if len(self.callsign.text()) > 2 and self.callsign.text().isalnum():
|
471
|
+
self.make_button_green(self.esm_dict["MYCALL"])
|
472
|
+
buttons_to_send.append(self.esm_dict["MYCALL"])
|
473
|
+
|
474
|
+
elif self.current_widget in ["other_1", "other_2"]:
|
475
|
+
if self.other_2.text() == "" or self.other_1.text() == "":
|
476
|
+
self.make_button_green(self.esm_dict["AGN"])
|
477
|
+
buttons_to_send.append(self.esm_dict["AGN"])
|
478
|
+
elif self.other_1.text().isalpha() and self.other_2.text().isalpha():
|
479
|
+
self.make_button_green(self.esm_dict["EXCH"])
|
480
|
+
buttons_to_send.append(self.esm_dict["EXCH"])
|
481
|
+
buttons_to_send.append("LOGIT")
|
482
|
+
else:
|
483
|
+
self.make_button_green(self.esm_dict["AGN"])
|
484
|
+
buttons_to_send.append(self.esm_dict["AGN"])
|
485
|
+
if with_enter is True and bool(len(buttons_to_send)):
|
486
|
+
for button in buttons_to_send:
|
487
|
+
if button:
|
488
|
+
if button == "LOGIT":
|
489
|
+
self.save_contact()
|
490
|
+
continue
|
491
|
+
self.process_function_key(button)
|
not1mm/plugins/k1usn_sst.py
CHANGED
@@ -365,3 +365,102 @@ def recalculate_mults(self):
|
|
365
365
|
cmd["cmd"] = "UPDATELOG"
|
366
366
|
cmd["station"] = platform.node()
|
367
367
|
self.multicast_interface.send_as_json(cmd)
|
368
|
+
|
369
|
+
|
370
|
+
def process_esm(self, new_focused_widget=None, with_enter=False):
|
371
|
+
"""ESM State Machine"""
|
372
|
+
|
373
|
+
# self.pref["run_state"]
|
374
|
+
|
375
|
+
# -----===== Assigned F-Keys =====-----
|
376
|
+
# self.esm_dict["CQ"]
|
377
|
+
# self.esm_dict["EXCH"]
|
378
|
+
# self.esm_dict["QRZ"]
|
379
|
+
# self.esm_dict["AGN"]
|
380
|
+
# self.esm_dict["HISCALL"]
|
381
|
+
# self.esm_dict["MYCALL"]
|
382
|
+
# self.esm_dict["QSOB4"]
|
383
|
+
|
384
|
+
# ----==== text fields ====----
|
385
|
+
# self.callsign
|
386
|
+
# self.sent
|
387
|
+
# self.receive
|
388
|
+
# self.other_1
|
389
|
+
# self.other_2
|
390
|
+
|
391
|
+
if new_focused_widget is not None:
|
392
|
+
self.current_widget = self.inputs_dict.get(new_focused_widget)
|
393
|
+
|
394
|
+
# print(f"checking esm {self.current_widget=} {with_enter=} {self.pref.get("run_state")=}")
|
395
|
+
|
396
|
+
for a_button in [
|
397
|
+
self.F1,
|
398
|
+
self.F2,
|
399
|
+
self.F3,
|
400
|
+
self.F4,
|
401
|
+
self.F5,
|
402
|
+
self.F6,
|
403
|
+
self.F7,
|
404
|
+
self.F8,
|
405
|
+
self.F9,
|
406
|
+
self.F10,
|
407
|
+
self.F11,
|
408
|
+
self.F12,
|
409
|
+
]:
|
410
|
+
self.restore_button_color(a_button)
|
411
|
+
|
412
|
+
buttons_to_send = []
|
413
|
+
|
414
|
+
if self.pref.get("run_state"):
|
415
|
+
if self.current_widget == "callsign":
|
416
|
+
if len(self.callsign.text()) < 3:
|
417
|
+
self.make_button_green(self.esm_dict["CQ"])
|
418
|
+
buttons_to_send.append(self.esm_dict["CQ"])
|
419
|
+
elif len(self.callsign.text()) > 2 and self.callsign.text().isalnum():
|
420
|
+
self.make_button_green(self.esm_dict["HISCALL"])
|
421
|
+
self.make_button_green(self.esm_dict["EXCH"])
|
422
|
+
buttons_to_send.append(self.esm_dict["HISCALL"])
|
423
|
+
buttons_to_send.append(self.esm_dict["EXCH"])
|
424
|
+
|
425
|
+
elif self.current_widget in ["other_1", "other_2"]:
|
426
|
+
if self.other_2.text() == "" or self.other_1.text() == "":
|
427
|
+
self.make_button_green(self.esm_dict["AGN"])
|
428
|
+
buttons_to_send.append(self.esm_dict["AGN"])
|
429
|
+
elif self.other_1.text().isalpha() and self.other_2.text().isalpha():
|
430
|
+
self.make_button_green(self.esm_dict["QRZ"])
|
431
|
+
buttons_to_send.append(self.esm_dict["QRZ"])
|
432
|
+
buttons_to_send.append("LOGIT")
|
433
|
+
else:
|
434
|
+
self.make_button_green(self.esm_dict["AGN"])
|
435
|
+
buttons_to_send.append(self.esm_dict["AGN"])
|
436
|
+
if with_enter is True and bool(len(buttons_to_send)):
|
437
|
+
for button in buttons_to_send:
|
438
|
+
if button:
|
439
|
+
if button == "LOGIT":
|
440
|
+
self.save_contact()
|
441
|
+
continue
|
442
|
+
self.process_function_key(button)
|
443
|
+
else:
|
444
|
+
if self.current_widget == "callsign":
|
445
|
+
if len(self.callsign.text()) > 2 and self.callsign.text().isalnum():
|
446
|
+
self.make_button_green(self.esm_dict["MYCALL"])
|
447
|
+
buttons_to_send.append(self.esm_dict["MYCALL"])
|
448
|
+
|
449
|
+
elif self.current_widget in ["other_1", "other_2"]:
|
450
|
+
if self.other_2.text() == "" or self.other_1.text() == "":
|
451
|
+
self.make_button_green(self.esm_dict["AGN"])
|
452
|
+
buttons_to_send.append(self.esm_dict["AGN"])
|
453
|
+
elif self.other_1.text().isalpha() and self.other_2.text().isalpha():
|
454
|
+
self.make_button_green(self.esm_dict["EXCH"])
|
455
|
+
buttons_to_send.append(self.esm_dict["EXCH"])
|
456
|
+
buttons_to_send.append("LOGIT")
|
457
|
+
else:
|
458
|
+
self.make_button_green(self.esm_dict["AGN"])
|
459
|
+
buttons_to_send.append(self.esm_dict["AGN"])
|
460
|
+
if with_enter is True and bool(len(buttons_to_send)):
|
461
|
+
for button in buttons_to_send:
|
462
|
+
if button:
|
463
|
+
if button == "LOGIT":
|
464
|
+
self.save_contact()
|
465
|
+
continue
|
466
|
+
self.process_function_key(button)
|
not1mm/plugins/weekly_rtty.py
CHANGED
@@ -440,3 +440,108 @@ def ft8_handler(the_packet: dict):
|
|
440
440
|
ALTEREGO.contact["IsMultiplier1"] = 1
|
441
441
|
logger.debug(f"{ALTEREGO.contact=}")
|
442
442
|
ALTEREGO.save_contact()
|
443
|
+
|
444
|
+
|
445
|
+
def process_esm(self, new_focused_widget=None, with_enter=False):
|
446
|
+
"""ESM State Machine"""
|
447
|
+
|
448
|
+
# self.pref["run_state"]
|
449
|
+
|
450
|
+
# -----===== Assigned F-Keys =====-----
|
451
|
+
# self.esm_dict["CQ"]
|
452
|
+
# self.esm_dict["EXCH"]
|
453
|
+
# self.esm_dict["QRZ"]
|
454
|
+
# self.esm_dict["AGN"]
|
455
|
+
# self.esm_dict["HISCALL"]
|
456
|
+
# self.esm_dict["MYCALL"]
|
457
|
+
# self.esm_dict["QSOB4"]
|
458
|
+
|
459
|
+
# ----==== text fields ====----
|
460
|
+
# self.callsign
|
461
|
+
# self.sent
|
462
|
+
# self.receive
|
463
|
+
# self.other_1
|
464
|
+
# self.other_2
|
465
|
+
|
466
|
+
if new_focused_widget is not None:
|
467
|
+
self.current_widget = self.inputs_dict.get(new_focused_widget)
|
468
|
+
|
469
|
+
# print(f"checking esm {self.current_widget=} {with_enter=} {self.pref.get("run_state")=}")
|
470
|
+
|
471
|
+
for a_button in [
|
472
|
+
self.F1,
|
473
|
+
self.F2,
|
474
|
+
self.F3,
|
475
|
+
self.F4,
|
476
|
+
self.F5,
|
477
|
+
self.F6,
|
478
|
+
self.F7,
|
479
|
+
self.F8,
|
480
|
+
self.F9,
|
481
|
+
self.F10,
|
482
|
+
self.F11,
|
483
|
+
self.F12,
|
484
|
+
]:
|
485
|
+
self.restore_button_color(a_button)
|
486
|
+
|
487
|
+
buttons_to_send = []
|
488
|
+
|
489
|
+
if self.pref.get("run_state"):
|
490
|
+
if self.current_widget == "callsign":
|
491
|
+
if len(self.callsign.text()) < 3:
|
492
|
+
self.make_button_green(self.esm_dict["CQ"])
|
493
|
+
buttons_to_send.append(self.esm_dict["CQ"])
|
494
|
+
elif len(self.callsign.text()) > 2 and self.callsign.text().isalnum():
|
495
|
+
self.make_button_green(self.esm_dict["HISCALL"])
|
496
|
+
self.make_button_green(self.esm_dict["EXCH"])
|
497
|
+
buttons_to_send.append(self.esm_dict["HISCALL"])
|
498
|
+
buttons_to_send.append(self.esm_dict["EXCH"])
|
499
|
+
|
500
|
+
elif self.current_widget in ["other_1", "other_2"]:
|
501
|
+
if self.other_2.text() == "" or self.other_1.text() == "":
|
502
|
+
self.make_button_green(self.esm_dict["AGN"])
|
503
|
+
buttons_to_send.append(self.esm_dict["AGN"])
|
504
|
+
elif self.other_1.text().isalpha() and self.other_2.text().isalpha():
|
505
|
+
self.make_button_green(self.esm_dict["QRZ"])
|
506
|
+
buttons_to_send.append(self.esm_dict["QRZ"])
|
507
|
+
buttons_to_send.append("LOGIT")
|
508
|
+
else:
|
509
|
+
self.make_button_green(self.esm_dict["AGN"])
|
510
|
+
buttons_to_send.append(self.esm_dict["AGN"])
|
511
|
+
|
512
|
+
if with_enter is True and bool(len(buttons_to_send)):
|
513
|
+
sendstring = ""
|
514
|
+
for button in buttons_to_send:
|
515
|
+
if button:
|
516
|
+
if button == "LOGIT":
|
517
|
+
self.save_contact()
|
518
|
+
continue
|
519
|
+
sendstring = f"{sendstring}{self.process_macro(button.toolTip())} "
|
520
|
+
self.fldigi_util.send_string(sendstring)
|
521
|
+
else:
|
522
|
+
if self.current_widget == "callsign":
|
523
|
+
if len(self.callsign.text()) > 2 and self.callsign.text().isalnum():
|
524
|
+
self.make_button_green(self.esm_dict["MYCALL"])
|
525
|
+
buttons_to_send.append(self.esm_dict["MYCALL"])
|
526
|
+
|
527
|
+
elif self.current_widget in ["other_1", "other_2"]:
|
528
|
+
if self.other_2.text() == "" or self.other_1.text() == "":
|
529
|
+
self.make_button_green(self.esm_dict["AGN"])
|
530
|
+
buttons_to_send.append(self.esm_dict["AGN"])
|
531
|
+
elif self.other_1.text().isalpha() and self.other_2.text().isalpha():
|
532
|
+
self.make_button_green(self.esm_dict["EXCH"])
|
533
|
+
buttons_to_send.append(self.esm_dict["EXCH"])
|
534
|
+
buttons_to_send.append("LOGIT")
|
535
|
+
else:
|
536
|
+
self.make_button_green(self.esm_dict["AGN"])
|
537
|
+
buttons_to_send.append(self.esm_dict["AGN"])
|
538
|
+
|
539
|
+
if with_enter is True and bool(len(buttons_to_send)):
|
540
|
+
sendstring = ""
|
541
|
+
for button in buttons_to_send:
|
542
|
+
if button:
|
543
|
+
if button == "LOGIT":
|
544
|
+
self.save_contact()
|
545
|
+
continue
|
546
|
+
sendstring = f"{sendstring}{self.process_macro(button.toolTip())} "
|
547
|
+
self.fldigi_util.send_string(sendstring)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: not1mm
|
3
|
-
Version: 24.10.
|
3
|
+
Version: 24.10.13
|
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
|
@@ -118,16 +118,16 @@ Requires-Dist: Levenshtein
|
|
118
118
|
- [Cabrillo](#cabrillo)
|
119
119
|
- [ADIF](#adif)
|
120
120
|
- [Recalulate Mults](#recalulate-mults)
|
121
|
-
- [Testing Out ESM Currently only in CQ WW
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
121
|
+
- [Testing Out ESM Currently only in CQ WW](#testing-out-esm-currently-only-in-cq-ww)
|
122
|
+
- [Run States](#run-states)
|
123
|
+
- [CQ](#cq)
|
124
|
+
- [Call Entered send His Call and the Exchange](#call-entered-send-his-call-and-the-exchange)
|
125
|
+
- [Empty exchange field send AGN till you get it](#empty-exchange-field-send-agn-till-you-get-it)
|
126
|
+
- [Exchange field filled, send TU QRZ and logs it](#exchange-field-filled-send-tu-qrz-and-logs-it)
|
127
|
+
- [S\&P States](#sp-states)
|
128
|
+
- [With his call entered, Send your call](#with-his-call-entered-send-your-call)
|
129
|
+
- [If no exchange entered send AGN](#if-no-exchange-entered-send-agn)
|
130
|
+
- [With exchange entered, send your exchange and log it](#with-exchange-entered-send-your-exchange-and-log-it)
|
131
131
|
- [Contest specific notes](#contest-specific-notes)
|
132
132
|
- [ARRL Sweekstakes](#arrl-sweekstakes)
|
133
133
|
- [The exchange parser](#the-exchange-parser)
|
@@ -181,7 +181,9 @@ when the program craps the bed. I'm only one guy, so if you see a bug let me kno
|
|
181
181
|
|
182
182
|
I've recently added portions of code to watch for WSTJ-X and fldigi QSOs. I've added
|
183
183
|
the Weekly RTTY Test, So RTTY could be tested. Also added FT8/4 and RTTY to ARRL Field
|
184
|
-
Day and ARRL VHF.
|
184
|
+
Day and ARRL VHF. Found works better if you don't use FlDigi for making the QSO at all.
|
185
|
+
Rather just using it as a RTTY modem and sending the text for it to send from Not1MM
|
186
|
+
using the function keys or ESM.
|
185
187
|
|
186
188
|
### Other not so supported contests
|
187
189
|
|
@@ -212,23 +214,25 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
|
|
212
214
|
- ARRL VHF January, June, September
|
213
215
|
- CQ 160 CW, SSB
|
214
216
|
- CQ WPX CW, RTTY, SSB
|
215
|
-
- CQ World Wide CW, RTTY, SSB
|
216
|
-
- CWOps CWT
|
217
|
+
- .CQ World Wide CW, RTTY, SSB
|
218
|
+
- .CWOps CWT
|
217
219
|
- Helvetia
|
218
220
|
- IARU Fieldday R1 CW, SSB
|
219
221
|
- IARU HF
|
220
222
|
- ICWC MST
|
221
223
|
- Japan International DX CW, SSB
|
222
|
-
- K1USN Slow Speed Test
|
224
|
+
- .K1USN Slow Speed Test
|
223
225
|
- NAQP CW, SSB
|
224
226
|
- Phone Weekly Test
|
225
227
|
- RAC Canada Day
|
226
228
|
- Stew Perry Topband
|
227
|
-
- Weekly RTTY
|
229
|
+
- .Weekly RTTY
|
228
230
|
- Winter Field Day
|
229
231
|
|
230
232
|
## Recent Changes
|
231
233
|
|
234
|
+
- [24-10-13] Added ESM to Weekly RTTY, K1USN and CWT.
|
235
|
+
- [24-10-11] added ESM to CQWW SSB and RTTY.
|
232
236
|
- [24-10-10] Add ESM to CQ WW CW to test it out.
|
233
237
|
- [24-10-8] Fix crash on Tune to spot. Change placeholder text for the CW port for those unable to read documentation.
|
234
238
|
- [24-10-6] Removed 60, 30, 17 and 12M from the default list of bands.
|
@@ -730,7 +734,7 @@ is this has happened, since the gridsquare will replace the word "Regional".
|
|
730
734
|
| [TAB] | Move cursor to the right one field. |
|
731
735
|
| [Shift-Tab] | Move cursor left One field. |
|
732
736
|
| [SPACE] | When in the callsign field, will move the input to the first field needed for the exchange. |
|
733
|
-
| [Enter] | Submits the fields to the log. |
|
737
|
+
| [Enter] | Submits the fields to the log. Unless ESM is enabled. |
|
734
738
|
| [F1-F12] | Send (CW/RTTY/Voice) macros. |
|
735
739
|
| [CTRL-S] | Spot Callsign to the cluster. |
|
736
740
|
| [CTRL-M] | Mark Callsign to the bandmap window to work later. |
|
@@ -839,15 +843,14 @@ After editing a contact and before generating a Cabrillo file. There is a Misc
|
|
839
843
|
menu option that will recalculate the multipliers incase an edit had caused a
|
840
844
|
change.
|
841
845
|
|
842
|
-
## Testing Out ESM Currently only in CQ WW
|
846
|
+
## Testing Out ESM Currently only in CQ WW
|
843
847
|
|
844
848
|
I caved and started working on ESM or Enter Sends Message. Currently it is only
|
845
|
-
working in the CQ WW
|
846
|
-
|
847
|
-

|
849
|
+
working in the CQ WW. To test it out you can go to `FILE -> Configuration Settings`
|
848
850
|
|
851
|
+

|
849
852
|
|
850
|
-
Check the mark to
|
853
|
+
Check the mark to Enable ESM and tell it which function keys do what. The keys will need
|
851
854
|
to have the same function in both Run and S&P modes. The function keys will highlight
|
852
855
|
green depending on the state of the input fields. The green keys will be sent if you
|
853
856
|
press the Enter key. You should use the Space bar to move to another field.
|
@@ -855,38 +858,37 @@ press the Enter key. You should use the Space bar to move to another field.
|
|
855
858
|
The contact will be automatically logged once all the needed info is collected and the
|
856
859
|
QRZ (for Run) or Exchange (for S&P) is sent.
|
857
860
|
|
858
|
-
|
859
|
-
|
860
|
-
### CQ
|
861
|
+
### Run States
|
861
862
|
|
862
|
-
|
863
|
+
#### CQ
|
863
864
|
|
864
|
-
|
865
|
+

|
865
866
|
|
866
|
-
|
867
|
+
#### Call Entered send His Call and the Exchange
|
867
868
|
|
868
|
-
|
869
|
+

|
869
870
|
|
870
|
-
|
871
|
+
#### Empty exchange field send AGN till you get it
|
871
872
|
|
872
|
-
|
873
|
+

|
873
874
|
|
874
|
-
|
875
|
+
#### Exchange field filled, send TU QRZ and logs it
|
875
876
|
|
876
|
-
|
877
|
+

|
877
878
|
|
878
|
-
###
|
879
|
+
### S&P States
|
879
880
|
|
880
|
-
|
881
|
+
#### With his call entered, Send your call
|
881
882
|
|
882
|
-
|
883
|
+

|
883
884
|
|
884
|
-
|
885
|
+
#### If no exchange entered send AGN
|
885
886
|
|
886
|
-
|
887
|
+

|
887
888
|
|
888
|
-
|
889
|
+
#### With exchange entered, send your exchange and log it
|
889
890
|
|
891
|
+

|
890
892
|
|
891
893
|
## Contest specific notes
|
892
894
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
not1mm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
-
not1mm/__main__.py,sha256=
|
2
|
+
not1mm/__main__.py,sha256=gcIDO3SWrPRwZHBLEhLt2EkDXPobcNJm4sfbVCiUlM8,135056
|
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
|
@@ -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=7_JFDSKPOd35Gwzqhrbed4EfrlYUm7AEnz2xBRioc-g,13280
|
116
116
|
not1mm/lib/super_check_partial.py,sha256=p5l3u2ZOCBtlWgbvskC50FpuoaIpR07tfC6zTdRWbh4,2334
|
117
|
-
not1mm/lib/version.py,sha256=
|
117
|
+
not1mm/lib/version.py,sha256=q7NDhdxfKwSoplAUZ4PnE04xcUPNrL0y0CIuVwQoOXw,49
|
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
|
@@ -137,10 +137,10 @@ not1mm/plugins/cq_160_ssb.py,sha256=zIwSMAjHSt6W2edrDzVbyTf860JowHoFkU9BKO8Enag,
|
|
137
137
|
not1mm/plugins/cq_wpx_cw.py,sha256=9aNzAR-KhznIwUlxUFjAi_hbiw_6RrCMwUBk9I2f6Hs,14037
|
138
138
|
not1mm/plugins/cq_wpx_rtty.py,sha256=PpU_PxjQGeMjzbofYNsl-No37s7IgkPyW2bKFRkN9jU,16473
|
139
139
|
not1mm/plugins/cq_wpx_ssb.py,sha256=-hGRovqHR9rfOUnG4LPOoABTb4heH8VAX6rYdJbCqsw,12687
|
140
|
-
not1mm/plugins/cq_ww_cw.py,sha256=
|
141
|
-
not1mm/plugins/cq_ww_rtty.py,sha256=
|
142
|
-
not1mm/plugins/cq_ww_ssb.py,sha256=
|
143
|
-
not1mm/plugins/cwt.py,sha256=
|
140
|
+
not1mm/plugins/cq_ww_cw.py,sha256=kJCL4dIJOEW9O45vPTjWhQpa7KPZv8fkEAs4MJHpfkY,15962
|
141
|
+
not1mm/plugins/cq_ww_rtty.py,sha256=njYqgr9ZijRaZgPwYumt95jrCE8kmFg4zwbaaJY1cMU,20772
|
142
|
+
not1mm/plugins/cq_ww_ssb.py,sha256=NGNysV6MR7OILLtfMF1Gp82gErjUEyekJ0WnWkUhgHA,16156
|
143
|
+
not1mm/plugins/cwt.py,sha256=AWUEZFY1ezts3dfHw1iKeXum-IdxXnoqe1LoenxputE,16542
|
144
144
|
not1mm/plugins/general_logging.py,sha256=n-2es7erqK1ptwq_wwIKIwktptKN7ra2eWjAQlpXUac,3479
|
145
145
|
not1mm/plugins/helvetia.py,sha256=6aOO4uiLzFFgHA-A3xz6IRdCJpqPOAm0egKxP5Y_Ie0,15432
|
146
146
|
not1mm/plugins/iaru_fieldday_r1_cw.py,sha256=B_kh8d8LkC0va_iIiIzImOKAT8724yf9ceF-2eQdx1w,13301
|
@@ -149,17 +149,17 @@ not1mm/plugins/iaru_hf.py,sha256=-ROUo2gBkw3xB89t8bd-4f7_1hROw2VXZXVHLFdB62s,115
|
|
149
149
|
not1mm/plugins/icwc_mst.py,sha256=v8L5NX2QmTM7x8Po1mb4yfN-dGVIuqky5MIT-OjfaVY,11831
|
150
150
|
not1mm/plugins/jidx_cw.py,sha256=9oV4hDxMiGXa9wuYUNYOCsr-mz8LYB-4WMHBN8u2dFk,12153
|
151
151
|
not1mm/plugins/jidx_ph.py,sha256=T-V7-77SIwu-Jl55VIrbVFZlsBoc97mXtgbdde0GaiQ,11183
|
152
|
-
not1mm/plugins/k1usn_sst.py,sha256=
|
152
|
+
not1mm/plugins/k1usn_sst.py,sha256=l-_r-Ve1txpJF1UyqoaOKUXjTaKxQtzxCbXd7fZCZIg,15439
|
153
153
|
not1mm/plugins/naqp_cw.py,sha256=c0MuKqfkIxiYFvv2z7vqrBz3m9FSnSYkPK3f-DdkTIA,12632
|
154
154
|
not1mm/plugins/naqp_ssb.py,sha256=VLWVrSzI0UP1AhSXYn61eZ7or1rz6a_pS_xCKfgS4Jw,11595
|
155
155
|
not1mm/plugins/phone_weekly_test.py,sha256=fLpMe03WB9_KgRl6vMgQQt_aktFdqfNt2Sw81CTRAUs,12325
|
156
156
|
not1mm/plugins/ref_cw.py,sha256=aWjHHkqIKutjRUtzh09y5haFfnZK9poRQDWRQMDRxxU,16326
|
157
157
|
not1mm/plugins/stew_perry_topband.py,sha256=CKBQbYl4ETxhXJd2dma4fg_C5pag_s7Nf61SCztZtqE,10668
|
158
|
-
not1mm/plugins/weekly_rtty.py,sha256=
|
158
|
+
not1mm/plugins/weekly_rtty.py,sha256=S_oBAnsIq2ng7FunIB2qukdZyhMzQKGDAlQFc9UUr-U,18255
|
159
159
|
not1mm/plugins/winter_field_day.py,sha256=4rcfRtobwjHO6BNL3WOTHzBmyyeuX79BNGBG8PfjrI8,10238
|
160
|
-
not1mm-24.10.
|
161
|
-
not1mm-24.10.
|
162
|
-
not1mm-24.10.
|
163
|
-
not1mm-24.10.
|
164
|
-
not1mm-24.10.
|
165
|
-
not1mm-24.10.
|
160
|
+
not1mm-24.10.13.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
161
|
+
not1mm-24.10.13.dist-info/METADATA,sha256=cKxGN7jzBI96YacfuCjzLpqevDpL4rwPpg4Om3fh0pg,33778
|
162
|
+
not1mm-24.10.13.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
|
163
|
+
not1mm-24.10.13.dist-info/entry_points.txt,sha256=pMcZk_0dxFgLkcUkF0Q874ojpwOmF3OL6EKw9LgvocM,47
|
164
|
+
not1mm-24.10.13.dist-info/top_level.txt,sha256=0YmTxEcDzQlzXub-lXASvoLpg_mt1c2thb5cVkDf5J4,7
|
165
|
+
not1mm-24.10.13.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|