not1mm 24.10.24.1__py3-none-any.whl → 24.10.26__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 +9 -3
- not1mm/bandmap.py +6 -1
- not1mm/data/main.ui +23 -3
- not1mm/lib/version.py +1 -1
- not1mm/plugins/10_10_fall_cw.py +109 -82
- not1mm/plugins/10_10_spring_cw.py +109 -82
- not1mm/plugins/10_10_summer_phone.py +109 -82
- not1mm/plugins/10_10_winter_phone.py +109 -82
- not1mm/plugins/arrl_10m.py +109 -82
- not1mm/plugins/arrl_dx_cw.py +109 -82
- not1mm/plugins/arrl_dx_ssb.py +109 -82
- not1mm/plugins/arrl_field_day.py +109 -82
- not1mm/plugins/arrl_ss_cw.py +109 -82
- not1mm/plugins/arrl_ss_phone.py +109 -82
- not1mm/plugins/arrl_vhf_jan.py +109 -82
- not1mm/plugins/arrl_vhf_jun.py +109 -82
- not1mm/plugins/arrl_vhf_sep.py +109 -82
- not1mm/plugins/canada_day.py +109 -82
- not1mm/plugins/cq_160_cw.py +109 -74
- not1mm/plugins/cq_160_ssb.py +109 -74
- not1mm/plugins/cq_wpx_cw.py +109 -82
- not1mm/plugins/cq_wpx_rtty.py +109 -82
- not1mm/plugins/cq_wpx_ssb.py +109 -82
- not1mm/plugins/cq_ww_cw.py +115 -83
- not1mm/plugins/cq_ww_rtty.py +110 -73
- not1mm/plugins/cq_ww_ssb.py +109 -82
- not1mm/plugins/cwt.py +109 -82
- not1mm/plugins/general_logging.py +1 -1
- not1mm/plugins/helvetia.py +109 -82
- not1mm/plugins/iaru_fieldday_r1_cw.py +109 -82
- not1mm/plugins/iaru_fieldday_r1_ssb.py +109 -82
- not1mm/plugins/iaru_hf.py +109 -82
- not1mm/plugins/icwc_mst.py +109 -82
- not1mm/plugins/jidx_cw.py +74 -48
- not1mm/plugins/jidx_ph.py +74 -48
- not1mm/plugins/k1usn_sst.py +109 -82
- not1mm/plugins/naqp_cw.py +109 -82
- not1mm/plugins/naqp_rtty.py +109 -82
- not1mm/plugins/naqp_ssb.py +109 -82
- not1mm/plugins/phone_weekly_test.py +109 -82
- not1mm/plugins/ref_cw.py +109 -82
- not1mm/plugins/ref_ssb.py +109 -82
- not1mm/plugins/stew_perry_topband.py +109 -82
- not1mm/plugins/weekly_rtty.py +109 -82
- not1mm/plugins/winter_field_day.py +109 -82
- {not1mm-24.10.24.1.dist-info → not1mm-24.10.26.dist-info}/METADATA +3 -1
- {not1mm-24.10.24.1.dist-info → not1mm-24.10.26.dist-info}/RECORD +51 -51
- {not1mm-24.10.24.1.dist-info → not1mm-24.10.26.dist-info}/LICENSE +0 -0
- {not1mm-24.10.24.1.dist-info → not1mm-24.10.26.dist-info}/WHEEL +0 -0
- {not1mm-24.10.24.1.dist-info → not1mm-24.10.26.dist-info}/entry_points.txt +0 -0
- {not1mm-24.10.24.1.dist-info → not1mm-24.10.26.dist-info}/top_level.txt +0 -0
@@ -231,7 +231,16 @@ def adif(self):
|
|
231
231
|
gen_adif(self, cabrillo_name, "IARU FIELDDAY R1 DARC CW")
|
232
232
|
|
233
233
|
|
234
|
-
def
|
234
|
+
def output_cabrillo_line(line_to_output, ending, file_descriptor, file_encoding):
|
235
|
+
""""""
|
236
|
+
print(
|
237
|
+
line_to_output.encode(file_encoding, errors="ignore").decode(),
|
238
|
+
end=ending,
|
239
|
+
file=file_descriptor,
|
240
|
+
)
|
241
|
+
|
242
|
+
|
243
|
+
def cabrillo(self, file_encoding):
|
235
244
|
"""Generates Cabrillo file. Maybe."""
|
236
245
|
# https://www.cqwpx.com/cabrillo.htm
|
237
246
|
logger.debug("******Cabrillo*****")
|
@@ -248,133 +257,150 @@ def cabrillo(self):
|
|
248
257
|
log = self.database.fetch_all_contacts_asc()
|
249
258
|
try:
|
250
259
|
with open(filename, "w", encoding="utf-8") as file_descriptor:
|
251
|
-
|
252
|
-
|
260
|
+
output_cabrillo_line(
|
261
|
+
"START-OF-LOG: 3.0",
|
262
|
+
"\r\n",
|
263
|
+
file_descriptor,
|
264
|
+
file_encoding,
|
265
|
+
)
|
266
|
+
output_cabrillo_line(
|
253
267
|
f"CREATED-BY: Not1MM v{__version__}",
|
254
|
-
|
255
|
-
|
268
|
+
"\r\n",
|
269
|
+
file_descriptor,
|
270
|
+
file_encoding,
|
256
271
|
)
|
257
|
-
|
272
|
+
output_cabrillo_line(
|
258
273
|
f"CONTEST: {cabrillo_name}",
|
259
|
-
|
260
|
-
|
274
|
+
"\r\n",
|
275
|
+
file_descriptor,
|
276
|
+
file_encoding,
|
261
277
|
)
|
262
278
|
if self.station.get("Club", ""):
|
263
|
-
|
279
|
+
output_cabrillo_line(
|
264
280
|
f"CLUB: {self.station.get('Club', '').upper()}",
|
265
|
-
|
266
|
-
|
281
|
+
"\r\n",
|
282
|
+
file_descriptor,
|
283
|
+
file_encoding,
|
267
284
|
)
|
268
|
-
|
285
|
+
output_cabrillo_line(
|
269
286
|
f"CALLSIGN: {self.station.get('Call','')}",
|
270
|
-
|
271
|
-
|
287
|
+
"\r\n",
|
288
|
+
file_descriptor,
|
289
|
+
file_encoding,
|
272
290
|
)
|
273
|
-
|
291
|
+
output_cabrillo_line(
|
274
292
|
f"LOCATION: {self.station.get('ARRLSection', '')}",
|
275
|
-
|
276
|
-
|
293
|
+
"\r\n",
|
294
|
+
file_descriptor,
|
295
|
+
file_encoding,
|
277
296
|
)
|
278
|
-
|
279
|
-
# f"ARRL-SECTION: {self.pref.get('section', '')}",
|
280
|
-
# end="\r\n",
|
281
|
-
# file=file_descriptor,
|
282
|
-
# )
|
283
|
-
print(
|
297
|
+
output_cabrillo_line(
|
284
298
|
f"CATEGORY-OPERATOR: {self.contest_settings.get('OperatorCategory','')}",
|
285
|
-
|
286
|
-
|
299
|
+
"\r\n",
|
300
|
+
file_descriptor,
|
301
|
+
file_encoding,
|
287
302
|
)
|
288
|
-
|
303
|
+
output_cabrillo_line(
|
289
304
|
f"CATEGORY-ASSISTED: {self.contest_settings.get('AssistedCategory','')}",
|
290
|
-
|
291
|
-
|
305
|
+
"\r\n",
|
306
|
+
file_descriptor,
|
307
|
+
file_encoding,
|
292
308
|
)
|
293
|
-
|
309
|
+
output_cabrillo_line(
|
294
310
|
f"CATEGORY-BAND: {self.contest_settings.get('BandCategory','')}",
|
295
|
-
|
296
|
-
|
311
|
+
"\r\n",
|
312
|
+
file_descriptor,
|
313
|
+
file_encoding,
|
297
314
|
)
|
298
|
-
|
315
|
+
output_cabrillo_line(
|
299
316
|
f"CATEGORY-MODE: {self.contest_settings.get('ModeCategory','')}",
|
300
|
-
|
301
|
-
|
317
|
+
"\r\n",
|
318
|
+
file_descriptor,
|
319
|
+
file_encoding,
|
302
320
|
)
|
303
|
-
|
321
|
+
output_cabrillo_line(
|
304
322
|
f"CATEGORY-TRANSMITTER: {self.contest_settings.get('TransmitterCategory','')}",
|
305
|
-
|
306
|
-
|
323
|
+
"\r\n",
|
324
|
+
file_descriptor,
|
325
|
+
file_encoding,
|
307
326
|
)
|
308
327
|
if self.contest_settings.get("OverlayCategory", "") != "N/A":
|
309
|
-
|
328
|
+
output_cabrillo_line(
|
310
329
|
f"CATEGORY-OVERLAY: {self.contest_settings.get('OverlayCategory','')}",
|
311
|
-
|
312
|
-
|
330
|
+
"\r\n",
|
331
|
+
file_descriptor,
|
332
|
+
file_encoding,
|
313
333
|
)
|
314
|
-
|
334
|
+
output_cabrillo_line(
|
315
335
|
f"GRID-LOCATOR: {self.station.get('GridSquare','')}",
|
316
|
-
|
317
|
-
|
336
|
+
"\r\n",
|
337
|
+
file_descriptor,
|
338
|
+
file_encoding,
|
318
339
|
)
|
319
|
-
|
320
|
-
# f"CATEGORY: {None}",
|
321
|
-
# end="\r\n",
|
322
|
-
# file=file_descriptor,
|
323
|
-
# )
|
324
|
-
print(
|
340
|
+
output_cabrillo_line(
|
325
341
|
f"CATEGORY-POWER: {self.contest_settings.get('PowerCategory','')}",
|
326
|
-
|
327
|
-
|
342
|
+
"\r\n",
|
343
|
+
file_descriptor,
|
344
|
+
file_encoding,
|
328
345
|
)
|
329
346
|
|
330
|
-
|
347
|
+
output_cabrillo_line(
|
331
348
|
f"CLAIMED-SCORE: {calc_score(self)}",
|
332
|
-
|
333
|
-
|
349
|
+
"\r\n",
|
350
|
+
file_descriptor,
|
351
|
+
file_encoding,
|
334
352
|
)
|
335
353
|
ops = f"@{self.station.get('Call','')}"
|
336
354
|
list_of_ops = self.database.get_ops()
|
337
355
|
for op in list_of_ops:
|
338
356
|
ops += f", {op.get('Operator', '')}"
|
339
|
-
|
357
|
+
output_cabrillo_line(
|
340
358
|
f"OPERATORS: {ops}",
|
341
|
-
|
342
|
-
|
359
|
+
"\r\n",
|
360
|
+
file_descriptor,
|
361
|
+
file_encoding,
|
343
362
|
)
|
344
|
-
|
363
|
+
output_cabrillo_line(
|
345
364
|
f"NAME: {self.station.get('Name', '')}",
|
346
|
-
|
347
|
-
|
365
|
+
"\r\n",
|
366
|
+
file_descriptor,
|
367
|
+
file_encoding,
|
348
368
|
)
|
349
|
-
|
369
|
+
output_cabrillo_line(
|
350
370
|
f"ADDRESS: {self.station.get('Street1', '')}",
|
351
|
-
|
352
|
-
|
371
|
+
"\r\n",
|
372
|
+
file_descriptor,
|
373
|
+
file_encoding,
|
353
374
|
)
|
354
|
-
|
375
|
+
output_cabrillo_line(
|
355
376
|
f"ADDRESS-CITY: {self.station.get('City', '')}",
|
356
|
-
|
357
|
-
|
377
|
+
"\r\n",
|
378
|
+
file_descriptor,
|
379
|
+
file_encoding,
|
358
380
|
)
|
359
|
-
|
381
|
+
output_cabrillo_line(
|
360
382
|
f"ADDRESS-STATE-PROVINCE: {self.station.get('State', '')}",
|
361
|
-
|
362
|
-
|
383
|
+
"\r\n",
|
384
|
+
file_descriptor,
|
385
|
+
file_encoding,
|
363
386
|
)
|
364
|
-
|
387
|
+
output_cabrillo_line(
|
365
388
|
f"ADDRESS-POSTALCODE: {self.station.get('Zip', '')}",
|
366
|
-
|
367
|
-
|
389
|
+
"\r\n",
|
390
|
+
file_descriptor,
|
391
|
+
file_encoding,
|
368
392
|
)
|
369
|
-
|
393
|
+
output_cabrillo_line(
|
370
394
|
f"ADDRESS-COUNTRY: {self.station.get('Country', '')}",
|
371
|
-
|
372
|
-
|
395
|
+
"\r\n",
|
396
|
+
file_descriptor,
|
397
|
+
file_encoding,
|
373
398
|
)
|
374
|
-
|
399
|
+
output_cabrillo_line(
|
375
400
|
f"EMAIL: {self.station.get('Email', '')}",
|
376
|
-
|
377
|
-
|
401
|
+
"\r\n",
|
402
|
+
file_descriptor,
|
403
|
+
file_encoding,
|
378
404
|
)
|
379
405
|
for contact in log:
|
380
406
|
the_date_and_time = contact.get("TS", "")
|
@@ -385,7 +411,7 @@ def cabrillo(self):
|
|
385
411
|
|
386
412
|
loggeddate = the_date_and_time[:10]
|
387
413
|
loggedtime = the_date_and_time[11:13] + the_date_and_time[14:16]
|
388
|
-
|
414
|
+
output_cabrillo_line(
|
389
415
|
f"QSO: {frequency} {themode} {loggeddate} {loggedtime} "
|
390
416
|
f"{contact.get('StationPrefix', '').ljust(13)} "
|
391
417
|
f"{str(contact.get('SNT', '')).ljust(3)} "
|
@@ -393,10 +419,11 @@ def cabrillo(self):
|
|
393
419
|
f"{contact.get('Call', '').ljust(13)} "
|
394
420
|
f"{str(contact.get('RCV', '')).ljust(3)} "
|
395
421
|
f"{str(contact.get('NR', '')).ljust(6)}",
|
396
|
-
|
397
|
-
|
422
|
+
"\r\n",
|
423
|
+
file_descriptor,
|
424
|
+
file_encoding,
|
398
425
|
)
|
399
|
-
|
426
|
+
output_cabrillo_line("END-OF-LOG:", "\r\n", file_descriptor, file_encoding)
|
400
427
|
self.show_message_box(f"Cabrillo saved to: {filename}")
|
401
428
|
except IOError as exception:
|
402
429
|
logger.critical("cabrillo: IO error: %s, writing to %s", exception, filename)
|
@@ -231,7 +231,16 @@ def adif(self):
|
|
231
231
|
gen_adif(self, cabrillo_name, "IARU FIELDDAY R1 DARC SSB")
|
232
232
|
|
233
233
|
|
234
|
-
def
|
234
|
+
def output_cabrillo_line(line_to_output, ending, file_descriptor, file_encoding):
|
235
|
+
""""""
|
236
|
+
print(
|
237
|
+
line_to_output.encode(file_encoding, errors="ignore").decode(),
|
238
|
+
end=ending,
|
239
|
+
file=file_descriptor,
|
240
|
+
)
|
241
|
+
|
242
|
+
|
243
|
+
def cabrillo(self, file_encoding):
|
235
244
|
"""Generates Cabrillo file. Maybe."""
|
236
245
|
# https://www.cqwpx.com/cabrillo.htm
|
237
246
|
logger.debug("******Cabrillo*****")
|
@@ -248,133 +257,150 @@ def cabrillo(self):
|
|
248
257
|
log = self.database.fetch_all_contacts_asc()
|
249
258
|
try:
|
250
259
|
with open(filename, "w", encoding="utf-8") as file_descriptor:
|
251
|
-
|
252
|
-
|
260
|
+
output_cabrillo_line(
|
261
|
+
"START-OF-LOG: 3.0",
|
262
|
+
"\r\n",
|
263
|
+
file_descriptor,
|
264
|
+
file_encoding,
|
265
|
+
)
|
266
|
+
output_cabrillo_line(
|
253
267
|
f"CREATED-BY: Not1MM v{__version__}",
|
254
|
-
|
255
|
-
|
268
|
+
"\r\n",
|
269
|
+
file_descriptor,
|
270
|
+
file_encoding,
|
256
271
|
)
|
257
|
-
|
272
|
+
output_cabrillo_line(
|
258
273
|
f"CONTEST: {cabrillo_name}",
|
259
|
-
|
260
|
-
|
274
|
+
"\r\n",
|
275
|
+
file_descriptor,
|
276
|
+
file_encoding,
|
261
277
|
)
|
262
278
|
if self.station.get("Club", ""):
|
263
|
-
|
279
|
+
output_cabrillo_line(
|
264
280
|
f"CLUB: {self.station.get('Club', '').upper()}",
|
265
|
-
|
266
|
-
|
281
|
+
"\r\n",
|
282
|
+
file_descriptor,
|
283
|
+
file_encoding,
|
267
284
|
)
|
268
|
-
|
285
|
+
output_cabrillo_line(
|
269
286
|
f"CALLSIGN: {self.station.get('Call','')}",
|
270
|
-
|
271
|
-
|
287
|
+
"\r\n",
|
288
|
+
file_descriptor,
|
289
|
+
file_encoding,
|
272
290
|
)
|
273
|
-
|
291
|
+
output_cabrillo_line(
|
274
292
|
f"LOCATION: {self.station.get('ARRLSection', '')}",
|
275
|
-
|
276
|
-
|
293
|
+
"\r\n",
|
294
|
+
file_descriptor,
|
295
|
+
file_encoding,
|
277
296
|
)
|
278
|
-
|
279
|
-
# f"ARRL-SECTION: {self.pref.get('section', '')}",
|
280
|
-
# end="\r\n",
|
281
|
-
# file=file_descriptor,
|
282
|
-
# )
|
283
|
-
print(
|
297
|
+
output_cabrillo_line(
|
284
298
|
f"CATEGORY-OPERATOR: {self.contest_settings.get('OperatorCategory','')}",
|
285
|
-
|
286
|
-
|
299
|
+
"\r\n",
|
300
|
+
file_descriptor,
|
301
|
+
file_encoding,
|
287
302
|
)
|
288
|
-
|
303
|
+
output_cabrillo_line(
|
289
304
|
f"CATEGORY-ASSISTED: {self.contest_settings.get('AssistedCategory','')}",
|
290
|
-
|
291
|
-
|
305
|
+
"\r\n",
|
306
|
+
file_descriptor,
|
307
|
+
file_encoding,
|
292
308
|
)
|
293
|
-
|
309
|
+
output_cabrillo_line(
|
294
310
|
f"CATEGORY-BAND: {self.contest_settings.get('BandCategory','')}",
|
295
|
-
|
296
|
-
|
311
|
+
"\r\n",
|
312
|
+
file_descriptor,
|
313
|
+
file_encoding,
|
297
314
|
)
|
298
|
-
|
315
|
+
output_cabrillo_line(
|
299
316
|
f"CATEGORY-MODE: {self.contest_settings.get('ModeCategory','')}",
|
300
|
-
|
301
|
-
|
317
|
+
"\r\n",
|
318
|
+
file_descriptor,
|
319
|
+
file_encoding,
|
302
320
|
)
|
303
|
-
|
321
|
+
output_cabrillo_line(
|
304
322
|
f"CATEGORY-TRANSMITTER: {self.contest_settings.get('TransmitterCategory','')}",
|
305
|
-
|
306
|
-
|
323
|
+
"\r\n",
|
324
|
+
file_descriptor,
|
325
|
+
file_encoding,
|
307
326
|
)
|
308
327
|
if self.contest_settings.get("OverlayCategory", "") != "N/A":
|
309
|
-
|
328
|
+
output_cabrillo_line(
|
310
329
|
f"CATEGORY-OVERLAY: {self.contest_settings.get('OverlayCategory','')}",
|
311
|
-
|
312
|
-
|
330
|
+
"\r\n",
|
331
|
+
file_descriptor,
|
332
|
+
file_encoding,
|
313
333
|
)
|
314
|
-
|
334
|
+
output_cabrillo_line(
|
315
335
|
f"GRID-LOCATOR: {self.station.get('GridSquare','')}",
|
316
|
-
|
317
|
-
|
336
|
+
"\r\n",
|
337
|
+
file_descriptor,
|
338
|
+
file_encoding,
|
318
339
|
)
|
319
|
-
|
320
|
-
# f"CATEGORY: {None}",
|
321
|
-
# end="\r\n",
|
322
|
-
# file=file_descriptor,
|
323
|
-
# )
|
324
|
-
print(
|
340
|
+
output_cabrillo_line(
|
325
341
|
f"CATEGORY-POWER: {self.contest_settings.get('PowerCategory','')}",
|
326
|
-
|
327
|
-
|
342
|
+
"\r\n",
|
343
|
+
file_descriptor,
|
344
|
+
file_encoding,
|
328
345
|
)
|
329
346
|
|
330
|
-
|
347
|
+
output_cabrillo_line(
|
331
348
|
f"CLAIMED-SCORE: {calc_score(self)}",
|
332
|
-
|
333
|
-
|
349
|
+
"\r\n",
|
350
|
+
file_descriptor,
|
351
|
+
file_encoding,
|
334
352
|
)
|
335
353
|
ops = f"@{self.station.get('Call','')}"
|
336
354
|
list_of_ops = self.database.get_ops()
|
337
355
|
for op in list_of_ops:
|
338
356
|
ops += f", {op.get('Operator', '')}"
|
339
|
-
|
357
|
+
output_cabrillo_line(
|
340
358
|
f"OPERATORS: {ops}",
|
341
|
-
|
342
|
-
|
359
|
+
"\r\n",
|
360
|
+
file_descriptor,
|
361
|
+
file_encoding,
|
343
362
|
)
|
344
|
-
|
363
|
+
output_cabrillo_line(
|
345
364
|
f"NAME: {self.station.get('Name', '')}",
|
346
|
-
|
347
|
-
|
365
|
+
"\r\n",
|
366
|
+
file_descriptor,
|
367
|
+
file_encoding,
|
348
368
|
)
|
349
|
-
|
369
|
+
output_cabrillo_line(
|
350
370
|
f"ADDRESS: {self.station.get('Street1', '')}",
|
351
|
-
|
352
|
-
|
371
|
+
"\r\n",
|
372
|
+
file_descriptor,
|
373
|
+
file_encoding,
|
353
374
|
)
|
354
|
-
|
375
|
+
output_cabrillo_line(
|
355
376
|
f"ADDRESS-CITY: {self.station.get('City', '')}",
|
356
|
-
|
357
|
-
|
377
|
+
"\r\n",
|
378
|
+
file_descriptor,
|
379
|
+
file_encoding,
|
358
380
|
)
|
359
|
-
|
381
|
+
output_cabrillo_line(
|
360
382
|
f"ADDRESS-STATE-PROVINCE: {self.station.get('State', '')}",
|
361
|
-
|
362
|
-
|
383
|
+
"\r\n",
|
384
|
+
file_descriptor,
|
385
|
+
file_encoding,
|
363
386
|
)
|
364
|
-
|
387
|
+
output_cabrillo_line(
|
365
388
|
f"ADDRESS-POSTALCODE: {self.station.get('Zip', '')}",
|
366
|
-
|
367
|
-
|
389
|
+
"\r\n",
|
390
|
+
file_descriptor,
|
391
|
+
file_encoding,
|
368
392
|
)
|
369
|
-
|
393
|
+
output_cabrillo_line(
|
370
394
|
f"ADDRESS-COUNTRY: {self.station.get('Country', '')}",
|
371
|
-
|
372
|
-
|
395
|
+
"\r\n",
|
396
|
+
file_descriptor,
|
397
|
+
file_encoding,
|
373
398
|
)
|
374
|
-
|
399
|
+
output_cabrillo_line(
|
375
400
|
f"EMAIL: {self.station.get('Email', '')}",
|
376
|
-
|
377
|
-
|
401
|
+
"\r\n",
|
402
|
+
file_descriptor,
|
403
|
+
file_encoding,
|
378
404
|
)
|
379
405
|
for contact in log:
|
380
406
|
the_date_and_time = contact.get("TS", "")
|
@@ -385,7 +411,7 @@ def cabrillo(self):
|
|
385
411
|
|
386
412
|
loggeddate = the_date_and_time[:10]
|
387
413
|
loggedtime = the_date_and_time[11:13] + the_date_and_time[14:16]
|
388
|
-
|
414
|
+
output_cabrillo_line(
|
389
415
|
f"QSO: {frequency} {themode} {loggeddate} {loggedtime} "
|
390
416
|
f"{contact.get('StationPrefix', '').ljust(13)} "
|
391
417
|
f"{str(contact.get('SNT', '')).ljust(3)} "
|
@@ -393,10 +419,11 @@ def cabrillo(self):
|
|
393
419
|
f"{contact.get('Call', '').ljust(13)} "
|
394
420
|
f"{str(contact.get('RCV', '')).ljust(3)} "
|
395
421
|
f"{str(contact.get('NR', '')).ljust(6)}",
|
396
|
-
|
397
|
-
|
422
|
+
"\r\n",
|
423
|
+
file_descriptor,
|
424
|
+
file_encoding,
|
398
425
|
)
|
399
|
-
|
426
|
+
output_cabrillo_line("END-OF-LOG:", "\r\n", file_descriptor, file_encoding)
|
400
427
|
self.show_message_box(f"Cabrillo saved to: {filename}")
|
401
428
|
except IOError as exception:
|
402
429
|
logger.critical("cabrillo: IO error: %s, writing to %s", exception, filename)
|