not1mm 24.11.24__py3-none-any.whl → 24.12.3.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 +8 -4
- not1mm/bandmap.py +9 -0
- not1mm/data/bandmap.ui +43 -12
- not1mm/data/configuration.ui +77 -67
- not1mm/data/new_contest.ui +5 -0
- not1mm/lib/cat_interface.py +24 -14
- not1mm/lib/database.py +17 -0
- not1mm/lib/settings.py +5 -0
- not1mm/lib/version.py +1 -1
- not1mm/plugins/10_10_fall_cw.py +91 -0
- not1mm/plugins/10_10_spring_cw.py +91 -0
- not1mm/plugins/10_10_summer_phone.py +91 -0
- not1mm/plugins/10_10_winter_phone.py +91 -0
- not1mm/plugins/arrl_10m.py +110 -0
- not1mm/plugins/arrl_160m.py +543 -0
- not1mm/plugins/arrl_vhf_jan.py +92 -1
- not1mm/plugins/arrl_vhf_jun.py +92 -1
- not1mm/plugins/arrl_vhf_sep.py +95 -1
- not1mm/plugins/cq_160_cw.py +94 -5
- not1mm/plugins/cq_160_ssb.py +94 -5
- not1mm/plugins/cq_ww_cw.py +14 -5
- not1mm/plugins/cq_ww_ssb.py +13 -5
- not1mm/radio.py +5 -4
- {not1mm-24.11.24.dist-info → not1mm-24.12.3.1.dist-info}/METADATA +30 -42
- {not1mm-24.11.24.dist-info → not1mm-24.12.3.1.dist-info}/RECORD +29 -28
- {not1mm-24.11.24.dist-info → not1mm-24.12.3.1.dist-info}/LICENSE +0 -0
- {not1mm-24.11.24.dist-info → not1mm-24.12.3.1.dist-info}/WHEEL +0 -0
- {not1mm-24.11.24.dist-info → not1mm-24.12.3.1.dist-info}/entry_points.txt +0 -0
- {not1mm-24.11.24.dist-info → not1mm-24.12.3.1.dist-info}/top_level.txt +0 -0
not1mm/__main__.py
CHANGED
@@ -1731,7 +1731,6 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
1731
1731
|
"""
|
1732
1732
|
|
1733
1733
|
self.show_message_box(
|
1734
|
-
"[Esc]\tClears the input fields of any text.\n"
|
1735
1734
|
"[CTRL-Esc]\tStops cwdaemon from sending Morse.\n"
|
1736
1735
|
"[PgUp]\tIncreases the cw sending speed.\n"
|
1737
1736
|
"[PgDown]\tDecreases the cw sending speed.\n"
|
@@ -1751,6 +1750,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
1751
1750
|
"[CTRL-S]\tSpot Callsign to the cluster.\n"
|
1752
1751
|
"[CTRL-SHIFT-K] Open CW text input field.\n"
|
1753
1752
|
"[CTRL-=]\tLog the contact without sending the ESM macros.\n"
|
1753
|
+
"[CTRL-W]\tClears the input fields of any text.\n"
|
1754
1754
|
)
|
1755
1755
|
|
1756
1756
|
def filepicker(self, action: str) -> str:
|
@@ -2087,14 +2087,14 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
2087
2087
|
self.bandmap_window.msg_from_main(cmd)
|
2088
2088
|
return
|
2089
2089
|
if (
|
2090
|
-
event.key() == Qt.Key.
|
2091
|
-
and modifier
|
2090
|
+
event.key() == Qt.Key.Key_W
|
2091
|
+
and modifier == Qt.KeyboardModifier.ControlModifier
|
2092
2092
|
): # pylint: disable=no-member
|
2093
2093
|
self.clearinputs()
|
2094
2094
|
return
|
2095
2095
|
if (
|
2096
2096
|
event.key() == Qt.Key.Key_Escape
|
2097
|
-
and modifier
|
2097
|
+
and modifier != Qt.KeyboardModifier.ControlModifier
|
2098
2098
|
):
|
2099
2099
|
if self.cw is not None:
|
2100
2100
|
if self.cw.servertype == 1:
|
@@ -2920,6 +2920,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
2920
2920
|
self.pref.get("CAT_ip", "127.0.0.1"),
|
2921
2921
|
int(self.pref.get("CAT_port", 12345)),
|
2922
2922
|
)
|
2923
|
+
self.rig_control.delta = int(self.pref.get("CAT_polldelta", 555))
|
2923
2924
|
self.rig_control.moveToThread(self.radio_thread)
|
2924
2925
|
self.radio_thread.started.connect(self.rig_control.run)
|
2925
2926
|
self.radio_thread.finished.connect(self.rig_control.deleteLater)
|
@@ -2936,6 +2937,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
2936
2937
|
self.pref.get("CAT_ip", "127.0.0.1"),
|
2937
2938
|
int(self.pref.get("CAT_port", 4532)),
|
2938
2939
|
)
|
2940
|
+
self.rig_control.delta = int(self.pref.get("CAT_polldelta", 555))
|
2939
2941
|
self.rig_control.moveToThread(self.radio_thread)
|
2940
2942
|
self.radio_thread.started.connect(self.rig_control.run)
|
2941
2943
|
self.radio_thread.finished.connect(self.rig_control.deleteLater)
|
@@ -2947,6 +2949,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
2947
2949
|
self.pref.get("CAT_ip", "127.0.0.1"),
|
2948
2950
|
int(self.pref.get("CAT_port", 0000)),
|
2949
2951
|
)
|
2952
|
+
self.rig_control.delta = int(self.pref.get("CAT_polldelta", 555))
|
2950
2953
|
self.rig_control.moveToThread(self.radio_thread)
|
2951
2954
|
self.radio_thread.started.connect(self.rig_control.run)
|
2952
2955
|
self.radio_thread.finished.connect(self.rig_control.deleteLater)
|
@@ -3543,6 +3546,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
3543
3546
|
self.opon_dialog.close()
|
3544
3547
|
logger.debug("New Op: %s", self.current_op)
|
3545
3548
|
self.make_op_dir()
|
3549
|
+
self.set_window_title()
|
3546
3550
|
|
3547
3551
|
def make_op_dir(self) -> None:
|
3548
3552
|
"""
|
not1mm/bandmap.py
CHANGED
@@ -311,6 +311,10 @@ class Database:
|
|
311
311
|
(f"-{minutes} minutes",),
|
312
312
|
)
|
313
313
|
|
314
|
+
def delete_marks(self) -> None:
|
315
|
+
"""Delete marked spots."""
|
316
|
+
self.cursor.execute("delete from spots where ts > datetime('now');")
|
317
|
+
|
314
318
|
|
315
319
|
class BandMapWindow(QDockWidget):
|
316
320
|
"""The BandMapWindow class."""
|
@@ -345,6 +349,7 @@ class BandMapWindow(QDockWidget):
|
|
345
349
|
self.agetime = self.clear_spot_olderSpinBox.value()
|
346
350
|
self.clear_spot_olderSpinBox.valueChanged.connect(self.spot_aging_changed)
|
347
351
|
self.clearButton.clicked.connect(self.clear_spots)
|
352
|
+
self.clearmarkedButton.clicked.connect(self.clear_marked)
|
348
353
|
self.zoominButton.clicked.connect(self.dec_zoom)
|
349
354
|
self.zoomoutButton.clicked.connect(self.inc_zoom)
|
350
355
|
self.connectButton.clicked.connect(self.connect)
|
@@ -873,6 +878,10 @@ class BandMapWindow(QDockWidget):
|
|
873
878
|
"""Delete all spots from the database."""
|
874
879
|
self.spots.delete_spots(0)
|
875
880
|
|
881
|
+
def clear_marked(self) -> None:
|
882
|
+
"""Delete all marked spots."""
|
883
|
+
self.spots.delete_marks()
|
884
|
+
|
876
885
|
def spot_aging_changed(self) -> None:
|
877
886
|
"""Called when spot aging spinbox is changed."""
|
878
887
|
self.agetime = self.clear_spot_olderSpinBox.value()
|
not1mm/data/bandmap.ui
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
<rect>
|
7
7
|
<x>0</x>
|
8
8
|
<y>0</y>
|
9
|
-
<width>
|
9
|
+
<width>342</width>
|
10
10
|
<height>700</height>
|
11
11
|
</rect>
|
12
12
|
</property>
|
@@ -97,7 +97,7 @@
|
|
97
97
|
<rect>
|
98
98
|
<x>0</x>
|
99
99
|
<y>0</y>
|
100
|
-
<width>
|
100
|
+
<width>326</width>
|
101
101
|
<height>512</height>
|
102
102
|
</rect>
|
103
103
|
</property>
|
@@ -148,18 +148,49 @@
|
|
148
148
|
<enum>Qt::NoFocus</enum>
|
149
149
|
</property>
|
150
150
|
<property name="accessibleName">
|
151
|
-
<string>clear
|
151
|
+
<string>clear spots</string>
|
152
152
|
</property>
|
153
153
|
<property name="accessibleDescription">
|
154
154
|
<string>clear spots</string>
|
155
155
|
</property>
|
156
|
+
<property name="maximumSize">
|
157
|
+
<size>
|
158
|
+
<width>1110</width>
|
159
|
+
<height>27</height>
|
160
|
+
</size>
|
161
|
+
</property>
|
162
|
+
<property name="text">
|
163
|
+
<string>🗑 Spots</string>
|
164
|
+
</property>
|
165
|
+
</widget>
|
166
|
+
</item>
|
167
|
+
<item>
|
168
|
+
<widget class="QPushButton" name="clearmarkedButton">
|
169
|
+
<property name="minimumSize">
|
170
|
+
<size>
|
171
|
+
<width>110</width>
|
172
|
+
<height>0</height>
|
173
|
+
</size>
|
174
|
+
</property>
|
175
|
+
<property name="maximumSize">
|
176
|
+
<size>
|
177
|
+
<width>1110</width>
|
178
|
+
<height>27</height>
|
179
|
+
</size>
|
180
|
+
</property>
|
156
181
|
<property name="text">
|
157
|
-
<string
|
182
|
+
<string>🗑 Marked</string>
|
158
183
|
</property>
|
159
184
|
</widget>
|
160
185
|
</item>
|
161
186
|
<item>
|
162
187
|
<widget class="QPushButton" name="zoominButton">
|
188
|
+
<property name="maximumSize">
|
189
|
+
<size>
|
190
|
+
<width>27</width>
|
191
|
+
<height>27</height>
|
192
|
+
</size>
|
193
|
+
</property>
|
163
194
|
<property name="focusPolicy">
|
164
195
|
<enum>Qt::NoFocus</enum>
|
165
196
|
</property>
|
@@ -170,12 +201,18 @@
|
|
170
201
|
<string>zoom in</string>
|
171
202
|
</property>
|
172
203
|
<property name="text">
|
173
|
-
<string
|
204
|
+
<string>➕</string>
|
174
205
|
</property>
|
175
206
|
</widget>
|
176
207
|
</item>
|
177
208
|
<item>
|
178
209
|
<widget class="QPushButton" name="zoomoutButton">
|
210
|
+
<property name="maximumSize">
|
211
|
+
<size>
|
212
|
+
<width>27</width>
|
213
|
+
<height>27</height>
|
214
|
+
</size>
|
215
|
+
</property>
|
179
216
|
<property name="focusPolicy">
|
180
217
|
<enum>Qt::NoFocus</enum>
|
181
218
|
</property>
|
@@ -186,7 +223,7 @@
|
|
186
223
|
<string>zoom out</string>
|
187
224
|
</property>
|
188
225
|
<property name="text">
|
189
|
-
<string
|
226
|
+
<string>➖</string>
|
190
227
|
</property>
|
191
228
|
</widget>
|
192
229
|
</item>
|
@@ -205,12 +242,6 @@
|
|
205
242
|
</property>
|
206
243
|
<item>
|
207
244
|
<widget class="QLabel" name="clear_spot_olderLabel">
|
208
|
-
<property name="font">
|
209
|
-
<font>
|
210
|
-
<family>JetBrains Mono ExtraLight</family>
|
211
|
-
<pointsize>11</pointsize>
|
212
|
-
</font>
|
213
|
-
</property>
|
214
245
|
<property name="text">
|
215
246
|
<string>Clear older than </string>
|
216
247
|
</property>
|
not1mm/data/configuration.ui
CHANGED
@@ -377,6 +377,43 @@
|
|
377
377
|
<string>CAT</string>
|
378
378
|
</attribute>
|
379
379
|
<layout class="QGridLayout" name="gridLayout_4">
|
380
|
+
<item row="1" column="3">
|
381
|
+
<widget class="QLineEdit" name="rigcontrolport_field">
|
382
|
+
<property name="font">
|
383
|
+
<font>
|
384
|
+
<family>JetBrains Mono ExtraLight</family>
|
385
|
+
<pointsize>12</pointsize>
|
386
|
+
<bold>false</bold>
|
387
|
+
<strikeout>false</strikeout>
|
388
|
+
</font>
|
389
|
+
</property>
|
390
|
+
<property name="accessibleName">
|
391
|
+
<string>port number</string>
|
392
|
+
</property>
|
393
|
+
<property name="accessibleDescription">
|
394
|
+
<string>port number of rig control d or f l rig.</string>
|
395
|
+
</property>
|
396
|
+
<property name="inputMethodHints">
|
397
|
+
<set>Qt::InputMethodHint::ImhDigitsOnly</set>
|
398
|
+
</property>
|
399
|
+
<property name="text">
|
400
|
+
<string>4532</string>
|
401
|
+
</property>
|
402
|
+
</widget>
|
403
|
+
</item>
|
404
|
+
<item row="5" column="0" colspan="4">
|
405
|
+
<spacer name="verticalSpacer_3">
|
406
|
+
<property name="orientation">
|
407
|
+
<enum>Qt::Vertical</enum>
|
408
|
+
</property>
|
409
|
+
<property name="sizeHint" stdset="0">
|
410
|
+
<size>
|
411
|
+
<width>20</width>
|
412
|
+
<height>40</height>
|
413
|
+
</size>
|
414
|
+
</property>
|
415
|
+
</spacer>
|
416
|
+
</item>
|
380
417
|
<item row="1" column="1">
|
381
418
|
<widget class="QLineEdit" name="rigcontrolip_field">
|
382
419
|
<property name="font">
|
@@ -398,7 +435,38 @@
|
|
398
435
|
</property>
|
399
436
|
</widget>
|
400
437
|
</item>
|
401
|
-
<item row="3" column="
|
438
|
+
<item row="3" column="1" colspan="3">
|
439
|
+
<spacer name="verticalSpacer_2">
|
440
|
+
<property name="orientation">
|
441
|
+
<enum>Qt::Vertical</enum>
|
442
|
+
</property>
|
443
|
+
<property name="sizeHint" stdset="0">
|
444
|
+
<size>
|
445
|
+
<width>20</width>
|
446
|
+
<height>40</height>
|
447
|
+
</size>
|
448
|
+
</property>
|
449
|
+
</spacer>
|
450
|
+
</item>
|
451
|
+
<item row="1" column="0">
|
452
|
+
<widget class="QLabel" name="label_6">
|
453
|
+
<property name="font">
|
454
|
+
<font>
|
455
|
+
<family>JetBrains Mono ExtraLight</family>
|
456
|
+
<pointsize>12</pointsize>
|
457
|
+
<bold>false</bold>
|
458
|
+
<strikeout>false</strikeout>
|
459
|
+
</font>
|
460
|
+
</property>
|
461
|
+
<property name="text">
|
462
|
+
<string>Rig Control IP:</string>
|
463
|
+
</property>
|
464
|
+
<property name="alignment">
|
465
|
+
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
466
|
+
</property>
|
467
|
+
</widget>
|
468
|
+
</item>
|
469
|
+
<item row="4" column="0" colspan="4">
|
402
470
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
403
471
|
<property name="sizeConstraint">
|
404
472
|
<enum>QLayout::SizeConstraint::SetDefaultConstraint</enum>
|
@@ -513,50 +581,6 @@
|
|
513
581
|
</item>
|
514
582
|
</layout>
|
515
583
|
</item>
|
516
|
-
<item row="2" column="1" colspan="3">
|
517
|
-
<spacer name="verticalSpacer_2">
|
518
|
-
<property name="orientation">
|
519
|
-
<enum>Qt::Vertical</enum>
|
520
|
-
</property>
|
521
|
-
<property name="sizeHint" stdset="0">
|
522
|
-
<size>
|
523
|
-
<width>20</width>
|
524
|
-
<height>40</height>
|
525
|
-
</size>
|
526
|
-
</property>
|
527
|
-
</spacer>
|
528
|
-
</item>
|
529
|
-
<item row="1" column="0">
|
530
|
-
<widget class="QLabel" name="label_6">
|
531
|
-
<property name="font">
|
532
|
-
<font>
|
533
|
-
<family>JetBrains Mono ExtraLight</family>
|
534
|
-
<pointsize>12</pointsize>
|
535
|
-
<bold>false</bold>
|
536
|
-
<strikeout>false</strikeout>
|
537
|
-
</font>
|
538
|
-
</property>
|
539
|
-
<property name="text">
|
540
|
-
<string>Rig Control IP:</string>
|
541
|
-
</property>
|
542
|
-
<property name="alignment">
|
543
|
-
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
544
|
-
</property>
|
545
|
-
</widget>
|
546
|
-
</item>
|
547
|
-
<item row="0" column="2">
|
548
|
-
<spacer name="verticalSpacer">
|
549
|
-
<property name="orientation">
|
550
|
-
<enum>Qt::Vertical</enum>
|
551
|
-
</property>
|
552
|
-
<property name="sizeHint" stdset="0">
|
553
|
-
<size>
|
554
|
-
<width>20</width>
|
555
|
-
<height>40</height>
|
556
|
-
</size>
|
557
|
-
</property>
|
558
|
-
</spacer>
|
559
|
-
</item>
|
560
584
|
<item row="1" column="2">
|
561
585
|
<widget class="QLabel" name="label_7">
|
562
586
|
<property name="font">
|
@@ -575,8 +599,8 @@
|
|
575
599
|
</property>
|
576
600
|
</widget>
|
577
601
|
</item>
|
578
|
-
<item row="
|
579
|
-
<spacer name="
|
602
|
+
<item row="0" column="2">
|
603
|
+
<spacer name="verticalSpacer">
|
580
604
|
<property name="orientation">
|
581
605
|
<enum>Qt::Vertical</enum>
|
582
606
|
</property>
|
@@ -588,30 +612,16 @@
|
|
588
612
|
</property>
|
589
613
|
</spacer>
|
590
614
|
</item>
|
591
|
-
<item row="
|
592
|
-
<widget class="
|
593
|
-
<property name="font">
|
594
|
-
<font>
|
595
|
-
<family>JetBrains Mono ExtraLight</family>
|
596
|
-
<pointsize>12</pointsize>
|
597
|
-
<bold>false</bold>
|
598
|
-
<strikeout>false</strikeout>
|
599
|
-
</font>
|
600
|
-
</property>
|
601
|
-
<property name="accessibleName">
|
602
|
-
<string>port number</string>
|
603
|
-
</property>
|
604
|
-
<property name="accessibleDescription">
|
605
|
-
<string>port number of rig control d or f l rig.</string>
|
606
|
-
</property>
|
607
|
-
<property name="inputMethodHints">
|
608
|
-
<set>Qt::InputMethodHint::ImhDigitsOnly</set>
|
609
|
-
</property>
|
615
|
+
<item row="2" column="0">
|
616
|
+
<widget class="QLabel" name="label_27">
|
610
617
|
<property name="text">
|
611
|
-
<string>
|
618
|
+
<string>CAT Poll Interval (ms):</string>
|
612
619
|
</property>
|
613
620
|
</widget>
|
614
621
|
</item>
|
622
|
+
<item row="2" column="1">
|
623
|
+
<widget class="QLineEdit" name="catpoll_field"/>
|
624
|
+
</item>
|
615
625
|
</layout>
|
616
626
|
</widget>
|
617
627
|
<widget class="QWidget" name="cw_tab">
|
not1mm/data/new_contest.ui
CHANGED
not1mm/lib/cat_interface.py
CHANGED
@@ -284,8 +284,11 @@ class CAT:
|
|
284
284
|
if self.rigctrlsocket:
|
285
285
|
try:
|
286
286
|
self.online = True
|
287
|
-
self.rigctrlsocket.send(b"f\n")
|
288
|
-
|
287
|
+
self.rigctrlsocket.send(b"|f\n")
|
288
|
+
report = self.__get_serial_string().strip()
|
289
|
+
if "get_freq:|" in report and "RPRT 0" in report:
|
290
|
+
seg_rpt = report.split("|")
|
291
|
+
return seg_rpt[1].split(" ")[1]
|
289
292
|
except socket.error as exception:
|
290
293
|
self.online = False
|
291
294
|
logger.debug(f"{exception=}")
|
@@ -334,11 +337,12 @@ class CAT:
|
|
334
337
|
if self.rigctrlsocket:
|
335
338
|
try:
|
336
339
|
self.online = True
|
337
|
-
self.rigctrlsocket.send(b"m\n")
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
340
|
+
self.rigctrlsocket.send(b"|m\n")
|
341
|
+
# get_mode:|Mode: CW|Passband: 500|RPRT 0
|
342
|
+
report = self.__get_serial_string().strip()
|
343
|
+
if "getmode:|" in report and "RPRT 0" in report:
|
344
|
+
seg_rpt = report.split("|")
|
345
|
+
return seg_rpt[1].split(" ")[1]
|
342
346
|
except IndexError as exception:
|
343
347
|
logger.debug("%s", f"{exception}")
|
344
348
|
except socket.error as exception:
|
@@ -382,11 +386,13 @@ class CAT:
|
|
382
386
|
if self.rigctrlsocket:
|
383
387
|
try:
|
384
388
|
self.online = True
|
385
|
-
self.rigctrlsocket.send(b"m\n")
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
389
|
+
self.rigctrlsocket.send(b"|m\n")
|
390
|
+
# get_mode:|Mode: CW|Passband: 500|RPRT 0
|
391
|
+
report = self.__get_serial_string().strip()
|
392
|
+
if "getmode:|" in report and "RPRT 0" in report:
|
393
|
+
seg_rpt = report.split("|")
|
394
|
+
return seg_rpt[2].split(" ")[1]
|
395
|
+
|
390
396
|
except IndexError as exception:
|
391
397
|
logger.debug("%s", f"{exception}")
|
392
398
|
except socket.error as exception:
|
@@ -425,8 +431,12 @@ class CAT:
|
|
425
431
|
if self.rigctrlsocket:
|
426
432
|
try:
|
427
433
|
self.online = True
|
428
|
-
self.rigctrlsocket.send(b"l RFPOWER\n")
|
429
|
-
|
434
|
+
self.rigctrlsocket.send(b"|l RFPOWER\n")
|
435
|
+
# get_level: RFPOWER|0.000000|RPRT 0
|
436
|
+
report = self.__get_serial_string().strip()
|
437
|
+
if "get_level: RFPOWER|" in report and "RPRT 0" in report:
|
438
|
+
seg_rpt = report.split("|")
|
439
|
+
return int(float(seg_rpt[1]) * 100)
|
430
440
|
except socket.error as exception:
|
431
441
|
self.online = False
|
432
442
|
logger.debug("getpower_rigctld: %s", f"{exception}")
|
not1mm/lib/database.py
CHANGED
@@ -695,6 +695,23 @@ class DataBase:
|
|
695
695
|
logger.debug("%s", exception)
|
696
696
|
return {}
|
697
697
|
|
698
|
+
def fetch_exchange1_unique_count(self) -> dict:
|
699
|
+
"""
|
700
|
+
Fetch count of unique countries
|
701
|
+
{exch1_count: count}
|
702
|
+
"""
|
703
|
+
try:
|
704
|
+
with sqlite3.connect(self.database) as conn:
|
705
|
+
conn.row_factory = self.row_factory
|
706
|
+
cursor = conn.cursor()
|
707
|
+
cursor.execute(
|
708
|
+
f"select count(DISTINCT(Exchange1)) as exch1_count from dxlog where Exchange1 != '' and ContestNR = {self.current_contest};"
|
709
|
+
)
|
710
|
+
return cursor.fetchone()
|
711
|
+
except sqlite3.OperationalError as exception:
|
712
|
+
logger.debug("%s", exception)
|
713
|
+
return {}
|
714
|
+
|
698
715
|
def fetch_arrldx_country_band_count(self) -> dict:
|
699
716
|
"""
|
700
717
|
returns dict with count of unique NR.
|
not1mm/lib/settings.py
CHANGED
@@ -99,6 +99,7 @@ class Settings(QtWidgets.QDialog):
|
|
99
99
|
)
|
100
100
|
self.rigcontrolip_field.setText(str(self.preference.get("CAT_ip", "")))
|
101
101
|
self.rigcontrolport_field.setText(str(self.preference.get("CAT_port", "")))
|
102
|
+
self.catpoll_field.setText(str(self.preference.get("CAT_polldelta", 500)))
|
102
103
|
self.userigctld_radioButton.setChecked(bool(self.preference.get("userigctld")))
|
103
104
|
self.useflrig_radioButton.setChecked(bool(self.preference.get("useflrig")))
|
104
105
|
|
@@ -215,6 +216,10 @@ class Settings(QtWidgets.QDialog):
|
|
215
216
|
self.preference["CAT_port"] = int(self.rigcontrolport_field.text())
|
216
217
|
except ValueError:
|
217
218
|
...
|
219
|
+
try:
|
220
|
+
self.preference["CAT_polldelta"] = int(self.catpoll_field.text())
|
221
|
+
except ValueError:
|
222
|
+
...
|
218
223
|
self.preference["userigctld"] = self.userigctld_radioButton.isChecked()
|
219
224
|
self.preference["useflrig"] = self.useflrig_radioButton.isChecked()
|
220
225
|
self.preference["cwip"] = self.cwip_field.text()
|
not1mm/lib/version.py
CHANGED
not1mm/plugins/10_10_fall_cw.py
CHANGED
@@ -359,3 +359,94 @@ def cabrillo(self, file_encoding):
|
|
359
359
|
|
360
360
|
def recalculate_mults(self):
|
361
361
|
"""Recalculates multipliers after change in logged qso."""
|
362
|
+
|
363
|
+
|
364
|
+
def process_esm(self, new_focused_widget=None, with_enter=False):
|
365
|
+
"""ESM State Machine"""
|
366
|
+
|
367
|
+
# self.pref["run_state"]
|
368
|
+
|
369
|
+
# -----===== Assigned F-Keys =====-----
|
370
|
+
# self.esm_dict["CQ"]
|
371
|
+
# self.esm_dict["EXCH"]
|
372
|
+
# self.esm_dict["QRZ"]
|
373
|
+
# self.esm_dict["AGN"]
|
374
|
+
# self.esm_dict["HISCALL"]
|
375
|
+
# self.esm_dict["MYCALL"]
|
376
|
+
# self.esm_dict["QSOB4"]
|
377
|
+
|
378
|
+
# ----==== text fields ====----
|
379
|
+
# self.callsign
|
380
|
+
# self.sent
|
381
|
+
# self.receive
|
382
|
+
# self.other_1
|
383
|
+
# self.other_2
|
384
|
+
|
385
|
+
if new_focused_widget is not None:
|
386
|
+
self.current_widget = self.inputs_dict.get(new_focused_widget)
|
387
|
+
|
388
|
+
# print(f"checking esm {self.current_widget=} {with_enter=} {self.pref.get("run_state")=}")
|
389
|
+
|
390
|
+
for a_button in [
|
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
|
+
if a_button is not None:
|
400
|
+
self.restore_button_color(a_button)
|
401
|
+
|
402
|
+
buttons_to_send = []
|
403
|
+
|
404
|
+
if self.pref.get("run_state"):
|
405
|
+
if self.current_widget == "callsign":
|
406
|
+
if len(self.callsign.text()) < 3:
|
407
|
+
self.make_button_green(self.esm_dict["CQ"])
|
408
|
+
buttons_to_send.append(self.esm_dict["CQ"])
|
409
|
+
elif len(self.callsign.text()) > 2:
|
410
|
+
self.make_button_green(self.esm_dict["HISCALL"])
|
411
|
+
self.make_button_green(self.esm_dict["EXCH"])
|
412
|
+
buttons_to_send.append(self.esm_dict["HISCALL"])
|
413
|
+
buttons_to_send.append(self.esm_dict["EXCH"])
|
414
|
+
|
415
|
+
elif self.current_widget in ["other_2"]:
|
416
|
+
if self.other_2.text() == "":
|
417
|
+
self.make_button_green(self.esm_dict["AGN"])
|
418
|
+
buttons_to_send.append(self.esm_dict["AGN"])
|
419
|
+
else:
|
420
|
+
self.make_button_green(self.esm_dict["QRZ"])
|
421
|
+
buttons_to_send.append(self.esm_dict["QRZ"])
|
422
|
+
buttons_to_send.append("LOGIT")
|
423
|
+
|
424
|
+
if with_enter is True and bool(len(buttons_to_send)):
|
425
|
+
for button in buttons_to_send:
|
426
|
+
if button:
|
427
|
+
if button == "LOGIT":
|
428
|
+
self.save_contact()
|
429
|
+
continue
|
430
|
+
self.process_function_key(button)
|
431
|
+
else:
|
432
|
+
if self.current_widget == "callsign":
|
433
|
+
if len(self.callsign.text()) > 2:
|
434
|
+
self.make_button_green(self.esm_dict["MYCALL"])
|
435
|
+
buttons_to_send.append(self.esm_dict["MYCALL"])
|
436
|
+
|
437
|
+
elif self.current_widget in ["other_2"]:
|
438
|
+
if self.other_2.text() == "":
|
439
|
+
self.make_button_green(self.esm_dict["AGN"])
|
440
|
+
buttons_to_send.append(self.esm_dict["AGN"])
|
441
|
+
else:
|
442
|
+
self.make_button_green(self.esm_dict["EXCH"])
|
443
|
+
buttons_to_send.append(self.esm_dict["EXCH"])
|
444
|
+
buttons_to_send.append("LOGIT")
|
445
|
+
|
446
|
+
if with_enter is True and bool(len(buttons_to_send)):
|
447
|
+
for button in buttons_to_send:
|
448
|
+
if button:
|
449
|
+
if button == "LOGIT":
|
450
|
+
self.save_contact()
|
451
|
+
continue
|
452
|
+
self.process_function_key(button)
|