not1mm 25.5.31__py3-none-any.whl → 25.6.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.
@@ -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
@@ -1,3 +1,3 @@
1
1
  """It's the version"""
2
2
 
3
- __version__ = "25.5.31"
3
+ __version__ = "25.6.1"
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:
@@ -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 + " " + sent_region_code
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.5.31
3
+ Version: 25.6.1
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
- - [Update your CTY and SCP files](#update-your-cty-and-scp-files)
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,7 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
244
244
 
245
245
  ## Recent Changes
246
246
 
247
- - [25-5-31] Merged PR from @term73, Adding ES Field Day and changes to ES open.
248
- - [25-5-26] Add ARI DX contest, Fix Canada Day mults.
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-1] Merged changes from @term73, updating ES Field Day.
257
248
 
258
249
  See [CHANGELOG.md](CHANGELOG.md) for prior changes.
259
250
 
@@ -269,7 +260,7 @@ clue me into the black magic needed to get it to work.
269
260
  The README is getting a bit long. So I'll start breaking out the following subsections into
270
261
  their own markdown files. The first will be the [installation](INSTALL.md) section.
271
262
 
272
- ### Update your CTY and SCP files
263
+ ## Update your CTY and SCP files
273
264
 
274
265
  After all the configuration stuff below and before operating in a contest, you
275
266
  might want to update the CTY and SCP files. You can do this by choosing FILE->Update CTY and FILE->Update MASTER.SCP
@@ -3,12 +3,12 @@ not1mm/__main__.py,sha256=RrTfTDtjpkVtePyqxoPi7WaCkbKxCLCXkBV5UBPnUSs,170821
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=hYzpCQKkwgILFUtP5uxQXy6uU9zCB0R-aBDAUsSOPFI,42625
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=_k65GU93N-TIb2-b0_Yta4NCT9pJd5t-SB_DvC-m_ZM,7712
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=bwPhOrOAgvV9JiXUDT9kzCqfNWAhGuJQt489h0SKsCk,4925375
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=D1OBjyLmX7zuSPqgTCmHwXzAKA12J_zTQItvyIem-4Y,13299
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=jN1meNoksy9UFdgvySOoM9_ahEfG3naf2I__T9wlKoI,48
123
+ not1mm/lib/version.py,sha256=y-79Kz-cpVu7nSq5m5ib18Y0iRBqTENCAV2FYE2KapA,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=pl5AjfmyYaprovEk8fw-qCzOReqIdDZSY6BjeChOqds,19204
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.5.31.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
188
- not1mm-25.5.31.dist-info/METADATA,sha256=2qihIPYV9l6oinUyF9juDVDf630KHgbvcGVNoktLjV0,34704
189
- not1mm-25.5.31.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
190
- not1mm-25.5.31.dist-info/entry_points.txt,sha256=pMcZk_0dxFgLkcUkF0Q874ojpwOmF3OL6EKw9LgvocM,47
191
- not1mm-25.5.31.dist-info/top_level.txt,sha256=0YmTxEcDzQlzXub-lXASvoLpg_mt1c2thb5cVkDf5J4,7
192
- not1mm-25.5.31.dist-info/RECORD,,
187
+ not1mm-25.6.1.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
188
+ not1mm-25.6.1.dist-info/METADATA,sha256=NexPWVnMziDG3fNfaDghwGcmGTHl0d3datPge_Rb6mU,34050
189
+ not1mm-25.6.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
190
+ not1mm-25.6.1.dist-info/entry_points.txt,sha256=pMcZk_0dxFgLkcUkF0Q874ojpwOmF3OL6EKw9LgvocM,47
191
+ not1mm-25.6.1.dist-info/top_level.txt,sha256=0YmTxEcDzQlzXub-lXASvoLpg_mt1c2thb5cVkDf5J4,7
192
+ not1mm-25.6.1.dist-info/RECORD,,