not1mm 25.5.31__py3-none-any.whl → 25.6.2__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 +2 -2
- not1mm/data/cty.json +1 -1
- not1mm/lib/plugin_common.py +21 -0
- not1mm/lib/version.py +1 -1
- not1mm/logwindow.py +4 -0
- not1mm/plugins/es_field_day.py +7 -20
- not1mm/statistics.py +1 -0
- {not1mm-25.5.31.dist-info → not1mm-25.6.2.dist-info}/METADATA +5 -13
- {not1mm-25.5.31.dist-info → not1mm-25.6.2.dist-info}/RECORD +13 -13
- {not1mm-25.5.31.dist-info → not1mm-25.6.2.dist-info}/WHEEL +0 -0
- {not1mm-25.5.31.dist-info → not1mm-25.6.2.dist-info}/entry_points.txt +0 -0
- {not1mm-25.5.31.dist-info → not1mm-25.6.2.dist-info}/licenses/LICENSE +0 -0
- {not1mm-25.5.31.dist-info → not1mm-25.6.2.dist-info}/top_level.txt +0 -0
not1mm/lib/plugin_common.py
CHANGED
@@ -336,3 +336,24 @@ def gen_adif(self, cabrillo_name: str, contest_id=""):
|
|
336
336
|
self.show_message_box(f"ADIF saved to: {filename}")
|
337
337
|
except IOError as error:
|
338
338
|
self.show_message_box(f"Error saving ADIF file: {error}")
|
339
|
+
|
340
|
+
|
341
|
+
def get_station_arrlsection_code(self):
|
342
|
+
# get the station ARRL Section in station settings
|
343
|
+
query = f"SELECT ARRLSection as arrlsection from Station;"
|
344
|
+
# run query
|
345
|
+
result = self.database.exec_sql(query)
|
346
|
+
if result:
|
347
|
+
arrlsection = result.get("arrlsection", "")
|
348
|
+
return arrlsection
|
349
|
+
return ""
|
350
|
+
|
351
|
+
def get_station_state_code(self):
|
352
|
+
# get the station state code in station settings
|
353
|
+
query = f"SELECT state as state from Station;"
|
354
|
+
# run query
|
355
|
+
result = self.database.exec_sql(query)
|
356
|
+
if result:
|
357
|
+
state = result.get("state", "")
|
358
|
+
return state
|
359
|
+
return ""
|
not1mm/lib/version.py
CHANGED
not1mm/logwindow.py
CHANGED
@@ -112,6 +112,8 @@ class LogWindow(QDockWidget):
|
|
112
112
|
self.setWindowTitle(
|
113
113
|
f"QSO History - {self.pref.get('current_database', 'ham.db')}"
|
114
114
|
)
|
115
|
+
self.generalLog.setAlternatingRowColors(True)
|
116
|
+
self.focusedLog.setAlternatingRowColors(True)
|
115
117
|
self.generalLog.setColumnCount(len(self.columns))
|
116
118
|
self.focusedLog.setColumnCount(len(self.columns))
|
117
119
|
|
@@ -1064,6 +1066,8 @@ class LogWindow(QDockWidget):
|
|
1064
1066
|
self.get_column("UUID"),
|
1065
1067
|
QtWidgets.QTableWidgetItem(str(log_item.get("ID", ""))),
|
1066
1068
|
)
|
1069
|
+
self.focusedLog.resizeColumnsToContents()
|
1070
|
+
self.focusedLog.resizeRowsToContents()
|
1067
1071
|
self.focusedLog.blockSignals(False)
|
1068
1072
|
|
1069
1073
|
def show_message_box(self, message: str) -> None:
|
not1mm/plugins/es_field_day.py
CHANGED
@@ -6,14 +6,11 @@ from datetime import datetime
|
|
6
6
|
from datetime import timedelta
|
7
7
|
from datetime import timezone
|
8
8
|
|
9
|
-
|
10
9
|
from pathlib import Path
|
11
10
|
|
12
11
|
from PyQt6 import QtWidgets
|
13
12
|
|
14
|
-
from not1mm.lib.plugin_common import gen_adif, get_points
|
15
|
-
|
16
|
-
# import not1mm.lib.edit_station import EditStation
|
13
|
+
from not1mm.lib.plugin_common import gen_adif, get_points, get_station_state_code, get_station_arrlsection_code
|
17
14
|
|
18
15
|
from not1mm.lib.ham_utility import calculate_wpx_prefix
|
19
16
|
from not1mm.lib.version import __version__
|
@@ -22,12 +19,6 @@ logger = logging.getLogger(__name__)
|
|
22
19
|
|
23
20
|
EXCHANGE_HINT = "#"
|
24
21
|
|
25
|
-
sent_region_code = "TL"
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
# station_region_code = station.get("State", "")
|
30
|
-
|
31
22
|
name = "ES FIELD DAY"
|
32
23
|
cabrillo_name = "ES-FIELD-DAY"
|
33
24
|
mode = "BOTH" # CW SSB BOTH RTTY
|
@@ -49,7 +40,6 @@ advance_on_space = [True, True, True, True, True]
|
|
49
40
|
# 5 Contest specific dupe check.
|
50
41
|
dupe_type = 5
|
51
42
|
|
52
|
-
|
53
43
|
estonian_regions = [
|
54
44
|
"HM",
|
55
45
|
"HR",
|
@@ -69,7 +59,6 @@ estonian_regions = [
|
|
69
59
|
"VP"
|
70
60
|
]
|
71
61
|
|
72
|
-
|
73
62
|
def specific_contest_check_dupe(self, call):
|
74
63
|
""""""
|
75
64
|
# get mode from radio state
|
@@ -150,7 +139,6 @@ def init_contest(self):
|
|
150
139
|
self.next_field = self.other_2
|
151
140
|
|
152
141
|
|
153
|
-
|
154
142
|
def interface(self):
|
155
143
|
"""Setup user interface"""
|
156
144
|
"""Setup user interface"""
|
@@ -207,12 +195,13 @@ def predupe(self):
|
|
207
195
|
|
208
196
|
def prefill(self):
|
209
197
|
"""Fill SentNR"""
|
198
|
+
|
210
199
|
sent_sxchange_setting = self.contest_settings.get("SentExchange", "")
|
211
200
|
if sent_sxchange_setting.strip() == "#":
|
212
201
|
result = self.database.get_serial()
|
213
202
|
serial_nr = str(result.get("serial_nr", "1")).zfill(3)
|
214
|
-
|
215
|
-
serial_nr = serial_nr + " " +
|
203
|
+
# get station region code from setup ARRLSection field
|
204
|
+
serial_nr = serial_nr + " " + get_station_state_code(self)
|
216
205
|
|
217
206
|
if serial_nr == "None":
|
218
207
|
serial_nr = "001"
|
@@ -228,14 +217,12 @@ def points(self):
|
|
228
217
|
return 0
|
229
218
|
|
230
219
|
# get received number and region code
|
231
|
-
# result = self.contact.self.contact.get("NR", "")
|
232
|
-
|
233
|
-
# only_letters = ''.join(char for char in result if char.isalpha())
|
234
220
|
|
235
221
|
check_call = self.contact.get("Call", "")
|
236
|
-
|
222
|
+
# all stations with /p give 3 points
|
237
223
|
if "/p" in check_call.lower():
|
238
224
|
return 3
|
225
|
+
# all stations with /qrp give 5 points
|
239
226
|
elif "/qrp" in check_call.lower():
|
240
227
|
return 5
|
241
228
|
else:
|
@@ -254,7 +241,7 @@ def show_mults(self, rtc=None):
|
|
254
241
|
query = f"SELECT count(distinct(SUBSTR(NR, -2)) || ':' || Band || ':' || Mode) as mults from DXLOG where ContestNR = {self.pref.get('contest', '1')} AND CountryPrefix = 'ES' AND NR GLOB '*[A-Z]*' AND substr(NR,-2) IN ({placeholders});"
|
255
242
|
# apply params
|
256
243
|
params = estonian_regions
|
257
|
-
|
244
|
+
# run query
|
258
245
|
result = self.database.exec_sql_params_mult(query, params)
|
259
246
|
if result:
|
260
247
|
mult_count = result.get("mults", 0)
|
not1mm/statistics.py
CHANGED
@@ -98,6 +98,7 @@ class StatsWindow(QDockWidget):
|
|
98
98
|
if self.active is False:
|
99
99
|
return
|
100
100
|
self.tableWidget.clear()
|
101
|
+
self.tableWidget.setAlternatingRowColors(True)
|
101
102
|
self.tableWidget.setFocusPolicy(Qt.FocusPolicy.NoFocus)
|
102
103
|
self.tableWidget.setColumnCount(7)
|
103
104
|
self.tableWidget.setHorizontalHeaderLabels(
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: not1mm
|
3
|
-
Version: 25.
|
3
|
+
Version: 25.6.2
|
4
4
|
Summary: NOT1MM Logger
|
5
5
|
Author-email: Michael Bridak <michael.bridak@gmail.com>
|
6
6
|
License: GPL-3.0-or-later
|
@@ -61,7 +61,7 @@ Dynamic: license-file
|
|
61
61
|
- [Recent Changes](#recent-changes)
|
62
62
|
- [Flatpak](#flatpak)
|
63
63
|
- [Installation](#installation)
|
64
|
-
|
64
|
+
- [Update your CTY and SCP files](#update-your-cty-and-scp-files)
|
65
65
|
- [Various data file locations](#various-data-file-locations)
|
66
66
|
- [Data](#data)
|
67
67
|
- [Config](#config)
|
@@ -244,16 +244,8 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
|
|
244
244
|
|
245
245
|
## Recent Changes
|
246
246
|
|
247
|
-
- [25-
|
248
|
-
- [25-
|
249
|
-
- [25-5-25] Added {PREVNR} macro to resend last logged serial number.
|
250
|
-
- Add Bandmap mode indicators for CW, FT*, SSB, Beacons.
|
251
|
-
- Made tuning with the VFO knob smoother.
|
252
|
-
- Add MacOS support for VFO knob.
|
253
|
-
- Forced style to Fusion on MacOS, 'cause it looked like ass.
|
254
|
-
- [25-5-22] Trap possible ValueError exception in settings.py
|
255
|
-
- [25-5-21] Fix crash from unsafe dict key access when processing F1-F12.
|
256
|
-
- [25-5-6] Merged PR from @JG3LLB, Koji-Kawano, Adding code to stop sending morse if using rigctld to send, and @alduhoo adding more control to CW serial number padding.
|
247
|
+
- [25-6-2] Crash Fix. Change initial self.pref from None to a dict.
|
248
|
+
- [25-6-1] Merged changes from @term73, updating ES Field Day.
|
257
249
|
|
258
250
|
See [CHANGELOG.md](CHANGELOG.md) for prior changes.
|
259
251
|
|
@@ -269,7 +261,7 @@ clue me into the black magic needed to get it to work.
|
|
269
261
|
The README is getting a bit long. So I'll start breaking out the following subsections into
|
270
262
|
their own markdown files. The first will be the [installation](INSTALL.md) section.
|
271
263
|
|
272
|
-
|
264
|
+
## Update your CTY and SCP files
|
273
265
|
|
274
266
|
After all the configuration stuff below and before operating in a contest, you
|
275
267
|
might want to update the CTY and SCP files. You can do this by choosing FILE->Update CTY and FILE->Update MASTER.SCP
|
@@ -1,14 +1,14 @@
|
|
1
1
|
not1mm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
-
not1mm/__main__.py,sha256=
|
2
|
+
not1mm/__main__.py,sha256=wFBkjElOJRbOfkfc9oSq15ZYO9_SckfnEgWx7mjEtuM,170823
|
3
3
|
not1mm/bandmap.py,sha256=0JmZ32UvkaPjXs2xTgowX1GLvZo5zHU_Zo9y_GL-On4,31139
|
4
4
|
not1mm/checkwindow.py,sha256=zEHlw40j6Wr3rvKbCQf2lcezCoiZqaBqEvBjQU5aKW0,7630
|
5
5
|
not1mm/fsutils.py,sha256=ukHKxKTeNKxKwqRaJjtzRShL4X5Xl0jRBbADyy3Ifp8,1701
|
6
|
-
not1mm/logwindow.py,sha256=
|
6
|
+
not1mm/logwindow.py,sha256=O2dMaT_BYWsXA_dxsEHN92JwN-qVGy9nmH0MCMaG9gY,42830
|
7
7
|
not1mm/lookupservice.py,sha256=GkY_qHZfrW6XHf8upIoaG4hCFqm0fg6Ganu9ConGrIc,2628
|
8
8
|
not1mm/radio.py,sha256=4Lysf9BY3vdtYCHwKfzO5WN7IGyh4_lKSVuQ6F4Z08g,5536
|
9
9
|
not1mm/ratewindow.py,sha256=iBjqdOetIEX0wSwdGM89Ibt4gVlFdE-K8HQPnkVPVOg,6965
|
10
10
|
not1mm/rtc_service.py,sha256=axAwnCBuTr-QL0YwXtWvg9tjwhcFsiiEZFgFjOofX6k,2816
|
11
|
-
not1mm/statistics.py,sha256=
|
11
|
+
not1mm/statistics.py,sha256=TrLm50VcY_pYv3K-THSOLgAfTKolGgYnRViitJi9jh0,7767
|
12
12
|
not1mm/test.py,sha256=BNhsSvLnNG5hN4pywIWnj4pUBI-wQYY4Ejfbl97knmw,1198
|
13
13
|
not1mm/vfo.py,sha256=SsqinokSd8BqVp6l-_DGRKcNN9Uc9JiFYXDl9Ycep1o,10111
|
14
14
|
not1mm/voice_keying.py,sha256=HZImqC5NgnyW2nknNYQ3b7I8-6S_hxpq5G4RcIRXn_k,3005
|
@@ -23,7 +23,7 @@ not1mm/data/cloud_green.png,sha256=MdXhls1n4XR7oM0Y84pqlsuay6byduAJF7NwgZ-g0DU,6
|
|
23
23
|
not1mm/data/cloud_red.png,sha256=vSIQ1X7_z484pv3xXjTRtdtfIontsUq11suTALSsaQA,482
|
24
24
|
not1mm/data/configuration.ui,sha256=Qze_mbSw3vS6Iwof5TyEz-3KycG1lconANEMXhPrFQQ,76372
|
25
25
|
not1mm/data/contests.sql,sha256=4hmJCDvrbxnA_Y5S4T5o52TZieeFk6QUwFerwlFePNA,89307
|
26
|
-
not1mm/data/cty.json,sha256=
|
26
|
+
not1mm/data/cty.json,sha256=3Nk98AoENvBB4RwJCTheDVCjJ1AvX4ik5kg2R0iU1X0,4948509
|
27
27
|
not1mm/data/cwmacros.txt,sha256=NztufsX6R52gAO7VyJ2AHr7wOh41pJTwHKh5Lcs32ds,468
|
28
28
|
not1mm/data/donors.html,sha256=alw5wpOdAX4hcJLx7NyhNRdSdmWOiTlD-CQXVWcULXU,333
|
29
29
|
not1mm/data/editcontact.ui,sha256=ax-pm4TeECpHl3LSb5z4L403WjPWXZ9KV2it_6gIjqk,27404
|
@@ -116,11 +116,11 @@ not1mm/lib/lookup.py,sha256=KECMDi9tflRDzgTLeDfDl7HGWWRHvW3HCjNHyyjoWaY,10835
|
|
116
116
|
not1mm/lib/multicast.py,sha256=KJcruI-bOuHfHXPjl3SGQhL6I9sKrygy-sdFSvxffUM,3255
|
117
117
|
not1mm/lib/n1mm.py,sha256=H54mpgJF0GAmKavM-nb5OAq2SJFWYkux4eMWWiSRxJc,6288
|
118
118
|
not1mm/lib/new_contest.py,sha256=IznTDMq7yXHB6zBoGUEC_WDYPCPpsSZW4wwMJi16zK0,816
|
119
|
-
not1mm/lib/plugin_common.py,sha256=
|
119
|
+
not1mm/lib/plugin_common.py,sha256=nqiUq11T9Wz8RDrRen4Zvp-KXVWUYcIp5JPZwqmu2Oo,13913
|
120
120
|
not1mm/lib/select_contest.py,sha256=WsptLuwkouIHeocJL3oZ6-eUfEnhpwdc-x7eMZ_TIVM,359
|
121
121
|
not1mm/lib/settings.py,sha256=5xnsagH48qGeCDhfxPWW9yaXtv8wT13yoIVvYt8h_Qs,16023
|
122
122
|
not1mm/lib/super_check_partial.py,sha256=Hp89cPHQOwVuGjAjdMaJPdHEyrJiN3xNu841MdiZAjo,2948
|
123
|
-
not1mm/lib/version.py,sha256=
|
123
|
+
not1mm/lib/version.py,sha256=dBiyUcajZgmjLwNr2OG7KC2bJLiBds26sZX-sQtqbIM,47
|
124
124
|
not1mm/lib/versiontest.py,sha256=8vDNptuBBunn-1IGkjNaquehqBYUJyjrPSF8Igmd4_Y,1286
|
125
125
|
not1mm/plugins/10_10_fall_cw.py,sha256=oJh3JKqjOpnWElSlZpiQ631UnaOd8qra5s9bl_QoInk,14783
|
126
126
|
not1mm/plugins/10_10_spring_cw.py,sha256=p7dSDtbFK0e6Xouw2V6swYn3VFVgHKyx4IfRWyBjMZY,14786
|
@@ -155,7 +155,7 @@ not1mm/plugins/darc_xmas.py,sha256=p5UNYLdtylsC_sSlxT8NvXXL1oSW0KyUhIN-rJonHgI,1
|
|
155
155
|
not1mm/plugins/ea_majistad_cw.py,sha256=O-GLcW0tMAesw7Ow01M3i6MirbGFXwTcwrY7xJdCYDA,23382
|
156
156
|
not1mm/plugins/ea_majistad_ssb.py,sha256=kZoFknVkslHAEjvleV8shsJEwk12Q3aU6qcmBXzVojo,22976
|
157
157
|
not1mm/plugins/ea_rtty.py,sha256=r6c85eyGHbx_ZLBIqKI96vIMqCGH0KCZq2pd-GQt_Dg,23259
|
158
|
-
not1mm/plugins/es_field_day.py,sha256=
|
158
|
+
not1mm/plugins/es_field_day.py,sha256=neBPerH9TSnVhBFB0bCXVfjBBAYwlDZgcZjqFbmGvNE,19166
|
159
159
|
not1mm/plugins/es_open.py,sha256=xFp7fdMMdEZyey99Qws5gd7S5HRiF_gAk7qz4AyWneE,18719
|
160
160
|
not1mm/plugins/general_logging.py,sha256=eQuna-LnrWpf93LmHTTo6956GWoGocVfeYnzY5cyTmw,9600
|
161
161
|
not1mm/plugins/helvetia.py,sha256=nvgFjCq-_5XF0cLiCVFFwAS8NtIIFPDptr8eLsoprGE,20082
|
@@ -184,9 +184,9 @@ not1mm/plugins/ukeidx.py,sha256=ZsIFXgOSwjuKNmN4W_C0TAgGqgnabJGNLMHwGkl3_bk,1910
|
|
184
184
|
not1mm/plugins/vhf_sprint.py,sha256=a9QFTpv8XUbZ_GLjdVCh7svykFa-gXOWwKFZ6MD3uQM,19289
|
185
185
|
not1mm/plugins/weekly_rtty.py,sha256=C8Xs3Q5UgSYx-mFFar8BVARWtmqlyrbeC98Ubzb4UN8,20128
|
186
186
|
not1mm/plugins/winter_field_day.py,sha256=hmAMgkdqIXtnCNyUp8J9Bb8liN8wj10wps6ROuG-Bok,15284
|
187
|
-
not1mm-25.
|
188
|
-
not1mm-25.
|
189
|
-
not1mm-25.
|
190
|
-
not1mm-25.
|
191
|
-
not1mm-25.
|
192
|
-
not1mm-25.
|
187
|
+
not1mm-25.6.2.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
188
|
+
not1mm-25.6.2.dist-info/METADATA,sha256=yB2SIfHLStaoq9r49o9HEgqZkTf8chEOl-bNFxbctpY,34118
|
189
|
+
not1mm-25.6.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
190
|
+
not1mm-25.6.2.dist-info/entry_points.txt,sha256=pMcZk_0dxFgLkcUkF0Q874ojpwOmF3OL6EKw9LgvocM,47
|
191
|
+
not1mm-25.6.2.dist-info/top_level.txt,sha256=0YmTxEcDzQlzXub-lXASvoLpg_mt1c2thb5cVkDf5J4,7
|
192
|
+
not1mm-25.6.2.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|