not1mm 24.10.20__py3-none-any.whl → 24.10.20.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.
- not1mm/__main__.py +190 -203
- not1mm/bandmap.py +122 -127
- not1mm/checkwindow.py +37 -51
- not1mm/lib/version.py +1 -1
- not1mm/logwindow.py +27 -42
- not1mm/lookupservice.py +31 -43
- {not1mm-24.10.20.dist-info → not1mm-24.10.20.1.dist-info}/METADATA +2 -1
- {not1mm-24.10.20.dist-info → not1mm-24.10.20.1.dist-info}/RECORD +12 -12
- {not1mm-24.10.20.dist-info → not1mm-24.10.20.1.dist-info}/LICENSE +0 -0
- {not1mm-24.10.20.dist-info → not1mm-24.10.20.1.dist-info}/WHEEL +0 -0
- {not1mm-24.10.20.dist-info → not1mm-24.10.20.1.dist-info}/entry_points.txt +0 -0
- {not1mm-24.10.20.dist-info → not1mm-24.10.20.1.dist-info}/top_level.txt +0 -0
not1mm/__main__.py
CHANGED
@@ -16,7 +16,6 @@ import locale
|
|
16
16
|
import logging
|
17
17
|
from logging.handlers import RotatingFileHandler
|
18
18
|
import os
|
19
|
-
import platform
|
20
19
|
import socket
|
21
20
|
import sys
|
22
21
|
import uuid
|
@@ -56,7 +55,8 @@ from not1mm.lib.ham_utility import (
|
|
56
55
|
reciprocol,
|
57
56
|
fakefreq,
|
58
57
|
)
|
59
|
-
|
58
|
+
|
59
|
+
# from not1mm.lib.multicast import Multicast
|
60
60
|
from not1mm.lib.n1mm import N1MM
|
61
61
|
from not1mm.lib.new_contest import NewContest
|
62
62
|
from not1mm.lib.super_check_partial import SCP
|
@@ -550,6 +550,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
550
550
|
self.show_splash_msg("Starting LookUp Service.")
|
551
551
|
|
552
552
|
self.lookup_service = LookupService()
|
553
|
+
self.lookup_service.message.connect(self.dockwidget_message)
|
553
554
|
self.lookup_service.hide()
|
554
555
|
|
555
556
|
self.show_splash_msg("Reading preferences.")
|
@@ -583,34 +584,12 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
583
584
|
self.voice_process.current_op = self.current_op
|
584
585
|
self.make_op_dir()
|
585
586
|
|
586
|
-
self.clearinputs()
|
587
|
-
self.show_splash_msg("Loading contest.")
|
588
|
-
self.load_contest()
|
589
|
-
self.show_splash_msg("Reading macros.")
|
590
|
-
self.read_cw_macros()
|
591
|
-
|
592
587
|
# Featureset for wayland
|
593
588
|
dockfeatures = (
|
594
589
|
QtWidgets.QDockWidget.DockWidgetFeature.DockWidgetClosable
|
595
590
|
| QtWidgets.QDockWidget.DockWidgetFeature.DockWidgetMovable
|
596
591
|
)
|
597
592
|
|
598
|
-
self.show_splash_msg("Starting FlDigi watcher.")
|
599
|
-
self.fldigi_watcher = FlDigiWatcher()
|
600
|
-
self.fldigi_watcher.moveToThread(self.fldigi_thread)
|
601
|
-
self.fldigi_thread.started.connect(self.fldigi_watcher.run)
|
602
|
-
self.fldigi_thread.finished.connect(self.fldigi_watcher.deleteLater)
|
603
|
-
self.fldigi_watcher.poll_callback.connect(self.fldigi_qso)
|
604
|
-
self.fldigi_thread.start()
|
605
|
-
|
606
|
-
self.show_splash_msg("Setting up LogWindow.")
|
607
|
-
self.log_window = LogWindow()
|
608
|
-
self.log_window.setObjectName("log-window")
|
609
|
-
if os.environ.get("WAYLAND_DISPLAY"):
|
610
|
-
self.log_window.setFeatures(dockfeatures)
|
611
|
-
self.addDockWidget(Qt.DockWidgetArea.TopDockWidgetArea, self.log_window)
|
612
|
-
self.log_window.hide()
|
613
|
-
|
614
593
|
self.show_splash_msg("Setting up BandMapWindow.")
|
615
594
|
self.bandmap_window = BandMapWindow()
|
616
595
|
self.bandmap_window.setObjectName("bandmap-window")
|
@@ -619,6 +598,8 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
619
598
|
self.addDockWidget(Qt.DockWidgetArea.LeftDockWidgetArea, self.bandmap_window)
|
620
599
|
self.bandmap_window.hide()
|
621
600
|
self.bandmap_window.cluster_expire.connect(self.cluster_expire_updated)
|
601
|
+
self.bandmap_window.message.connect(self.dockwidget_message)
|
602
|
+
self.bandmap_window.callsignField.setText(self.current_op)
|
622
603
|
|
623
604
|
self.show_splash_msg("Setting up CheckWindow.")
|
624
605
|
self.check_window = CheckWindow()
|
@@ -627,6 +608,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
627
608
|
self.check_window.setFeatures(dockfeatures)
|
628
609
|
self.addDockWidget(Qt.DockWidgetArea.RightDockWidgetArea, self.check_window)
|
629
610
|
self.check_window.hide()
|
611
|
+
self.check_window.message.connect(self.dockwidget_message)
|
630
612
|
|
631
613
|
self.show_splash_msg("Setting up VFOWindow.")
|
632
614
|
self.vfo_window = VfoWindow()
|
@@ -636,6 +618,29 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
636
618
|
self.addDockWidget(Qt.DockWidgetArea.RightDockWidgetArea, self.vfo_window)
|
637
619
|
self.vfo_window.hide()
|
638
620
|
|
621
|
+
self.show_splash_msg("Setting up LogWindow.")
|
622
|
+
self.log_window = LogWindow()
|
623
|
+
self.log_window.setObjectName("log-window")
|
624
|
+
if os.environ.get("WAYLAND_DISPLAY"):
|
625
|
+
self.log_window.setFeatures(dockfeatures)
|
626
|
+
self.addDockWidget(Qt.DockWidgetArea.TopDockWidgetArea, self.log_window)
|
627
|
+
self.log_window.hide()
|
628
|
+
self.log_window.message.connect(self.dockwidget_message)
|
629
|
+
|
630
|
+
self.clearinputs()
|
631
|
+
self.show_splash_msg("Loading contest.")
|
632
|
+
self.load_contest()
|
633
|
+
self.show_splash_msg("Reading macros.")
|
634
|
+
self.read_cw_macros()
|
635
|
+
|
636
|
+
self.show_splash_msg("Starting FlDigi watcher.")
|
637
|
+
self.fldigi_watcher = FlDigiWatcher()
|
638
|
+
self.fldigi_watcher.moveToThread(self.fldigi_thread)
|
639
|
+
self.fldigi_thread.started.connect(self.fldigi_watcher.run)
|
640
|
+
self.fldigi_thread.finished.connect(self.fldigi_watcher.deleteLater)
|
641
|
+
self.fldigi_watcher.poll_callback.connect(self.fldigi_qso)
|
642
|
+
self.fldigi_thread.start()
|
643
|
+
|
639
644
|
self.show_splash_msg("Restoring window states.")
|
640
645
|
self.settings = QSettings("K6GTE", "not1mm")
|
641
646
|
if self.settings.value("windowState") is not None:
|
@@ -646,19 +651,28 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
646
651
|
self.actionLog_Window.setChecked(self.pref.get("logwindow", False))
|
647
652
|
if self.actionLog_Window.isChecked():
|
648
653
|
self.log_window.show()
|
654
|
+
else:
|
655
|
+
self.log_window.hide()
|
649
656
|
|
650
657
|
self.actionBandmap.setChecked(self.pref.get("bandmapwindow", False))
|
651
658
|
if self.actionBandmap.isChecked():
|
652
659
|
self.bandmap_window.show()
|
660
|
+
else:
|
661
|
+
self.bandmap_window.hide()
|
653
662
|
|
654
663
|
self.actionCheck_Window.setChecked(self.pref.get("checkwindow", False))
|
655
664
|
if self.actionCheck_Window.isChecked():
|
656
665
|
self.check_window.show()
|
657
666
|
self.check_window.setActive(True)
|
667
|
+
else:
|
668
|
+
self.check_window.hide()
|
669
|
+
self.check_window.setActive(False)
|
658
670
|
|
659
671
|
self.actionVFO.setChecked(self.pref.get("vfowindow", False))
|
660
672
|
if self.actionVFO.isChecked():
|
661
673
|
self.vfo_window.show()
|
674
|
+
else:
|
675
|
+
self.vfo_window.hide()
|
662
676
|
|
663
677
|
self.cwspeed_spinbox_changed()
|
664
678
|
|
@@ -719,6 +733,88 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
719
733
|
)
|
720
734
|
QCoreApplication.processEvents()
|
721
735
|
|
736
|
+
def dockwidget_message(self, msg):
|
737
|
+
"""signal from bandmap"""
|
738
|
+
if msg:
|
739
|
+
if msg.get("cmd", "") == "GETCOLUMNS":
|
740
|
+
if hasattr(self.contest, "columns"):
|
741
|
+
cmd = {}
|
742
|
+
cmd["cmd"] = "SHOWCOLUMNS"
|
743
|
+
cmd["COLUMNS"] = self.contest.columns
|
744
|
+
if self.log_window:
|
745
|
+
self.log_window.msg_from_main(cmd)
|
746
|
+
return
|
747
|
+
if msg.get("cmd", "") == "TUNE":
|
748
|
+
# b'{"cmd": "TUNE", "freq": 7.0235, "spot": "MM0DGI"}'
|
749
|
+
vfo = msg.get("freq")
|
750
|
+
vfo = float(vfo) * 1000000
|
751
|
+
self.radio_state["vfoa"] = int(vfo)
|
752
|
+
if self.rig_control:
|
753
|
+
self.rig_control.set_vfo(int(vfo))
|
754
|
+
spot = msg.get("spot", "")
|
755
|
+
self.callsign.setText(spot)
|
756
|
+
self.callsign_changed()
|
757
|
+
self.callsign.setFocus()
|
758
|
+
self.callsign.activateWindow()
|
759
|
+
return
|
760
|
+
|
761
|
+
if msg.get("cmd", "") == "GETWORKEDLIST":
|
762
|
+
result = self.database.get_calls_and_bands()
|
763
|
+
cmd = {}
|
764
|
+
cmd["cmd"] = "WORKED"
|
765
|
+
cmd["worked"] = result
|
766
|
+
if self.bandmap_window:
|
767
|
+
self.bandmap_window.msg_from_main(cmd)
|
768
|
+
return
|
769
|
+
|
770
|
+
if msg.get("cmd", "") == "GETCONTESTSTATUS":
|
771
|
+
cmd = {
|
772
|
+
"cmd": "CONTESTSTATUS",
|
773
|
+
"contest": self.contest_settings,
|
774
|
+
"operator": self.current_op,
|
775
|
+
}
|
776
|
+
if self.bandmap_window:
|
777
|
+
self.bandmap_window.msg_from_main(cmd)
|
778
|
+
self.bandmap_window.callsignField.setText(self.current_op)
|
779
|
+
return
|
780
|
+
|
781
|
+
if msg.get("cmd", "") == "CHANGECALL":
|
782
|
+
self.callsign.setText(msg.get("call", ""))
|
783
|
+
self.callsign.setFocus()
|
784
|
+
|
785
|
+
if msg.get("cmd", "") == "CHECKSPOTS":
|
786
|
+
if self.check_window:
|
787
|
+
self.check_window.msg_from_main(msg)
|
788
|
+
|
789
|
+
# '{"cmd": "LOOKUP_RESPONSE", "station": "fredo", "result": {"call": "K6GTE", "aliases": "KM6HQI", "dxcc": "291", "nickname": "Mike", "fname": "Michael C", "name": "Bridak", "addr1": "2854 W Bridgeport Ave", "addr2": "Anaheim", "state": "CA", "zip": "92804", "country": "United States", "lat": "33.825460", "lon": "-117.987510", "grid": "DM13at", "county": "Orange", "ccode": "271", "fips": "06059", "land": "United States", "efdate": "2021-01-13", "expdate": "2027-11-07", "class": "G", "codes": "HVIE", "email": "michael.bridak@gmail.com", "u_views": "3049", "bio": "7232", "biodate": "2023-04-10 17:56:55", "image": "https://cdn-xml.qrz.com/e/k6gte/qsl.png", "imageinfo": "285:545:99376", "moddate": "2021-04-08 21:41:07", "MSA": "5945", "AreaCode": "714", "TimeZone": "Pacific", "GMTOffset": "-8", "DST": "Y", "eqsl": "0", "mqsl": "1", "cqzone": "3", "ituzone": "6", "born": "1967", "lotw": "1", "user": "K6GTE", "geoloc": "geocode", "name_fmt": "Michael C \\"Mike\\" Bridak"}}'
|
790
|
+
|
791
|
+
if msg.get("cmd", "") == "LOOKUP_RESPONSE":
|
792
|
+
if msg.get("result", None) is not None:
|
793
|
+
fname = msg.get("result", {}).get("fname", "")
|
794
|
+
name = msg.get("result", {}).get("name", "")
|
795
|
+
grid = msg.get("result", {}).get("grid", "")
|
796
|
+
nickname = msg.get("result", {}).get("nickname", "")
|
797
|
+
|
798
|
+
if self.contest:
|
799
|
+
if "General Logging" in self.contest.name:
|
800
|
+
if nickname:
|
801
|
+
self.other_1.setText(nickname)
|
802
|
+
elif fname:
|
803
|
+
self.other_1.setText(fname)
|
804
|
+
elif name:
|
805
|
+
self.other_1.setText(name)
|
806
|
+
|
807
|
+
if grid:
|
808
|
+
self.contact["GridSquare"] = grid
|
809
|
+
# _theircountry = response.get("country", "")
|
810
|
+
if self.station.get("GridSquare", ""):
|
811
|
+
heading = bearing(self.station.get("GridSquare", ""), grid)
|
812
|
+
kilometers = distance(self.station.get("GridSquare", ""), grid)
|
813
|
+
self.heading_distance.setText(
|
814
|
+
f"{grid} Hdg {heading}° LP {reciprocol(heading)}° / "
|
815
|
+
f"distance {int(kilometers*0.621371)}mi {kilometers}km"
|
816
|
+
)
|
817
|
+
|
722
818
|
def cluster_expire_updated(self, number):
|
723
819
|
"""signal from bandmap"""
|
724
820
|
self.pref["cluster_expire"] = int(number)
|
@@ -778,8 +874,12 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
778
874
|
cmd = {}
|
779
875
|
cmd["cmd"] = "DARKMODE"
|
780
876
|
cmd["state"] = setdarkmode
|
781
|
-
|
782
|
-
|
877
|
+
if self.log_window:
|
878
|
+
self.log_window.msg_from_main(cmd)
|
879
|
+
if self.bandmap_window:
|
880
|
+
self.bandmap_window.msg_from_main(cmd)
|
881
|
+
if self.check_window:
|
882
|
+
self.check_window.msg_from_main(cmd)
|
783
883
|
|
784
884
|
if setdarkmode:
|
785
885
|
darkPalette = QPalette()
|
@@ -948,8 +1048,8 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
948
1048
|
|
949
1049
|
cmd = {}
|
950
1050
|
cmd["cmd"] = "HALT"
|
951
|
-
|
952
|
-
|
1051
|
+
if self.lookup_service:
|
1052
|
+
self.lookup_service.msg_from_main(cmd)
|
953
1053
|
app.quit()
|
954
1054
|
|
955
1055
|
def show_message_box(self, message: str) -> None:
|
@@ -1110,8 +1210,8 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
1110
1210
|
self.make_op_dir()
|
1111
1211
|
cmd = {}
|
1112
1212
|
cmd["cmd"] = "NEWDB"
|
1113
|
-
|
1114
|
-
|
1213
|
+
if self.log_window:
|
1214
|
+
self.log_window.msg_from_main(cmd)
|
1115
1215
|
self.clearinputs()
|
1116
1216
|
self.edit_station_settings()
|
1117
1217
|
|
@@ -1147,8 +1247,8 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
1147
1247
|
self.make_op_dir()
|
1148
1248
|
cmd = {}
|
1149
1249
|
cmd["cmd"] = "NEWDB"
|
1150
|
-
|
1151
|
-
|
1250
|
+
if self.log_window:
|
1251
|
+
self.log_window.msg_from_main(cmd)
|
1152
1252
|
self.clearinputs()
|
1153
1253
|
self.open_contest()
|
1154
1254
|
|
@@ -1436,14 +1536,14 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
1436
1536
|
self.clearinputs()
|
1437
1537
|
cmd = {}
|
1438
1538
|
cmd["cmd"] = "NEWDB"
|
1439
|
-
|
1440
|
-
|
1539
|
+
if self.log_window:
|
1540
|
+
self.log_window.msg_from_main(cmd)
|
1441
1541
|
if hasattr(self.contest, "columns"):
|
1442
1542
|
cmd = {}
|
1443
1543
|
cmd["cmd"] = "SHOWCOLUMNS"
|
1444
|
-
cmd["station"] = platform.node()
|
1445
1544
|
cmd["COLUMNS"] = self.contest.columns
|
1446
|
-
self.
|
1545
|
+
if self.log_window:
|
1546
|
+
self.log_window.msg_from_main(cmd)
|
1447
1547
|
|
1448
1548
|
def check_for_new_cty(self) -> None:
|
1449
1549
|
"""
|
@@ -1721,8 +1821,12 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
1721
1821
|
|
1722
1822
|
cmd = {}
|
1723
1823
|
cmd["cmd"] = "HALT"
|
1724
|
-
|
1725
|
-
|
1824
|
+
if self.bandmap_window:
|
1825
|
+
self.bandmap_window.msg_from_main(cmd)
|
1826
|
+
if self.log_window:
|
1827
|
+
self.log_window.msg_from_main(cmd)
|
1828
|
+
if self.lookup_service:
|
1829
|
+
self.lookup_service.msg_from_main(cmd)
|
1726
1830
|
self.write_preference()
|
1727
1831
|
|
1728
1832
|
def cty_lookup(self, callsign: str) -> list:
|
@@ -1802,10 +1906,10 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
1802
1906
|
if freq and dx:
|
1803
1907
|
cmd = {}
|
1804
1908
|
cmd["cmd"] = "SPOTDX"
|
1805
|
-
cmd["station"] = platform.node()
|
1806
1909
|
cmd["dx"] = dx
|
1807
1910
|
cmd["freq"] = float(int(freq) / 1000)
|
1808
|
-
self.
|
1911
|
+
if self.bandmap_window:
|
1912
|
+
self.bandmap_window.msg_from_main(cmd)
|
1809
1913
|
return
|
1810
1914
|
if (
|
1811
1915
|
event.key() == Qt.Key.Key_M
|
@@ -1816,10 +1920,10 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
1816
1920
|
if freq and dx:
|
1817
1921
|
cmd = {}
|
1818
1922
|
cmd["cmd"] = "MARKDX"
|
1819
|
-
cmd["station"] = platform.node()
|
1820
1923
|
cmd["dx"] = dx
|
1821
1924
|
cmd["freq"] = float(int(freq) / 1000)
|
1822
|
-
self.
|
1925
|
+
if self.bandmap_window:
|
1926
|
+
self.bandmap_window.msg_from_main(cmd)
|
1823
1927
|
return
|
1824
1928
|
if (
|
1825
1929
|
event.key() == Qt.Key.Key_G
|
@@ -1829,9 +1933,9 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
1829
1933
|
if dx:
|
1830
1934
|
cmd = {}
|
1831
1935
|
cmd["cmd"] = "FINDDX"
|
1832
|
-
cmd["station"] = platform.node()
|
1833
1936
|
cmd["dx"] = dx
|
1834
|
-
self.
|
1937
|
+
if self.bandmap_window:
|
1938
|
+
self.bandmap_window.msg_from_main(cmd)
|
1835
1939
|
return
|
1836
1940
|
if (
|
1837
1941
|
event.key() == Qt.Key.Key_Escape
|
@@ -1856,14 +1960,14 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
1856
1960
|
if event.key() == Qt.Key.Key_Up:
|
1857
1961
|
cmd = {}
|
1858
1962
|
cmd["cmd"] = "PREVSPOT"
|
1859
|
-
|
1860
|
-
|
1963
|
+
if self.bandmap_window:
|
1964
|
+
self.bandmap_window.msg_from_main(cmd)
|
1861
1965
|
return
|
1862
1966
|
if event.key() == Qt.Key.Key_Down:
|
1863
1967
|
cmd = {}
|
1864
1968
|
cmd["cmd"] = "NEXTSPOT"
|
1865
|
-
|
1866
|
-
|
1969
|
+
if self.bandmap_window:
|
1970
|
+
self.bandmap_window.msg_from_main(cmd)
|
1867
1971
|
return
|
1868
1972
|
if (
|
1869
1973
|
event.key() == Qt.Key.Key_PageUp
|
@@ -1959,9 +2063,9 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
1959
2063
|
text = text.upper()
|
1960
2064
|
cmd = {}
|
1961
2065
|
cmd["cmd"] = "LOOKUP_CALL"
|
1962
|
-
cmd["station"] = platform.node()
|
1963
2066
|
cmd["call"] = text
|
1964
|
-
self.
|
2067
|
+
if self.lookup_service:
|
2068
|
+
self.lookup_service.msg_from_main(cmd)
|
1965
2069
|
next_tab = self.tab_next.get(self.callsign)
|
1966
2070
|
next_tab.setFocus()
|
1967
2071
|
next_tab.deselect()
|
@@ -2031,10 +2135,10 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
2031
2135
|
|
2032
2136
|
cmd = {}
|
2033
2137
|
cmd["cmd"] = "WORKED"
|
2034
|
-
cmd["station"] = platform.node()
|
2035
2138
|
cmd["worked"] = self.worked_list
|
2036
2139
|
logger.debug("%s", f"{cmd}")
|
2037
|
-
self.
|
2140
|
+
if self.bandmap_window:
|
2141
|
+
self.bandmap_window.msg_from_main(cmd)
|
2038
2142
|
|
2039
2143
|
def clearinputs(self) -> None:
|
2040
2144
|
"""
|
@@ -2077,9 +2181,13 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
2077
2181
|
self.callsign.setFocus()
|
2078
2182
|
cmd = {}
|
2079
2183
|
cmd["cmd"] = "CALLCHANGED"
|
2080
|
-
cmd["station"] = platform.node()
|
2081
2184
|
cmd["call"] = ""
|
2082
|
-
self.
|
2185
|
+
if self.log_window:
|
2186
|
+
self.log_window.msg_from_main(cmd)
|
2187
|
+
if self.bandmap_window:
|
2188
|
+
self.bandmap_window.msg_from_main(cmd)
|
2189
|
+
if self.check_window:
|
2190
|
+
self.check_window.msg_from_main(cmd)
|
2083
2191
|
|
2084
2192
|
def save_contact(self) -> None:
|
2085
2193
|
"""
|
@@ -2199,8 +2307,10 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
2199
2307
|
|
2200
2308
|
cmd = {}
|
2201
2309
|
cmd["cmd"] = "UPDATELOG"
|
2202
|
-
|
2203
|
-
|
2310
|
+
if self.log_window:
|
2311
|
+
self.log_window.msg_from_main(cmd)
|
2312
|
+
if self.check_window:
|
2313
|
+
self.check_window.msg_from_main(cmd)
|
2204
2314
|
|
2205
2315
|
def new_contest_dialog(self) -> None:
|
2206
2316
|
"""
|
@@ -2623,17 +2733,10 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
2623
2733
|
else:
|
2624
2734
|
self.actionMode_and_Bands.setChecked(False)
|
2625
2735
|
|
2626
|
-
self.multicast_interface = Multicast(
|
2627
|
-
self.pref.get("multicast_group", "239.1.1.1"),
|
2628
|
-
self.pref.get("multicast_port", 2239),
|
2629
|
-
self.pref.get("interface_ip", "0.0.0.0"),
|
2630
|
-
)
|
2631
|
-
self.multicast_interface.ready_read_connect(self.watch_udp)
|
2632
|
-
|
2633
2736
|
cmd = {}
|
2634
2737
|
cmd["cmd"] = "REFRESH_LOOKUP"
|
2635
|
-
|
2636
|
-
|
2738
|
+
if self.lookup_service:
|
2739
|
+
self.lookup_service.msg_from_main(cmd)
|
2637
2740
|
|
2638
2741
|
if self.pref.get("darkmode"):
|
2639
2742
|
self.actionDark_Mode_2.setChecked(True)
|
@@ -2782,119 +2885,6 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
2782
2885
|
self.esm_dict["MYCALL"] = fkey_dict.get(self.pref.get("esm_mycall", "DISABLED"))
|
2783
2886
|
self.esm_dict["QSOB4"] = fkey_dict.get(self.pref.get("esm_qsob4", "DISABLED"))
|
2784
2887
|
|
2785
|
-
def watch_udp(self) -> None:
|
2786
|
-
"""
|
2787
|
-
Watch the UDP socket for incoming data.
|
2788
|
-
|
2789
|
-
Parameters
|
2790
|
-
----------
|
2791
|
-
None
|
2792
|
-
|
2793
|
-
Returns
|
2794
|
-
-------
|
2795
|
-
None
|
2796
|
-
"""
|
2797
|
-
|
2798
|
-
while self.multicast_interface.has_pending_datagrams():
|
2799
|
-
json_data = self.multicast_interface.read_datagram_as_json()
|
2800
|
-
if json_data:
|
2801
|
-
if (
|
2802
|
-
json_data.get("cmd", "") == "GETCOLUMNS"
|
2803
|
-
and json_data.get("station", "") == platform.node()
|
2804
|
-
):
|
2805
|
-
if hasattr(self.contest, "columns"):
|
2806
|
-
cmd = {}
|
2807
|
-
cmd["cmd"] = "SHOWCOLUMNS"
|
2808
|
-
cmd["station"] = platform.node()
|
2809
|
-
cmd["COLUMNS"] = self.contest.columns
|
2810
|
-
self.multicast_interface.send_as_json(cmd)
|
2811
|
-
continue
|
2812
|
-
if (
|
2813
|
-
json_data.get("cmd", "") == "TUNE"
|
2814
|
-
and json_data.get("station", "") == platform.node()
|
2815
|
-
):
|
2816
|
-
# b'{"cmd": "TUNE", "freq": 7.0235, "spot": "MM0DGI"}'
|
2817
|
-
vfo = json_data.get("freq")
|
2818
|
-
vfo = float(vfo) * 1000000
|
2819
|
-
self.radio_state["vfoa"] = int(vfo)
|
2820
|
-
if self.rig_control:
|
2821
|
-
self.rig_control.set_vfo(int(vfo))
|
2822
|
-
spot = json_data.get("spot", "")
|
2823
|
-
self.callsign.setText(spot)
|
2824
|
-
self.callsign_changed()
|
2825
|
-
self.callsign.setFocus()
|
2826
|
-
self.callsign.activateWindow()
|
2827
|
-
# This broke somehow.
|
2828
|
-
# window.raise_()
|
2829
|
-
continue
|
2830
|
-
|
2831
|
-
if (
|
2832
|
-
json_data.get("cmd", "") == "GETWORKEDLIST"
|
2833
|
-
and json_data.get("station", "") == platform.node()
|
2834
|
-
):
|
2835
|
-
result = self.database.get_calls_and_bands()
|
2836
|
-
cmd = {}
|
2837
|
-
cmd["cmd"] = "WORKED"
|
2838
|
-
cmd["station"] = platform.node()
|
2839
|
-
cmd["worked"] = result
|
2840
|
-
self.multicast_interface.send_as_json(cmd)
|
2841
|
-
continue
|
2842
|
-
|
2843
|
-
if (
|
2844
|
-
json_data.get("cmd", "") == "GETCONTESTSTATUS"
|
2845
|
-
and json_data.get("station", "") == platform.node()
|
2846
|
-
):
|
2847
|
-
cmd = {
|
2848
|
-
"cmd": "CONTESTSTATUS",
|
2849
|
-
"station": platform.node(),
|
2850
|
-
"contest": self.contest_settings,
|
2851
|
-
"operator": self.current_op,
|
2852
|
-
}
|
2853
|
-
self.multicast_interface.send_as_json(cmd)
|
2854
|
-
continue
|
2855
|
-
|
2856
|
-
if (
|
2857
|
-
json_data.get("cmd", "") == "CHANGECALL"
|
2858
|
-
and json_data.get("station", "") == platform.node()
|
2859
|
-
):
|
2860
|
-
self.callsign.setText(json_data.get("call", ""))
|
2861
|
-
self.callsign.setFocus()
|
2862
|
-
|
2863
|
-
# '{"cmd": "LOOKUP_RESPONSE", "station": "fredo", "result": {"call": "K6GTE", "aliases": "KM6HQI", "dxcc": "291", "nickname": "Mike", "fname": "Michael C", "name": "Bridak", "addr1": "2854 W Bridgeport Ave", "addr2": "Anaheim", "state": "CA", "zip": "92804", "country": "United States", "lat": "33.825460", "lon": "-117.987510", "grid": "DM13at", "county": "Orange", "ccode": "271", "fips": "06059", "land": "United States", "efdate": "2021-01-13", "expdate": "2027-11-07", "class": "G", "codes": "HVIE", "email": "michael.bridak@gmail.com", "u_views": "3049", "bio": "7232", "biodate": "2023-04-10 17:56:55", "image": "https://cdn-xml.qrz.com/e/k6gte/qsl.png", "imageinfo": "285:545:99376", "moddate": "2021-04-08 21:41:07", "MSA": "5945", "AreaCode": "714", "TimeZone": "Pacific", "GMTOffset": "-8", "DST": "Y", "eqsl": "0", "mqsl": "1", "cqzone": "3", "ituzone": "6", "born": "1967", "lotw": "1", "user": "K6GTE", "geoloc": "geocode", "name_fmt": "Michael C \\"Mike\\" Bridak"}}'
|
2864
|
-
|
2865
|
-
if (
|
2866
|
-
json_data.get("cmd", "") == "LOOKUP_RESPONSE"
|
2867
|
-
and json_data.get("station", "") == platform.node()
|
2868
|
-
):
|
2869
|
-
if json_data.get("result", None) is not None:
|
2870
|
-
fname = json_data.get("result", {}).get("fname", "")
|
2871
|
-
name = json_data.get("result", {}).get("name", "")
|
2872
|
-
grid = json_data.get("result", {}).get("grid", "")
|
2873
|
-
# error_text = json_data.get("result", {}).get("error_text", "")
|
2874
|
-
nickname = json_data.get("result", {}).get("nickname", "")
|
2875
|
-
|
2876
|
-
if self.contest:
|
2877
|
-
if "General Logging" in self.contest.name:
|
2878
|
-
if nickname:
|
2879
|
-
self.other_1.setText(nickname)
|
2880
|
-
elif fname:
|
2881
|
-
self.other_1.setText(fname)
|
2882
|
-
elif name:
|
2883
|
-
self.other_1.setText(name)
|
2884
|
-
|
2885
|
-
if grid:
|
2886
|
-
self.contact["GridSquare"] = grid
|
2887
|
-
# _theircountry = response.get("country", "")
|
2888
|
-
if self.station.get("GridSquare", ""):
|
2889
|
-
heading = bearing(self.station.get("GridSquare", ""), grid)
|
2890
|
-
kilometers = distance(
|
2891
|
-
self.station.get("GridSquare", ""), grid
|
2892
|
-
)
|
2893
|
-
self.heading_distance.setText(
|
2894
|
-
f"{grid} Hdg {heading}° LP {reciprocol(heading)}° / "
|
2895
|
-
f"distance {int(kilometers*0.621371)}mi {kilometers}km"
|
2896
|
-
)
|
2897
|
-
|
2898
2888
|
def dark_mode_state_changed(self) -> None:
|
2899
2889
|
"""Called when the Dark Mode menu state is changed."""
|
2900
2890
|
self.pref["darkmode"] = self.actionDark_Mode_2.isChecked()
|
@@ -3097,32 +3087,26 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
3097
3087
|
self.show_help_dialog()
|
3098
3088
|
self.clearinputs()
|
3099
3089
|
return
|
3100
|
-
# if stripped_text == "TEST":
|
3101
|
-
# result = self.database.get_calls_and_bands()
|
3102
|
-
# cmd = {}
|
3103
|
-
# cmd["cmd"] = "WORKED"
|
3104
|
-
# cmd["station"] = platform.node()
|
3105
|
-
# cmd["worked"] = result
|
3106
|
-
# self.multicast_interface.send_as_json(cmd)
|
3107
|
-
# self.clearinputs()
|
3108
|
-
# return
|
3109
3090
|
if self.is_floatable(stripped_text):
|
3110
3091
|
self.change_freq(stripped_text)
|
3111
3092
|
self.clearinputs()
|
3112
3093
|
return
|
3113
|
-
|
3114
3094
|
cmd = {}
|
3115
3095
|
cmd["cmd"] = "LOOKUP_CALL"
|
3116
|
-
cmd["station"] = platform.node()
|
3117
3096
|
cmd["call"] = stripped_text
|
3118
|
-
self.
|
3097
|
+
if self.lookup_service:
|
3098
|
+
self.lookup_service.msg_from_main(cmd)
|
3119
3099
|
self.next_field.setFocus()
|
3120
3100
|
return
|
3121
3101
|
cmd = {}
|
3122
3102
|
cmd["cmd"] = "CALLCHANGED"
|
3123
|
-
cmd["station"] = platform.node()
|
3124
3103
|
cmd["call"] = stripped_text
|
3125
|
-
self.
|
3104
|
+
if self.bandmap_window:
|
3105
|
+
self.bandmap_window.msg_from_main(cmd)
|
3106
|
+
if self.log_window:
|
3107
|
+
self.log_window.msg_from_main(cmd)
|
3108
|
+
if self.check_window:
|
3109
|
+
self.check_window.msg_from_main(cmd)
|
3126
3110
|
self.check_callsign(stripped_text)
|
3127
3111
|
if self.check_dupe(stripped_text):
|
3128
3112
|
self.dupe_indicator.show()
|
@@ -3161,10 +3145,10 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
3161
3145
|
|
3162
3146
|
cmd = {}
|
3163
3147
|
cmd["cmd"] = "RADIO_STATE"
|
3164
|
-
cmd["station"] = platform.node()
|
3165
3148
|
cmd["band"] = band
|
3166
3149
|
cmd["vfoa"] = vfo
|
3167
|
-
self.
|
3150
|
+
if self.bandmap_window:
|
3151
|
+
self.bandmap_window.msg_from_main(cmd)
|
3168
3152
|
|
3169
3153
|
def change_mode(self, mode: str) -> None:
|
3170
3154
|
"""
|
@@ -3366,6 +3350,8 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
3366
3350
|
if self.opon_dialog.NewOperator.text():
|
3367
3351
|
self.current_op = self.opon_dialog.NewOperator.text().upper()
|
3368
3352
|
self.voice_process.current_op = self.current_op
|
3353
|
+
if self.bandmap_window:
|
3354
|
+
self.bandmap_window.callsignField.setText(self.current_op)
|
3369
3355
|
self.opon_dialog.close()
|
3370
3356
|
logger.debug("New Op: %s", self.current_op)
|
3371
3357
|
self.make_op_dir()
|
@@ -3457,18 +3443,26 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
3457
3443
|
):
|
3458
3444
|
self.setmode("RTTY")
|
3459
3445
|
|
3446
|
+
cmd = {}
|
3447
|
+
cmd["cmd"] = "RADIO_STATE"
|
3448
|
+
cmd["band"] = band
|
3449
|
+
cmd["vfoa"] = vfo
|
3450
|
+
cmd["mode"] = mode
|
3451
|
+
cmd["bw"] = bw
|
3452
|
+
if self.bandmap_window:
|
3453
|
+
self.bandmap_window.msg_from_main(cmd)
|
3460
3454
|
if info_dirty:
|
3461
3455
|
try:
|
3462
3456
|
logger.debug("VFO: %s MODE: %s BW: %s", vfo, mode, bw)
|
3463
3457
|
self.set_window_title()
|
3464
3458
|
cmd = {}
|
3465
3459
|
cmd["cmd"] = "RADIO_STATE"
|
3466
|
-
cmd["station"] = platform.node()
|
3467
3460
|
cmd["band"] = band
|
3468
3461
|
cmd["vfoa"] = vfo
|
3469
3462
|
cmd["mode"] = mode
|
3470
3463
|
cmd["bw"] = bw
|
3471
|
-
self.
|
3464
|
+
if self.bandmap_window:
|
3465
|
+
self.bandmap_window.msg_from_main(cmd)
|
3472
3466
|
if self.n1mm:
|
3473
3467
|
self.n1mm.radio_info["Freq"] = vfo[:-1]
|
3474
3468
|
self.n1mm.radio_info["TXFreq"] = vfo[:-1]
|
@@ -3478,13 +3472,6 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
3478
3472
|
self.pref.get("run_state", False)
|
3479
3473
|
)
|
3480
3474
|
if self.n1mm.send_radio_packets:
|
3481
|
-
# self.n1mm.radio_info["Freq"] = vfo[:-1]
|
3482
|
-
# self.n1mm.radio_info["TXFreq"] = vfo[:-1]
|
3483
|
-
# self.n1mm.radio_info["Mode"] = mode
|
3484
|
-
# self.n1mm.radio_info["OpCall"] = self.current_op
|
3485
|
-
# self.n1mm.radio_info["IsRunning"] = str(
|
3486
|
-
# self.pref.get("run_state", False)
|
3487
|
-
# )
|
3488
3475
|
self.n1mm.send_radio()
|
3489
3476
|
except TypeError as err:
|
3490
3477
|
logger.debug(f"{err=} {vfo=} {the_dict=}")
|