not1mm 24.12.12__py3-none-any.whl → 24.12.14__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 +15 -12
- not1mm/lib/version.py +1 -1
- {not1mm-24.12.12.dist-info → not1mm-24.12.14.dist-info}/METADATA +8 -3
- {not1mm-24.12.12.dist-info → not1mm-24.12.14.dist-info}/RECORD +8 -9
- not1mm/lib/fldigi_watcher.py +0 -33
- {not1mm-24.12.12.dist-info → not1mm-24.12.14.dist-info}/LICENSE +0 -0
- {not1mm-24.12.12.dist-info → not1mm-24.12.14.dist-info}/WHEEL +0 -0
- {not1mm-24.12.12.dist-info → not1mm-24.12.14.dist-info}/entry_points.txt +0 -0
- {not1mm-24.12.12.dist-info → not1mm-24.12.14.dist-info}/top_level.txt +0 -0
not1mm/__main__.py
CHANGED
@@ -33,7 +33,7 @@ except OSError as exception:
|
|
33
33
|
print(exception)
|
34
34
|
print("portaudio is not installed")
|
35
35
|
sd = None
|
36
|
-
from PyQt6 import QtCore, QtGui, QtWidgets, uic
|
36
|
+
from PyQt6 import QtCore, QtGui, QtWidgets, uic, QtNetwork
|
37
37
|
from PyQt6.QtCore import QDir, Qt, QThread, QSettings, QCoreApplication
|
38
38
|
from PyQt6.QtGui import QFontDatabase, QColorConstants, QPalette, QColor, QPixmap
|
39
39
|
from PyQt6.QtWidgets import QFileDialog, QSplashScreen, QApplication
|
@@ -66,7 +66,6 @@ from not1mm.lib.settings import Settings
|
|
66
66
|
from not1mm.lib.version import __version__
|
67
67
|
from not1mm.lib.versiontest import VersionTest
|
68
68
|
from not1mm.lib.ft8_watcher import FT8Watcher
|
69
|
-
from not1mm.lib.fldigi_watcher import FlDigiWatcher
|
70
69
|
from not1mm.lib.fldigi_sendstring import FlDigi_Comm
|
71
70
|
|
72
71
|
import not1mm.fsutils as fsutils
|
@@ -174,10 +173,8 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
174
173
|
|
175
174
|
radio_thread = QThread()
|
176
175
|
voice_thread = QThread()
|
177
|
-
fldigi_thread = QThread()
|
178
176
|
rtc_thread = QThread()
|
179
177
|
|
180
|
-
fldigi_watcher = None
|
181
178
|
rig_control = None
|
182
179
|
log_window = None
|
183
180
|
check_window = None
|
@@ -668,14 +665,6 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
668
665
|
self.show_splash_msg("Reading macros.")
|
669
666
|
self.read_macros()
|
670
667
|
|
671
|
-
self.show_splash_msg("Starting FlDigi watcher.")
|
672
|
-
self.fldigi_watcher = FlDigiWatcher()
|
673
|
-
self.fldigi_watcher.moveToThread(self.fldigi_thread)
|
674
|
-
self.fldigi_thread.started.connect(self.fldigi_watcher.run)
|
675
|
-
self.fldigi_thread.finished.connect(self.fldigi_watcher.deleteLater)
|
676
|
-
self.fldigi_watcher.poll_callback.connect(self.fldigi_qso)
|
677
|
-
self.fldigi_thread.start()
|
678
|
-
|
679
668
|
self.show_splash_msg("Restoring window states.")
|
680
669
|
self.settings = QSettings("K6GTE", "not1mm")
|
681
670
|
if self.settings.value("windowState") is not None:
|
@@ -718,6 +707,20 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
718
707
|
"You can udate to the current version by using:\npip install -U not1mm"
|
719
708
|
)
|
720
709
|
|
710
|
+
self.udp_socket = QtNetwork.QUdpSocket()
|
711
|
+
b_result = self.udp_socket.bind(
|
712
|
+
QtNetwork.QHostAddress.SpecialAddress.AnyIPv4, 9876
|
713
|
+
)
|
714
|
+
logger.info(f"bind {b_result}")
|
715
|
+
self.udp_socket.readyRead.connect(self.fldigi_on_udp_socket_ready_read)
|
716
|
+
|
717
|
+
def fldigi_on_udp_socket_ready_read(self):
|
718
|
+
""""""
|
719
|
+
datagram, sender_host, sender_port_number = self.udp_socket.readDatagram(
|
720
|
+
self.udp_socket.pendingDatagramSize()
|
721
|
+
)
|
722
|
+
self.fldigi_qso(datagram.decode())
|
723
|
+
|
721
724
|
def load_call_history(self) -> None:
|
722
725
|
"""Display filepicker and load chosen call history file."""
|
723
726
|
filename = self.filepicker("other")
|
not1mm/lib/version.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: not1mm
|
3
|
-
Version: 24.12.
|
3
|
+
Version: 24.12.14
|
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
|
@@ -239,6 +239,7 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
|
|
239
239
|
|
240
240
|
## Recent Changes (Polishing the Turd)
|
241
241
|
|
242
|
+
- [24-12-14] Changed method of detecting fldigi QSOs. See docs.
|
242
243
|
- [24-12-12] Add a try exception for a unicode decode error.
|
243
244
|
- [24-12-11-1] Add RTC to RAC Canada Day, ARRL VHF, ARRL Field Day, ARRL SS, ARRL DX, 10 10
|
244
245
|
- [24-12-11] Add RTC to IARU HF, IARU Field Day, DARC XMAS, CQ WW, CQ WPX
|
@@ -638,9 +639,13 @@ On the Options TAB you can:
|
|
638
639
|
not1mm listens for WSJT-X UDP traffic on the Multicast address 224.0.0.1:2237.
|
639
640
|
No setup is needed to be done on not1mm's side. That's good because I'm lazy.
|
640
641
|
|
641
|
-
not1mm polls for fldigi QSOs via it's XMLRPC interface. It does this in a rather stupid
|
642
|
+
~~not1mm polls for fldigi QSOs via it's XMLRPC interface. It does this in a rather stupid
|
642
643
|
way. It just keeps asking what was the last QSO and compares it to the previous response.
|
643
|
-
If it's different, it's new
|
644
|
+
If it's different, it's new.~~
|
645
|
+
|
646
|
+
not1mm watches for fldigi qso's by watching for UDP traffic from fldigi on 127.0.0.1:9876.
|
647
|
+
|
648
|
+

|
644
649
|
|
645
650
|
The F1-F12 function keys be sent to fldigi via XMLRPC. Fldigi will be placed into TX
|
646
651
|
mode, the message will be sent and a ^r will be tacked onto the end to place it back into
|
@@ -1,5 +1,5 @@
|
|
1
1
|
not1mm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
-
not1mm/__main__.py,sha256=
|
2
|
+
not1mm/__main__.py,sha256=bThSgJVaz1ae0Y-ayJpuYn8NvAPiBXOTvy-PctnLkg4,144712
|
3
3
|
not1mm/bandmap.py,sha256=zD3aUf36NVQCy0plAcZLNxYhSEM9xZ8J1Cu9vrcFPYA,31136
|
4
4
|
not1mm/checkwindow.py,sha256=VFAcKYTcoWhmIf91chwY6tyao9FQMWPiUkgDDkkWaog,9670
|
5
5
|
not1mm/fsutils.py,sha256=ukHKxKTeNKxKwqRaJjtzRShL4X5Xl0jRBbADyy3Ifp8,1701
|
@@ -104,7 +104,6 @@ not1mm/lib/edit_macro.py,sha256=raKWBwsHInj5EUKmvyLQ6gqc3ZFDlstsD3xqoM4PC8E,517
|
|
104
104
|
not1mm/lib/edit_opon.py,sha256=j3qJ1aBsQoIOnQ9yiBl3lyeISvKTP0I_rtBYBPAfgeI,359
|
105
105
|
not1mm/lib/edit_station.py,sha256=doL21Hs6jzIE43ohAopdFt_iqnRJZHFcqzcnCS0-iio,1965
|
106
106
|
not1mm/lib/fldigi_sendstring.py,sha256=EeXSBRKgyUEzNyHBjMtHiFe-iOU3TcWcCCX77t0ur_I,602
|
107
|
-
not1mm/lib/fldigi_watcher.py,sha256=reZz3fZLDoJVVZhJD9nIssk2aczCzadDSQTVu-5mTCM,919
|
108
107
|
not1mm/lib/ft8_watcher.py,sha256=BFmVIsnbwuRMWoe-dIBybuCgi0WFmr8Km0O9l4eiwMM,4624
|
109
108
|
not1mm/lib/ham_utility.py,sha256=WMmYLDI_fJHHsn0wkpGVit2Hv8fo6r9ybexXROia8Cg,11967
|
110
109
|
not1mm/lib/lookup.py,sha256=KECMDi9tflRDzgTLeDfDl7HGWWRHvW3HCjNHyyjoWaY,10835
|
@@ -115,7 +114,7 @@ not1mm/lib/plugin_common.py,sha256=-cvXtEAUgZ7GtxaNiwVdHbZ-7wEBeoMPRZXNdCxnPyA,1
|
|
115
114
|
not1mm/lib/select_contest.py,sha256=WsptLuwkouIHeocJL3oZ6-eUfEnhpwdc-x7eMZ_TIVM,359
|
116
115
|
not1mm/lib/settings.py,sha256=j5lIMLHJ-eqIaVr_QhI82gkbOl17_C-5suRkWbHYET8,14717
|
117
116
|
not1mm/lib/super_check_partial.py,sha256=hwT2NRwobu0PLDyw6ltmbmcAtGBD02CKGFbgGWjXMqA,2334
|
118
|
-
not1mm/lib/version.py,sha256=
|
117
|
+
not1mm/lib/version.py,sha256=DDYJZfbw95B2hyfICy7lNMJfrh774wLa8A8CrBkeWpg,49
|
119
118
|
not1mm/lib/versiontest.py,sha256=8vDNptuBBunn-1IGkjNaquehqBYUJyjrPSF8Igmd4_Y,1286
|
120
119
|
not1mm/plugins/10_10_fall_cw.py,sha256=5QUyGMvGBC-HxcY_z9QbfuxSg3f7p6C9K4qhTxgZE7k,14719
|
121
120
|
not1mm/plugins/10_10_spring_cw.py,sha256=XjYFM263WYyG6nVQzPObW4YC7Z9L93rixSOcVsxPvH4,14722
|
@@ -164,9 +163,9 @@ not1mm/plugins/ref_ssb.py,sha256=vfS9-mcnbw2znRvU4jh20JqI9BXap8jV65OV5mbCkCk,209
|
|
164
163
|
not1mm/plugins/stew_perry_topband.py,sha256=D1hekmMbx-i4BhaP2uzOK3OzaVVMMdgcN3RmfweNqHo,15341
|
165
164
|
not1mm/plugins/weekly_rtty.py,sha256=huZszbZsIh4vF3cP80UyPzy3qxIoHdEiT1b6KuvwgYc,20083
|
166
165
|
not1mm/plugins/winter_field_day.py,sha256=cSCFwy1LOoDDA9Zs1LHRG3r8spDMSKDisxyPxnVrLjw,15149
|
167
|
-
not1mm-24.12.
|
168
|
-
not1mm-24.12.
|
169
|
-
not1mm-24.12.
|
170
|
-
not1mm-24.12.
|
171
|
-
not1mm-24.12.
|
172
|
-
not1mm-24.12.
|
166
|
+
not1mm-24.12.14.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
167
|
+
not1mm-24.12.14.dist-info/METADATA,sha256=2p57a8FUbeXcEWuyk1vSjfDHqXntbNL02NdZkVT73-8,36440
|
168
|
+
not1mm-24.12.14.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
169
|
+
not1mm-24.12.14.dist-info/entry_points.txt,sha256=pMcZk_0dxFgLkcUkF0Q874ojpwOmF3OL6EKw9LgvocM,47
|
170
|
+
not1mm-24.12.14.dist-info/top_level.txt,sha256=0YmTxEcDzQlzXub-lXASvoLpg_mt1c2thb5cVkDf5J4,7
|
171
|
+
not1mm-24.12.14.dist-info/RECORD,,
|
not1mm/lib/fldigi_watcher.py
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
import xmlrpc.client
|
2
|
-
from PyQt6.QtCore import QObject, pyqtSignal, QThread, QEventLoop
|
3
|
-
|
4
|
-
|
5
|
-
class FlDigiWatcher(QObject):
|
6
|
-
"""fldigi watcher"""
|
7
|
-
|
8
|
-
poll_callback = pyqtSignal(str)
|
9
|
-
time_to_quit = False
|
10
|
-
|
11
|
-
def __init__(self):
|
12
|
-
super().__init__()
|
13
|
-
...
|
14
|
-
|
15
|
-
self.target = "http://127.0.0.1:7362"
|
16
|
-
self.payload = ""
|
17
|
-
self.response = ""
|
18
|
-
|
19
|
-
def run(self):
|
20
|
-
while not self.time_to_quit:
|
21
|
-
try:
|
22
|
-
server = xmlrpc.client.ServerProxy(self.target)
|
23
|
-
self.response = server.logbook.last_record()
|
24
|
-
except OSError:
|
25
|
-
QThread.msleep(100)
|
26
|
-
continue
|
27
|
-
if self.payload != self.response:
|
28
|
-
self.payload = self.response
|
29
|
-
try:
|
30
|
-
self.poll_callback.emit(self.payload)
|
31
|
-
except QEventLoop:
|
32
|
-
...
|
33
|
-
QThread.msleep(100)
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|