not1mm 25.4.16__py3-none-any.whl → 25.4.18__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 +47 -0
- not1mm/data/configuration.ui +15 -1
- not1mm/lib/cat_interface.py +18 -0
- not1mm/lib/settings.py +5 -0
- not1mm/lib/version.py +1 -1
- not1mm/radio.py +5 -0
- {not1mm-25.4.16.dist-info → not1mm-25.4.18.dist-info}/METADATA +14 -1
- {not1mm-25.4.16.dist-info → not1mm-25.4.18.dist-info}/RECORD +12 -12
- {not1mm-25.4.16.dist-info → not1mm-25.4.18.dist-info}/WHEEL +0 -0
- {not1mm-25.4.16.dist-info → not1mm-25.4.18.dist-info}/entry_points.txt +0 -0
- {not1mm-25.4.16.dist-info → not1mm-25.4.18.dist-info}/licenses/LICENSE +0 -0
- {not1mm-25.4.16.dist-info → not1mm-25.4.18.dist-info}/top_level.txt +0 -0
not1mm/__main__.py
CHANGED
@@ -170,6 +170,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
170
170
|
use_esm = False
|
171
171
|
use_call_history = False
|
172
172
|
esm_dict = {}
|
173
|
+
sandpfreq = 0
|
173
174
|
|
174
175
|
radio_thread = QThread()
|
175
176
|
voice_thread = QThread()
|
@@ -2908,6 +2909,46 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
2908
2909
|
if "{WIPE}" in macro:
|
2909
2910
|
macro = macro.replace("{WIPE}", "")
|
2910
2911
|
self.clearinputs()
|
2912
|
+
if "{VOICE1}" in macro:
|
2913
|
+
macro = macro.replace("{VOICE1}", "")
|
2914
|
+
if self.rig_control:
|
2915
|
+
self.rig_control.sendvoicememory(memoryspot=1)
|
2916
|
+
if "{VOICE2}" in macro:
|
2917
|
+
macro = macro.replace("{VOICE2}", "")
|
2918
|
+
if self.rig_control:
|
2919
|
+
self.rig_control.sendvoicememory(memoryspot=2)
|
2920
|
+
if "{VOICE3}" in macro:
|
2921
|
+
macro = macro.replace("{VOICE3}", "")
|
2922
|
+
if self.rig_control:
|
2923
|
+
self.rig_control.sendvoicememory(memoryspot=3)
|
2924
|
+
if "{VOICE4}" in macro:
|
2925
|
+
macro = macro.replace("{VOICE4}", "")
|
2926
|
+
if self.rig_control:
|
2927
|
+
self.rig_control.sendvoicememory(memoryspot=4)
|
2928
|
+
if "{VOICE5}" in macro:
|
2929
|
+
macro = macro.replace("{VOICE5}", "")
|
2930
|
+
if self.rig_control:
|
2931
|
+
self.rig_control.sendvoicememory(memoryspot=5)
|
2932
|
+
if "{VOICE6}" in macro:
|
2933
|
+
macro = macro.replace("{VOICE6}", "")
|
2934
|
+
if self.rig_control:
|
2935
|
+
self.rig_control.sendvoicememory(memoryspot=6)
|
2936
|
+
if "{VOICE7}" in macro:
|
2937
|
+
macro = macro.replace("{VOICE7}", "")
|
2938
|
+
if self.rig_control:
|
2939
|
+
self.rig_control.sendvoicememory(memoryspot=7)
|
2940
|
+
if "{VOICE8}" in macro:
|
2941
|
+
macro = macro.replace("{VOICE8}", "")
|
2942
|
+
if self.rig_control:
|
2943
|
+
self.rig_control.sendvoicememory(memoryspot=8)
|
2944
|
+
if "{VOICE9}" in macro:
|
2945
|
+
macro = macro.replace("{VOICE9}", "")
|
2946
|
+
if self.rig_control:
|
2947
|
+
self.rig_control.sendvoicememory(memoryspot=9)
|
2948
|
+
if "{VOICE10}" in macro:
|
2949
|
+
macro = macro.replace("{VOICE10}", "")
|
2950
|
+
if self.rig_control:
|
2951
|
+
self.rig_control.sendvoicememory(memoryspot=10)
|
2911
2952
|
return macro
|
2912
2953
|
|
2913
2954
|
def ptt_on(self) -> None:
|
@@ -3458,6 +3499,9 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
3458
3499
|
"""
|
3459
3500
|
if self.auto_cq is True:
|
3460
3501
|
self.stop_cw()
|
3502
|
+
if self.pref.get("sandpqsy") is True and self.radioButton_sp.isChecked():
|
3503
|
+
self.sandpfreq = int(self.radio_state.get("vfoa", 0))
|
3504
|
+
print(f"{self.sandpfreq=}")
|
3461
3505
|
text = self.callsign.text()
|
3462
3506
|
text = text.upper()
|
3463
3507
|
position = self.callsign.cursorPosition()
|
@@ -3868,6 +3912,9 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
3868
3912
|
if self.radio_state.get("vfoa") != vfo:
|
3869
3913
|
info_dirty = True
|
3870
3914
|
self.radio_state["vfoa"] = vfo
|
3915
|
+
if self.pref.get("sandpqsy") is True and self.radioButton_sp.isChecked():
|
3916
|
+
if max(int(vfo), self.sandpfreq) - min(int(vfo), self.sandpfreq) > 50:
|
3917
|
+
self.clearinputs()
|
3871
3918
|
band = getband(str(vfo))
|
3872
3919
|
self.radio_state["band"] = band
|
3873
3920
|
self.contact["Band"] = get_logged_band(str(vfo))
|
not1mm/data/configuration.ui
CHANGED
@@ -2307,6 +2307,20 @@
|
|
2307
2307
|
</item>
|
2308
2308
|
</layout>
|
2309
2309
|
</item>
|
2310
|
+
<item>
|
2311
|
+
<widget class="Line" name="line_2">
|
2312
|
+
<property name="orientation">
|
2313
|
+
<enum>Qt::Horizontal</enum>
|
2314
|
+
</property>
|
2315
|
+
</widget>
|
2316
|
+
</item>
|
2317
|
+
<item>
|
2318
|
+
<widget class="QCheckBox" name="qsy_on_change">
|
2319
|
+
<property name="text">
|
2320
|
+
<string>S&&P QSY on Freq Change</string>
|
2321
|
+
</property>
|
2322
|
+
</widget>
|
2323
|
+
</item>
|
2310
2324
|
<item>
|
2311
2325
|
<spacer name="verticalSpacer_8">
|
2312
2326
|
<property name="orientation">
|
@@ -2441,7 +2455,7 @@
|
|
2441
2455
|
</property>
|
2442
2456
|
</designerdata>
|
2443
2457
|
<buttongroups>
|
2444
|
-
<buttongroup name="buttonGroup_2"/>
|
2445
2458
|
<buttongroup name="buttonGroup"/>
|
2459
|
+
<buttongroup name="buttonGroup_2"/>
|
2446
2460
|
</buttongroups>
|
2447
2461
|
</ui>
|
not1mm/lib/cat_interface.py
CHANGED
@@ -156,6 +156,24 @@ class CAT:
|
|
156
156
|
self.rigctrlsocket.settimeout(0.5)
|
157
157
|
return dump
|
158
158
|
|
159
|
+
def sendvoicememory(self, memoryspot=1):
|
160
|
+
"""..."""
|
161
|
+
if self.interface == "rigctld":
|
162
|
+
return self.__sendvoicememory_rigctld(memoryspot)
|
163
|
+
|
164
|
+
def __sendvoicememory_rigctld(self, memoryspot=1):
|
165
|
+
"""..."""
|
166
|
+
try:
|
167
|
+
self.online = True
|
168
|
+
self.rigctrlsocket.send(bytes(f"+\send_voice_mem {memoryspot}\n", "utf-8"))
|
169
|
+
_ = self.__get_serial_string()
|
170
|
+
return
|
171
|
+
except socket.error as exception:
|
172
|
+
self.online = False
|
173
|
+
logger.debug("%s", f"{exception}")
|
174
|
+
self.rigctrlsocket = None
|
175
|
+
return
|
176
|
+
|
159
177
|
def sendcw(self, texttosend):
|
160
178
|
"""..."""
|
161
179
|
logger.debug(f"{texttosend=} {self.interface=}")
|
not1mm/lib/settings.py
CHANGED
@@ -58,6 +58,8 @@ class Settings(QtWidgets.QDialog):
|
|
58
58
|
bool(self.preference.get("use_call_history", False))
|
59
59
|
)
|
60
60
|
|
61
|
+
self.qsy_on_change.setChecked(bool(self.preference.get("sandpqsy", False)))
|
62
|
+
|
61
63
|
self.use_esm.setChecked(bool(self.preference.get("use_esm", False)))
|
62
64
|
|
63
65
|
value = self.preference.get("esm_agn", "DISABLED")
|
@@ -229,6 +231,9 @@ class Settings(QtWidgets.QDialog):
|
|
229
231
|
self.auto_cq_delay.setText(str(self.preference.get("auto_cq_interval", "15")))
|
230
232
|
|
231
233
|
self.preference["use_call_history"] = self.use_call_history.isChecked()
|
234
|
+
|
235
|
+
self.preference["sandpqsy"] = self.qsy_on_change.isChecked()
|
236
|
+
|
232
237
|
self.preference["use_esm"] = self.use_esm.isChecked()
|
233
238
|
self.preference["esm_cq"] = self.esm_cq.currentText()
|
234
239
|
self.preference["esm_agn"] = self.esm_agn.currentText()
|
not1mm/lib/version.py
CHANGED
not1mm/radio.py
CHANGED
@@ -131,6 +131,11 @@ class Radio(QObject):
|
|
131
131
|
if the_mode in cwmodes:
|
132
132
|
self.last_cw_mode = the_mode
|
133
133
|
|
134
|
+
def sendvoicememory(self, memoryspot=1):
|
135
|
+
"""..."""
|
136
|
+
if self.cat:
|
137
|
+
self.cat.sendvoicememory(memoryspot)
|
138
|
+
|
134
139
|
def sendcw(self, texttosend):
|
135
140
|
"""..."""
|
136
141
|
logger.debug(f"Send CW: {texttosend}")
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: not1mm
|
3
|
-
Version: 25.4.
|
3
|
+
Version: 25.4.18
|
4
4
|
Summary: NOT1MM Logger
|
5
5
|
Author-email: Michael Bridak <michael.bridak@gmail.com>
|
6
6
|
License: GPL-3.0-or-later
|
@@ -111,6 +111,8 @@ Dynamic: license-file
|
|
111
111
|
- [Editing macro keys](#editing-macro-keys)
|
112
112
|
- [Macro substitutions](#macro-substitutions)
|
113
113
|
- [Macro use with voice](#macro-use-with-voice)
|
114
|
+
- [{VOICE1} - {VOICE10}](#voice1---voice10)
|
115
|
+
- [Voice macro wave files](#voice-macro-wave-files)
|
114
116
|
- [cty.dat and QRZ lookups for distance and bearing](#ctydat-and-qrz-lookups-for-distance-and-bearing)
|
115
117
|
- [Other uses for the call field](#other-uses-for-the-call-field)
|
116
118
|
- [The Windows](#the-windows)
|
@@ -254,6 +256,8 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
|
|
254
256
|
|
255
257
|
## Recent Changes
|
256
258
|
|
259
|
+
- [25-4-18] Option to clear input fields when QSY in S&P mode.
|
260
|
+
- [25-4-17] Testing sending radio voice memory. {VOICE1}, {VOICE2} etc.
|
257
261
|
- [25-4-16] Fix serial number not updating when selecing call from checkpartial or bandmap.
|
258
262
|
- [25-4-15] Corrected dupe_type 5 check for contest specific function. Fixed wrong ES Open plugin name. Fixed some problems with the specific_contest_check_dupe datetime namespace. And other stuff.
|
259
263
|
- [25-4-14] Add ES Open HF Chanmpionship.
|
@@ -643,6 +647,7 @@ On the Options TAB you can:
|
|
643
647
|
- Select to use Enter Sends Message ([ESM](#esm)), and configure it's function keys.
|
644
648
|
- Select whether or not to use [Call History](#call-history-files) info.
|
645
649
|
- Select whether or not to send XML score info to online scoreboards.
|
650
|
+
- Select whether or not to clear input fields when you QSY while in S&P mode.
|
646
651
|
|
647
652
|

|
648
653
|
|
@@ -735,9 +740,17 @@ You can include a limited set of substitution instructions.
|
|
735
740
|
| {SANDP} | Change to S&P mode. |
|
736
741
|
| {WIPE} | Wipe input fields. |
|
737
742
|
| '#' | Sends serial number. |
|
743
|
+
| {VOICE1} - {VOICE10} | Uses rigctld to send voice macros stored in the radio. |
|
738
744
|
|
739
745
|
### Macro use with voice
|
740
746
|
|
747
|
+
#### {VOICE1} - {VOICE10}
|
748
|
+
|
749
|
+
If you use rigctld and your radio supports it you can use the macros {VOICE1},
|
750
|
+
{VOICE2} etc to send the voice messages stored in your radio.
|
751
|
+
|
752
|
+
#### Voice macro wave files
|
753
|
+
|
741
754
|
The macros when used with voice, will also accept filenames of WAV files to
|
742
755
|
play, excluding the file extension. The filename must be enclosed by brackets.
|
743
756
|
For example `[CQ]` will play `cq.wav`, `[again]` will play `again.wav`. The wav
|
@@ -1,11 +1,11 @@
|
|
1
1
|
not1mm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
-
not1mm/__main__.py,sha256=
|
2
|
+
not1mm/__main__.py,sha256=H-yiDOuCTC0nS8liGknLJwpdSUM96bvdAcR1Vl2ILqw,156326
|
3
3
|
not1mm/bandmap.py,sha256=-zu5slsuAm2GmeW8g3yvURzsuQxemwIQfw1HEq8xKHM,29920
|
4
4
|
not1mm/checkwindow.py,sha256=zEHlw40j6Wr3rvKbCQf2lcezCoiZqaBqEvBjQU5aKW0,7630
|
5
5
|
not1mm/fsutils.py,sha256=ukHKxKTeNKxKwqRaJjtzRShL4X5Xl0jRBbADyy3Ifp8,1701
|
6
6
|
not1mm/logwindow.py,sha256=e36t4ebyhLF6UR3y3HJWUwL1rzeqRFzdek7NAYINJNM,42565
|
7
7
|
not1mm/lookupservice.py,sha256=GkY_qHZfrW6XHf8upIoaG4hCFqm0fg6Ganu9ConGrIc,2628
|
8
|
-
not1mm/radio.py,sha256=
|
8
|
+
not1mm/radio.py,sha256=O_jkMJhsrr5IlktjRk7-H7I-r18NU54wjZ6BY5vf5cI,5542
|
9
9
|
not1mm/ratewindow.py,sha256=PeFmmXYKA6ikR8AzWB6n5TS_1NoaHLocw4pSdySq_7A,6995
|
10
10
|
not1mm/rtc_service.py,sha256=axAwnCBuTr-QL0YwXtWvg9tjwhcFsiiEZFgFjOofX6k,2816
|
11
11
|
not1mm/statistics.py,sha256=YbXBCr8wtmXlF21ojgsh0jY_G-dnCApUFe87JZclZAI,7712
|
@@ -19,7 +19,7 @@ not1mm/data/alpha bravo charlie delta.txt,sha256=d5QMmSWEUAe4Rj1XbNjTPLa_5Be4Se6
|
|
19
19
|
not1mm/data/bandmap.ui,sha256=hDYya6I7_EAM_c5wkLzWcD0nQovd2uIHjvJLCKQq3Zk,8624
|
20
20
|
not1mm/data/check.png,sha256=UvFOLr8V-79qnjW8wUaGItXk_OSP8m8hqPevs8NDlFY,387
|
21
21
|
not1mm/data/checkwindow.ui,sha256=PRD98K0julJ9EfWqoE89dT8UPuPKQzGiWBk_efAko3o,5141
|
22
|
-
not1mm/data/configuration.ui,sha256=
|
22
|
+
not1mm/data/configuration.ui,sha256=wIFsPf6GtgYYOQ5BVtth9v5bHejF6QcplPabVXe0_VE,75198
|
23
23
|
not1mm/data/contests.sql,sha256=4hmJCDvrbxnA_Y5S4T5o52TZieeFk6QUwFerwlFePNA,89307
|
24
24
|
not1mm/data/cty.json,sha256=bwPhOrOAgvV9JiXUDT9kzCqfNWAhGuJQt489h0SKsCk,4925375
|
25
25
|
not1mm/data/cwmacros.txt,sha256=NztufsX6R52gAO7VyJ2AHr7wOh41pJTwHKh5Lcs32ds,468
|
@@ -100,7 +100,7 @@ not1mm/data/phonetics/yourcall.wav,sha256=4kheHJmCiRDL2kjhlgXQ8_u_eEMgKxiNGu5UBk
|
|
100
100
|
not1mm/data/phonetics/z.wav,sha256=arafCi7fwmBLdVDI-PRyaL4U-03PIQDhffwY5noJ_2c,51768
|
101
101
|
not1mm/lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
102
102
|
not1mm/lib/about.py,sha256=sWycfGcruN3SaEe4JmaJ61K6D8Itq0WxpUYT-lEcmYM,416
|
103
|
-
not1mm/lib/cat_interface.py,sha256=
|
103
|
+
not1mm/lib/cat_interface.py,sha256=qHoGaw6ftkGE32fzEri_mivEWDRs-DwnMv_WmwonUPY,25816
|
104
104
|
not1mm/lib/cwinterface.py,sha256=rKUnqljHQC_Iljq4TCmAgSPe49lWbKcfxg58cE8YX5Y,5177
|
105
105
|
not1mm/lib/database.py,sha256=fykyaQaTa_Pwde51f09Odbexy1mlUqObv0fjZ7hf3E0,51693
|
106
106
|
not1mm/lib/edit_contact.py,sha256=Ki9bGPpqyQQBB1cU8VIBDCal3lbXeQ6qxhzklmhE2_w,353
|
@@ -116,9 +116,9 @@ not1mm/lib/n1mm.py,sha256=H54mpgJF0GAmKavM-nb5OAq2SJFWYkux4eMWWiSRxJc,6288
|
|
116
116
|
not1mm/lib/new_contest.py,sha256=IznTDMq7yXHB6zBoGUEC_WDYPCPpsSZW4wwMJi16zK0,816
|
117
117
|
not1mm/lib/plugin_common.py,sha256=D1OBjyLmX7zuSPqgTCmHwXzAKA12J_zTQItvyIem-4Y,13299
|
118
118
|
not1mm/lib/select_contest.py,sha256=WsptLuwkouIHeocJL3oZ6-eUfEnhpwdc-x7eMZ_TIVM,359
|
119
|
-
not1mm/lib/settings.py,sha256=
|
119
|
+
not1mm/lib/settings.py,sha256=cC83Nw4pGLWyHybIflDR1ylX9P7Hq2P5b5yFZtx-llY,15410
|
120
120
|
not1mm/lib/super_check_partial.py,sha256=hwT2NRwobu0PLDyw6ltmbmcAtGBD02CKGFbgGWjXMqA,2334
|
121
|
-
not1mm/lib/version.py,sha256=
|
121
|
+
not1mm/lib/version.py,sha256=WFLLWrJ73Jk8YVbDaiivewkz5E4NQGLsVNtzPPQjD5o,48
|
122
122
|
not1mm/lib/versiontest.py,sha256=8vDNptuBBunn-1IGkjNaquehqBYUJyjrPSF8Igmd4_Y,1286
|
123
123
|
not1mm/plugins/10_10_fall_cw.py,sha256=oJh3JKqjOpnWElSlZpiQ631UnaOd8qra5s9bl_QoInk,14783
|
124
124
|
not1mm/plugins/10_10_spring_cw.py,sha256=p7dSDtbFK0e6Xouw2V6swYn3VFVgHKyx4IfRWyBjMZY,14786
|
@@ -179,9 +179,9 @@ not1mm/plugins/stew_perry_topband.py,sha256=3U-Dr28haBTqTaZWLiC1qHQBmLsLENDL-ihy
|
|
179
179
|
not1mm/plugins/ukeidx.py,sha256=0ABGW7_9Ui0Rgr8mkPBxOJokAIerM1a4-HWnl6VsnV8,19105
|
180
180
|
not1mm/plugins/weekly_rtty.py,sha256=C8Xs3Q5UgSYx-mFFar8BVARWtmqlyrbeC98Ubzb4UN8,20128
|
181
181
|
not1mm/plugins/winter_field_day.py,sha256=hmAMgkdqIXtnCNyUp8J9Bb8liN8wj10wps6ROuG-Bok,15284
|
182
|
-
not1mm-25.4.
|
183
|
-
not1mm-25.4.
|
184
|
-
not1mm-25.4.
|
185
|
-
not1mm-25.4.
|
186
|
-
not1mm-25.4.
|
187
|
-
not1mm-25.4.
|
182
|
+
not1mm-25.4.18.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
183
|
+
not1mm-25.4.18.dist-info/METADATA,sha256=0YsPESEzW7Gr-ufLWKl3l-lgzFLMkmDEDC7RKYbktT8,40285
|
184
|
+
not1mm-25.4.18.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
185
|
+
not1mm-25.4.18.dist-info/entry_points.txt,sha256=pMcZk_0dxFgLkcUkF0Q874ojpwOmF3OL6EKw9LgvocM,47
|
186
|
+
not1mm-25.4.18.dist-info/top_level.txt,sha256=0YmTxEcDzQlzXub-lXASvoLpg_mt1c2thb5cVkDf5J4,7
|
187
|
+
not1mm-25.4.18.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|