not1mm 23.9.3.1__tar.gz → 23.10.31__tar.gz

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.
Files changed (149) hide show
  1. {not1mm-23.9.3.1 → not1mm-23.10.31}/PKG-INFO +24 -6
  2. {not1mm-23.9.3.1 → not1mm-23.10.31}/README.md +14 -5
  3. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/__main__.py +24 -12
  4. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/bandmap.py +1 -1
  5. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/MASTER.SCP +7871 -540
  6. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/cty.json +1 -1
  7. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/main.ui +11 -1
  8. not1mm-23.10.31/not1mm/data/radio_green.png +0 -0
  9. not1mm-23.10.31/not1mm/data/radio_grey.png +0 -0
  10. not1mm-23.10.31/not1mm/data/radio_red.png +0 -0
  11. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/lib/cat_interface.py +58 -58
  12. not1mm-23.10.31/not1mm/lib/version.py +2 -0
  13. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm.egg-info/PKG-INFO +24 -6
  14. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm.egg-info/SOURCES.txt +3 -0
  15. {not1mm-23.9.3.1 → not1mm-23.10.31}/pyproject.toml +1 -1
  16. not1mm-23.10.31/testing/test.py +7 -0
  17. not1mm-23.9.3.1/not1mm/lib/version.py +0 -2
  18. not1mm-23.9.3.1/testing/test.py +0 -22
  19. {not1mm-23.9.3.1 → not1mm-23.10.31}/LICENSE +0 -0
  20. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/__init__.py +0 -0
  21. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/checkwindow.py +0 -0
  22. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/JetBrainsMono-Regular.ttf +0 -0
  23. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/about.ui +0 -0
  24. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/alpha bravo charlie delta.txt +0 -0
  25. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/bandmap.ui +0 -0
  26. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/check.png +0 -0
  27. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/checkwindow.ui +0 -0
  28. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/configuration.ui +0 -0
  29. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/contests.sql +0 -0
  30. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/cwmacros.txt +0 -0
  31. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/donors.html +0 -0
  32. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/editcontact.ui +0 -0
  33. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/editmacro.ui +0 -0
  34. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/greendot.png +0 -0
  35. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/k6gte-not1mm.desktop +0 -0
  36. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/k6gte.not1mm-128.png +0 -0
  37. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/k6gte.not1mm-32.png +0 -0
  38. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/k6gte.not1mm-64.png +0 -0
  39. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/logwindow.ui +0 -0
  40. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/new_contest.ui +0 -0
  41. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/not1mm.html +0 -0
  42. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/opon.ui +0 -0
  43. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/0.wav +0 -0
  44. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/1.wav +0 -0
  45. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/2.wav +0 -0
  46. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/3.wav +0 -0
  47. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/4.wav +0 -0
  48. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/5.wav +0 -0
  49. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/6.wav +0 -0
  50. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/7.wav +0 -0
  51. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/73.wav +0 -0
  52. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/8.wav +0 -0
  53. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/9.wav +0 -0
  54. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/a.wav +0 -0
  55. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/again.wav +0 -0
  56. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/b.wav +0 -0
  57. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/c.wav +0 -0
  58. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/contest.wav +0 -0
  59. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/cq.wav +0 -0
  60. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/d.wav +0 -0
  61. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/e.wav +0 -0
  62. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/f.wav +0 -0
  63. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/g.wav +0 -0
  64. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/h.wav +0 -0
  65. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/i.wav +0 -0
  66. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/j.wav +0 -0
  67. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/k.wav +0 -0
  68. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/k6gte.wav +0 -0
  69. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/l.wav +0 -0
  70. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/m.wav +0 -0
  71. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/mynumber.wav +0 -0
  72. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/n.wav +0 -0
  73. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/nil.wav +0 -0
  74. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/o.wav +0 -0
  75. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/p.wav +0 -0
  76. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/q.wav +0 -0
  77. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/r.wav +0 -0
  78. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/roger.wav +0 -0
  79. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/s.wav +0 -0
  80. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/space.wav +0 -0
  81. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/t.wav +0 -0
  82. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/thankyou.wav +0 -0
  83. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/thankyouqrz.wav +0 -0
  84. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/u.wav +0 -0
  85. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/v.wav +0 -0
  86. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/w.wav +0 -0
  87. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/x.wav +0 -0
  88. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/y.wav +0 -0
  89. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/yourcall.wav +0 -0
  90. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/phonetics/z.wav +0 -0
  91. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/pickcontest.ui +0 -0
  92. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/reddot.png +0 -0
  93. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/settings.ui +0 -0
  94. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/ssbmacros.txt +0 -0
  95. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/data/vfo.ui +0 -0
  96. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/lib/__init__.py +0 -0
  97. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/lib/about.py +0 -0
  98. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/lib/cwinterface.py +0 -0
  99. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/lib/database.py +0 -0
  100. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/lib/edit_contact.py +0 -0
  101. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/lib/edit_macro.py +0 -0
  102. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/lib/edit_opon.py +0 -0
  103. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/lib/edit_station.py +0 -0
  104. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/lib/ham_utility.py +0 -0
  105. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/lib/lookup.py +0 -0
  106. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/lib/multicast.py +0 -0
  107. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/lib/n1mm.py +0 -0
  108. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/lib/new_contest.py +0 -0
  109. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/lib/select_contest.py +0 -0
  110. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/lib/settings.py +0 -0
  111. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/lib/super_check_partial.py +0 -0
  112. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/lib/versiontest.py +0 -0
  113. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/logwindow.py +0 -0
  114. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/plugins/10_10_fall_cw.py +0 -0
  115. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/plugins/10_10_spring_cw.py +0 -0
  116. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/plugins/10_10_summer_phone.py +0 -0
  117. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/plugins/10_10_winter_phone.py +0 -0
  118. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/plugins/__init__.py +0 -0
  119. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/plugins/arrl_dx_cw.py +0 -0
  120. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/plugins/arrl_dx_ssb.py +0 -0
  121. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/plugins/arrl_field_day.py +0 -0
  122. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/plugins/arrl_rtty_ru.py +0 -0
  123. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/plugins/arrl_ss_cw.py +0 -0
  124. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/plugins/arrl_ss_phone.py +0 -0
  125. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/plugins/canada_day.py +0 -0
  126. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/plugins/cq_wpx_cw.py +0 -0
  127. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/plugins/cq_wpx_ssb.py +0 -0
  128. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/plugins/cq_ww_cw.py +0 -0
  129. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/plugins/cq_ww_ssb.py +0 -0
  130. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/plugins/cwt.py +0 -0
  131. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/plugins/general_logging.py +0 -0
  132. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/plugins/iaru_hf.py +0 -0
  133. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/plugins/jidx_cw.py +0 -0
  134. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/plugins/jidx_ph.py +0 -0
  135. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/plugins/naqp_cw.py +0 -0
  136. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/plugins/naqp_ssb.py +0 -0
  137. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/plugins/winter_field_day.py +0 -0
  138. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/testing/fakeflrig.py +0 -0
  139. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/testing/flrigclient.py +0 -0
  140. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/testing/multicast_listener.py +0 -0
  141. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/testing/n1mm_listener.py +0 -0
  142. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/testing/test.py +0 -0
  143. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm/vfo.py +0 -0
  144. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm.egg-info/dependency_links.txt +0 -0
  145. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm.egg-info/entry_points.txt +0 -0
  146. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm.egg-info/requires.txt +0 -0
  147. {not1mm-23.9.3.1 → not1mm-23.10.31}/not1mm.egg-info/top_level.txt +0 -0
  148. {not1mm-23.9.3.1 → not1mm-23.10.31}/setup.cfg +0 -0
  149. {not1mm-23.9.3.1 → not1mm-23.10.31}/usb_vfo_knob/code.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: not1mm
3
- Version: 23.9.3.1
3
+ Version: 23.10.31
4
4
  Summary: NOT1MM Logger
5
5
  Author-email: Michael Bridak <michael.bridak@gmail.com>
6
6
  Project-URL: Homepage, https://github.com/mbridak/not1mm
@@ -16,9 +16,20 @@ Classifier: Topic :: Communications :: Ham Radio
16
16
  Requires-Python: >=3.9
17
17
  Description-Content-Type: text/markdown
18
18
  License-File: LICENSE
19
+ Requires-Dist: PyQt5
20
+ Requires-Dist: requests
21
+ Requires-Dist: dicttoxml
22
+ Requires-Dist: xmltodict
23
+ Requires-Dist: psutil
24
+ Requires-Dist: sounddevice
25
+ Requires-Dist: soundfile
26
+ Requires-Dist: numpy
27
+ Requires-Dist: notctyparser>=23.6.21
19
28
 
20
29
  # Not1MM
21
30
 
31
+ The worlds #1 unfinished contest logger <sup>*According to my daughter Corinna.<sup>
32
+
22
33
  [![PyPI](https://img.shields.io/pypi/v/not1mm)](https://pypi.org/project/not1mm/)
23
34
  [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
24
35
  [![Python: 3.10+](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/)
@@ -143,6 +154,9 @@ I wish to thank those who've contributed to the project.
143
154
 
144
155
  ## Recent Changes
145
156
 
157
+ - [23-10-31] Fix crash if flrig wasn't running. Add CAT status icon.
158
+ - [23-10-28] Merged PR from #qsantos and #bseidenberg, fixing crash related to zombie processes.
159
+ - [23-10-22] Where've I been? Sorry, I've been caring for a family member. Be back soon.
146
160
  - [23-9-3] Added some accessibility stuff for screen readers. Fixed crash when entering invalid frequency in log window. You can now edit cells in the focused half of the log window.
147
161
  - [23-9-2] CTRL+SHIFT+K to open CW text entry field.
148
162
 
@@ -332,7 +346,7 @@ Choose the sound output device for the voice keyer.
332
346
 
333
347
  ### CAT
334
348
 
335
- Under the `CAT` TAB, you can choose either `rigctld` normally with an IP of `127.0.0.1` and a port of `4532`. Or `flrig`, IP normally of `127.0.0.1` and a port of `12345`. `None` is always an option, but is it really?
349
+ Under the `CAT` TAB, you can choose either `rigctld` normally with an IP of `127.0.0.1` and a port of `4532`. Or `flrig`, IP normally of `127.0.0.1` and a port of `12345`. `None` is always an option, but is it really? There's an onscreen icon for CAT status. Green good, Red bad, Grey neither.
336
350
 
337
351
  ### CW Keyer interface
338
352
 
@@ -492,11 +506,15 @@ Click on `File` > `Generate Cabrillo`
492
506
 
493
507
  The file will be placed in your home directory. The name will be in the format of:
494
508
 
495
- `StationCall`_`ContestName`.log
509
+ `StationCall`\_`ContestName`\_`CurrentDate`\_`CurrentTime`.log
510
+
511
+ So for me it would look like:
512
+
513
+ K6GTE_CANADA-DAY_2023-09-04_07-47-05.log
496
514
 
497
- So for me it would be:
515
+ Look a log [eh](https://www.youtube.com/watch?v=El41sHXck-E)?.
498
516
 
499
- K6GTE_CQ-WPX-SSB.log
517
+ [This](https://www.youtube.com/watch?v=oMI23JJUpGE) outlines some differences between ARRL Field Day and Canada Day.
500
518
 
501
519
  ## ADIF
502
520
 
@@ -504,7 +522,7 @@ K6GTE_CQ-WPX-SSB.log
504
522
 
505
523
  Boom... ADIF
506
524
 
507
- `StationCall`_`ContestName`.adi
525
+ `StationCall`\_`ContestName`\_`Date`\_`Time`.adi
508
526
 
509
527
  ## Dupe checking
510
528
 
@@ -1,5 +1,7 @@
1
1
  # Not1MM
2
2
 
3
+ The worlds #1 unfinished contest logger <sup>*According to my daughter Corinna.<sup>
4
+
3
5
  [![PyPI](https://img.shields.io/pypi/v/not1mm)](https://pypi.org/project/not1mm/)
4
6
  [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
5
7
  [![Python: 3.10+](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/)
@@ -124,6 +126,9 @@ I wish to thank those who've contributed to the project.
124
126
 
125
127
  ## Recent Changes
126
128
 
129
+ - [23-10-31] Fix crash if flrig wasn't running. Add CAT status icon.
130
+ - [23-10-28] Merged PR from #qsantos and #bseidenberg, fixing crash related to zombie processes.
131
+ - [23-10-22] Where've I been? Sorry, I've been caring for a family member. Be back soon.
127
132
  - [23-9-3] Added some accessibility stuff for screen readers. Fixed crash when entering invalid frequency in log window. You can now edit cells in the focused half of the log window.
128
133
  - [23-9-2] CTRL+SHIFT+K to open CW text entry field.
129
134
 
@@ -313,7 +318,7 @@ Choose the sound output device for the voice keyer.
313
318
 
314
319
  ### CAT
315
320
 
316
- Under the `CAT` TAB, you can choose either `rigctld` normally with an IP of `127.0.0.1` and a port of `4532`. Or `flrig`, IP normally of `127.0.0.1` and a port of `12345`. `None` is always an option, but is it really?
321
+ Under the `CAT` TAB, you can choose either `rigctld` normally with an IP of `127.0.0.1` and a port of `4532`. Or `flrig`, IP normally of `127.0.0.1` and a port of `12345`. `None` is always an option, but is it really? There's an onscreen icon for CAT status. Green good, Red bad, Grey neither.
317
322
 
318
323
  ### CW Keyer interface
319
324
 
@@ -473,11 +478,15 @@ Click on `File` > `Generate Cabrillo`
473
478
 
474
479
  The file will be placed in your home directory. The name will be in the format of:
475
480
 
476
- `StationCall`_`ContestName`.log
481
+ `StationCall`\_`ContestName`\_`CurrentDate`\_`CurrentTime`.log
482
+
483
+ So for me it would look like:
484
+
485
+ K6GTE_CANADA-DAY_2023-09-04_07-47-05.log
477
486
 
478
- So for me it would be:
487
+ Look a log [eh](https://www.youtube.com/watch?v=El41sHXck-E)?.
479
488
 
480
- K6GTE_CQ-WPX-SSB.log
489
+ [This](https://www.youtube.com/watch?v=oMI23JJUpGE) outlines some differences between ARRL Field Day and Canada Day.
481
490
 
482
491
  ## ADIF
483
492
 
@@ -485,7 +494,7 @@ K6GTE_CQ-WPX-SSB.log
485
494
 
486
495
  Boom... ADIF
487
496
 
488
- `StationCall`_`ContestName`.adi
497
+ `StationCall`\_`ContestName`\_`Date`\_`Time`.adi
489
498
 
490
499
  ## Dupe checking
491
500
 
@@ -101,9 +101,12 @@ def check_process(name: str) -> bool:
101
101
  Bool
102
102
  """
103
103
  for proc in psutil.process_iter():
104
- if len(proc.cmdline()) == 2:
105
- if name in proc.cmdline()[1]:
106
- return True
104
+ try:
105
+ if len(proc.cmdline()) == 2:
106
+ if name in proc.cmdline()[1]:
107
+ return True
108
+ except (psutil.NoSuchProcess, psutil.ZombieProcess):
109
+ continue
107
110
  return False
108
111
 
109
112
 
@@ -257,6 +260,11 @@ class MainWindow(QtWidgets.QMainWindow):
257
260
  self.leftdot.setPixmap(self.greendot)
258
261
  self.rightdot.setPixmap(self.reddot)
259
262
 
263
+ self.radio_grey = QtGui.QPixmap(icon_path + "radio_grey.png")
264
+ self.radio_red = QtGui.QPixmap(icon_path + "radio_red.png")
265
+ self.radio_green = QtGui.QPixmap(icon_path + "radio_green.png")
266
+ self.radio_icon.setPixmap(self.radio_grey)
267
+
260
268
  self.F1.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
261
269
  self.F1.customContextMenuRequested.connect(self.edit_F1)
262
270
  self.F1.clicked.connect(self.sendf1)
@@ -373,6 +381,14 @@ class MainWindow(QtWidgets.QMainWindow):
373
381
  "You can udate to the current version by using:\npip install -U not1mm"
374
382
  )
375
383
 
384
+ def set_radio_icon(self, state: int) -> None:
385
+ """change CAT icon state"""
386
+ displaystate = [self.radio_grey, self.radio_red, self.radio_green]
387
+ try:
388
+ self.radio_icon.setPixmap(displaystate[state])
389
+ except (IndexError, TypeError) as err:
390
+ logger.debug(err)
391
+
376
392
  def toggle_cw_entry(self) -> None:
377
393
  """Toggle the CW entry field on and off."""
378
394
  self.cw_entry_visible = not self.cw_entry_visible
@@ -837,15 +853,7 @@ class MainWindow(QtWidgets.QMainWindow):
837
853
  try:
838
854
  cty = notctyparser.BigCty(WORKING_PATH + "/data/cty.json")
839
855
  update_available = cty.check_update()
840
- except AttributeError as the_error:
841
- logger.debug("cty parser returned an error: %s", the_error)
842
- return
843
- except ValueError as the_error:
844
- print("cty parser returned an error: %s", the_error)
845
- logger.debug("cty parser returned an error: %s", the_error)
846
- return
847
- except locale.Error as the_error:
848
- print("cty parser returned an error: %s", the_error)
856
+ except (AttributeError, ValueError, locale.Error) as the_error:
849
857
  logger.debug("cty parser returned an error: %s", the_error)
850
858
  return
851
859
  logger.debug("Newer cty file available %s", str(update_available))
@@ -1879,6 +1887,7 @@ class MainWindow(QtWidgets.QMainWindow):
1879
1887
  self.pref.get("CAT_ip", "127.0.0.1"),
1880
1888
  int(self.pref.get("CAT_port", 12345)),
1881
1889
  )
1890
+
1882
1891
  if self.pref.get("userigctld", False):
1883
1892
  logger.debug(
1884
1893
  "Using rigctld: %s",
@@ -2320,10 +2329,13 @@ class MainWindow(QtWidgets.QMainWindow):
2320
2329
 
2321
2330
  def poll_radio(self) -> None:
2322
2331
  """stub"""
2332
+ self.set_radio_icon(0)
2323
2333
  if self.rig_control:
2324
2334
  if self.rig_control.online is False:
2335
+ self.set_radio_icon(1)
2325
2336
  self.rig_control.reinit()
2326
2337
  if self.rig_control.online:
2338
+ self.set_radio_icon(2)
2327
2339
  info_dirty = False
2328
2340
  vfo = self.rig_control.get_vfo()
2329
2341
  mode = self.rig_control.get_mode()
@@ -737,7 +737,7 @@ class MainWindow(QtWidgets.QMainWindow):
737
737
  self.send_command("set dx extension Name CTY State Section")
738
738
  self.send_command("set dx mode " + PREF.get("cluster_mode", "OPEN"))
739
739
  return
740
- if "call:" in data:
740
+ if "call:" in data or "callsign:" in data:
741
741
  self.send_command(self.callsignField.text())
742
742
  self.send_command(PREF.get("cluster_filter", ""))
743
743
  self.send_command("set dx extension Name CTY State Section")