not1mm 24.6.1__tar.gz → 24.7.13__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 (159) hide show
  1. {not1mm-24.6.1 → not1mm-24.7.13}/PKG-INFO +73 -27
  2. {not1mm-24.6.1 → not1mm-24.7.13}/README.md +72 -26
  3. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/__main__.py +27 -24
  4. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/MASTER.SCP +1556 -1049
  5. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/configuration.ui +34 -34
  6. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/cty.json +1 -1
  7. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/main.ui +94 -94
  8. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/settings.ui +5 -5
  9. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/lib/cat_interface.py +20 -0
  10. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/lib/ham_utility.py +1 -1
  11. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/lib/n1mm.py +23 -0
  12. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/lib/version.py +1 -1
  13. not1mm-24.7.13/not1mm/plugins/k1usn_sst.py +367 -0
  14. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/plugins/phone_weekly_test.py +1 -1
  15. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm.egg-info/PKG-INFO +73 -27
  16. {not1mm-24.6.1 → not1mm-24.7.13}/pyproject.toml +1 -1
  17. not1mm-24.6.1/not1mm/plugins/k1usn_sst.py +0 -24
  18. {not1mm-24.6.1 → not1mm-24.7.13}/LICENSE +0 -0
  19. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/__init__.py +0 -0
  20. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/bandmap.py +0 -0
  21. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/checkwindow.py +0 -0
  22. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/JetBrainsMono-Regular.ttf +0 -0
  23. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/about.ui +0 -0
  24. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/alpha bravo charlie delta.txt +0 -0
  25. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/bandmap.ui +0 -0
  26. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/check.png +0 -0
  27. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/checkwindow.ui +0 -0
  28. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/contests.sql +0 -0
  29. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/cwmacros.txt +0 -0
  30. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/donors.html +0 -0
  31. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/editcontact.ui +0 -0
  32. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/editmacro.ui +0 -0
  33. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/greendot.png +0 -0
  34. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/k6gte-not1mm.desktop +0 -0
  35. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/k6gte.not1mm-128.png +0 -0
  36. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/k6gte.not1mm-32.png +0 -0
  37. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/k6gte.not1mm-64.png +0 -0
  38. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/logwindow.ui +0 -0
  39. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/logwindowx.ui +0 -0
  40. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/new_contest.ui +0 -0
  41. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/not1mm.html +0 -0
  42. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/opon.ui +0 -0
  43. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/0.wav +0 -0
  44. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/1.wav +0 -0
  45. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/2.wav +0 -0
  46. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/3.wav +0 -0
  47. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/4.wav +0 -0
  48. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/5.wav +0 -0
  49. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/6.wav +0 -0
  50. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/7.wav +0 -0
  51. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/73.wav +0 -0
  52. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/8.wav +0 -0
  53. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/9.wav +0 -0
  54. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/a.wav +0 -0
  55. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/again.wav +0 -0
  56. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/b.wav +0 -0
  57. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/c.wav +0 -0
  58. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/contest.wav +0 -0
  59. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/cq.wav +0 -0
  60. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/d.wav +0 -0
  61. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/e.wav +0 -0
  62. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/f.wav +0 -0
  63. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/g.wav +0 -0
  64. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/h.wav +0 -0
  65. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/i.wav +0 -0
  66. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/j.wav +0 -0
  67. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/k.wav +0 -0
  68. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/k6gte.wav +0 -0
  69. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/l.wav +0 -0
  70. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/m.wav +0 -0
  71. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/mynumber.wav +0 -0
  72. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/n.wav +0 -0
  73. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/nil.wav +0 -0
  74. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/o.wav +0 -0
  75. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/p.wav +0 -0
  76. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/q.wav +0 -0
  77. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/r.wav +0 -0
  78. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/roger.wav +0 -0
  79. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/s.wav +0 -0
  80. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/space.wav +0 -0
  81. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/t.wav +0 -0
  82. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/thankyou.wav +0 -0
  83. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/thankyouqrz.wav +0 -0
  84. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/u.wav +0 -0
  85. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/v.wav +0 -0
  86. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/w.wav +0 -0
  87. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/x.wav +0 -0
  88. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/y.wav +0 -0
  89. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/yourcall.wav +0 -0
  90. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/phonetics/z.wav +0 -0
  91. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/pickcontest.ui +0 -0
  92. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/radio_green.png +0 -0
  93. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/radio_grey.png +0 -0
  94. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/radio_red.png +0 -0
  95. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/reddot.png +0 -0
  96. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/ssbmacros.txt +0 -0
  97. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/data/vfo.ui +0 -0
  98. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/fsutils.py +0 -0
  99. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/lib/__init__.py +0 -0
  100. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/lib/about.py +0 -0
  101. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/lib/cwinterface.py +0 -0
  102. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/lib/database.py +0 -0
  103. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/lib/edit_contact.py +0 -0
  104. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/lib/edit_macro.py +0 -0
  105. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/lib/edit_opon.py +0 -0
  106. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/lib/edit_station.py +0 -0
  107. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/lib/ft8_watcher.py +0 -0
  108. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/lib/lookup.py +0 -0
  109. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/lib/multicast.py +0 -0
  110. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/lib/new_contest.py +0 -0
  111. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/lib/playsound.py +0 -0
  112. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/lib/plugin_common.py +0 -0
  113. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/lib/select_contest.py +0 -0
  114. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/lib/settings.py +0 -0
  115. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/lib/super_check_partial.py +0 -0
  116. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/lib/versiontest.py +0 -0
  117. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/logwindow.py +0 -0
  118. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/playsoundtest.py +0 -0
  119. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/plugins/10_10_fall_cw.py +0 -0
  120. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/plugins/10_10_spring_cw.py +0 -0
  121. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/plugins/10_10_summer_phone.py +0 -0
  122. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/plugins/10_10_winter_phone.py +0 -0
  123. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/plugins/__init__.py +0 -0
  124. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/plugins/arrl_10m.py +0 -0
  125. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/plugins/arrl_dx_cw.py +0 -0
  126. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/plugins/arrl_dx_ssb.py +0 -0
  127. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/plugins/arrl_field_day.py +0 -0
  128. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/plugins/arrl_rtty_ru.py +0 -0
  129. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/plugins/arrl_ss_cw.py +0 -0
  130. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/plugins/arrl_ss_phone.py +0 -0
  131. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/plugins/arrl_vhf_jan.py +0 -0
  132. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/plugins/arrl_vhf_jun.py +0 -0
  133. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/plugins/arrl_vhf_sep.py +0 -0
  134. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/plugins/canada_day.py +0 -0
  135. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/plugins/cq_160_cw.py +0 -0
  136. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/plugins/cq_160_ssb.py +0 -0
  137. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/plugins/cq_wpx_cw.py +0 -0
  138. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/plugins/cq_wpx_ssb.py +0 -0
  139. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/plugins/cq_ww_cw.py +0 -0
  140. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/plugins/cq_ww_ssb.py +0 -0
  141. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/plugins/cwt.py +0 -0
  142. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/plugins/general_logging.py +0 -0
  143. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/plugins/iaru_hf.py +0 -0
  144. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/plugins/icwc_mst.py +0 -0
  145. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/plugins/jidx_cw.py +0 -0
  146. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/plugins/jidx_ph.py +0 -0
  147. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/plugins/naqp_cw.py +0 -0
  148. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/plugins/naqp_ssb.py +0 -0
  149. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/plugins/stew_perry_topband.py +0 -0
  150. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/plugins/winter_field_day.py +0 -0
  151. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/radio.py +0 -0
  152. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/vfo.py +0 -0
  153. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm/voice_keying.py +0 -0
  154. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm.egg-info/SOURCES.txt +0 -0
  155. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm.egg-info/dependency_links.txt +0 -0
  156. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm.egg-info/entry_points.txt +0 -0
  157. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm.egg-info/requires.txt +0 -0
  158. {not1mm-24.6.1 → not1mm-24.7.13}/not1mm.egg-info/top_level.txt +0 -0
  159. {not1mm-24.6.1 → not1mm-24.7.13}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: not1mm
3
- Version: 24.6.1
3
+ Version: 24.7.13
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
@@ -44,9 +44,19 @@ Requires-Dist: Levenshtein
44
44
  [![Code Maturity:Snot Nosed](https://img.shields.io/badge/Code%20Maturity-Snot%20Nosed-red)](https://xkcd.com/1695/)
45
45
  [![PyPI - Downloads](https://img.shields.io/pypi/dm/not1mm)](https://pypi.org/project/not1mm/)
46
46
 
47
+ ![main screen](https://github.com/mbridak/not1mm/raw/master/pic/main.png)
48
+
47
49
  - [Not1MM](#not1mm)
48
50
  - [What and why is Not1MM](#what-and-why-is-not1mm)
51
+ - [The elephant in the room](#the-elephant-in-the-room)
52
+ - [The What](#the-what)
53
+ - [Target Environment](#target-environment)
54
+ - [The Why](#the-why)
55
+ - [General logging](#general-logging)
49
56
  - [Current state](#current-state)
57
+ - [Code maturity](#code-maturity)
58
+ - [Data and RTTY](#data-and-rtty)
59
+ - [Other not so supported contests](#other-not-so-supported-contests)
50
60
  - [Our Code Contributors ✨](#our-code-contributors-)
51
61
  - [List of should be working contests](#list-of-should-be-working-contests)
52
62
  - [Recent Changes](#recent-changes)
@@ -67,17 +77,18 @@ Requires-Dist: Levenshtein
67
77
  - [After the install](#after-the-install)
68
78
  - [You may or may not get a warning message like](#you-may-or-may-not-get-a-warning-message-like)
69
79
  - [Or this fan favorite](#or-this-fan-favorite)
80
+ - [Update your CTY and SCP files](#update-your-cty-and-scp-files)
70
81
  - [Various data file locations](#various-data-file-locations)
71
82
  - [Data](#data)
72
83
  - [Config](#config)
73
- - [The database](#the-database)
84
+ - [The Database](#the-database)
74
85
  - [Why](#why)
75
- - [The first one](#the-first-one)
86
+ - [The first one is free](#the-first-one-is-free)
76
87
  - [Why limit yourself](#why-limit-yourself)
77
88
  - [Revisiting an old friend](#revisiting-an-old-friend)
78
- - [Station Settings dialog (REQUIRED)](#station-settings-dialog-required)
89
+ - [Station Settings dialog (It's REQUIRED Russ)](#station-settings-dialog-its-required-russ)
79
90
  - [Changing station information](#changing-station-information)
80
- - [Selecting a contest (REQUIRED)](#selecting-a-contest-required)
91
+ - [Selecting a contest (It's REQUIRED Russ)](#selecting-a-contest-its-required-russ)
81
92
  - [Selecting a new contest](#selecting-a-new-contest)
82
93
  - [Selecting an existing contest as the current contest](#selecting-an-existing-contest-as-the-current-contest)
83
94
  - [Editing existing contest parameters](#editing-existing-contest-parameters)
@@ -113,34 +124,64 @@ Requires-Dist: Levenshtein
113
124
 
114
125
  ## What and why is Not1MM
115
126
 
127
+ ### The elephant in the room
128
+
116
129
  Not1MM's interface is a blatant ripoff of N1MM. It is NOT N1MM and any problem
117
130
  you have with this software should in no way reflect on their software.
118
131
 
119
- If you use Windows(tm), you should run away from Not1MM and use someother
120
- program.
132
+ ### The What
133
+
134
+ Not1MM attempts to be a useable amateur radio, or HAM, contest logger. It's
135
+ written in Python, 3.9+, and uses Qt6 framework for the graphical interface
136
+ and SQLite for the database.
137
+
138
+ ### Target Environment
121
139
 
122
- I personally don't use Windows(tm). While it may be possible to get N1MM working
123
- under Wine, I haven't checked. I'd rather not have to jump thru the hoops.
140
+ The primary target for this application is Linux. It may be able to run on other
141
+ platforms, BSD, Mac and Windows. But I don't have a way, or desire, to directly
142
+ support them.
124
143
 
125
- **Currently this exists for my own personal amusement**. Something to do in my
126
- free time. While I'm not watching TV, Right vs Left political 'News' programs,
127
- mind numbing 'Reality' shows etc...
144
+ ### The Why
145
+
146
+ **Currently this exists for my own personal amusement**. I've recently retired
147
+ after 35+ years working for 'The Phone Company', GTE -> Verizon -> Frontier.
148
+ And being a Gentleman of Leisure, needed something to do in my free time.
149
+ I'm a casual contester and could not find any contesting software for Linux that
150
+ I wanted to use. There is [Tucnak](http://tucnak.nagano.cz/) which is very robust
151
+ and mature. It just wasn't for me.
152
+
153
+ ### General logging
154
+
155
+ In short... Don't. There are much better general purpose QSO logging programs.
156
+ Try QLog or CQRLog.
128
157
 
129
158
  ## Current state
130
159
 
131
- The current state is "**BETA**". I've used it for a few contests, and was able
132
- to work contacts and submit a cabrillo at the end. I'm not a "Contester". So
133
- I'll add contests as/if I work them. I'm only one guy, so if you see a bug let
134
- me know. I don't do much of any Data or RTTY operating. This is why you don't
135
- see RTTY in the list of working contests. The Lord helps those who burn people
136
- at the... I mean who help themselves. Feel free to fill in that hole with a pull
137
- request.
160
+ ### Code maturity
138
161
 
139
- ![main screen](https://github.com/mbridak/not1mm/raw/master/pic/main.png)
162
+ The current state is "**BETA**".
163
+
164
+ I've used it for quite a few contests, and was able to work contacts and submit
165
+ cabrillos at the end. There are still quite a few features I'd like to implement.
166
+ And "BETA" is a sort of get out of jail free badge for coders. A safety net for
167
+ when the program craps the bed. I'm only one guy, so if you see a bug let me know.
168
+
169
+ ### Data and RTTY
170
+
171
+ I don't do much of any digital or RTTY operating. This is why you don't see RTTY in
172
+ the list of working contests. The Lord helps those who burn people at the... I
173
+ mean, who help themselves. Feel free to fill in that hole with a pull request.
174
+
175
+ ### Other not so supported contests
176
+
177
+ Of note, state QSO parties. I haven't worked any yet. And no one has submitted a PR
178
+ adding one... So there you go. In the near future I'll probably add California, guess
179
+ where I live, and the 4 states QSO party.
140
180
 
141
181
  ## Our Code Contributors ✨
142
182
 
143
- I wish to thank those who've contributed to the project.
183
+ I wish to thank those who've contributed to the project. Below is an automatically
184
+ generated, 'cause I'm lazy, list of those who've submitted PR's.
144
185
 
145
186
  <a href="https://github.com/mbridak/not1mm/graphs/contributors">
146
187
  <img src="https://contrib.rocks/image?repo=mbridak/not1mm" alt="Avatar icons for code contributors." />
@@ -182,7 +223,7 @@ I wish to thank those who've contributed to the project.
182
223
 
183
224
  ## Recent Changes
184
225
 
185
- - [24-6-1] Added leading zeros to S/N's less than 100.
226
+ - [24-7-13] Trap Exceptions in flrig xmlrpc client.
186
227
 
187
228
  See [CHANGELOG.md](CHANGELOG.md) for prior changes.
188
229
 
@@ -243,7 +284,7 @@ source .profile
243
284
 
244
285
  </details>
245
286
 
246
- <details>
287
+ <details>REQUIRED
247
288
 
248
289
  <summary><b>Fedora 38, 39 and 40</b></summary>
249
290
 
@@ -394,6 +435,11 @@ For a more permanent solution you can place the line
394
435
  `export QT_QPA_PLATFORM=wayland` in your home directories .bashrc file. Then
395
436
  after logging out and back in you should be able to launch it normally.
396
437
 
438
+ ### Update your CTY and SCP files
439
+
440
+ After all the configuration stuff below and before operating in a contest, you
441
+ might want to update the CTY and SCP files. You can do this by choosing FILE->Update CTY and FILE->Update MASTER.SCP
442
+
397
443
  ## Various data file locations
398
444
 
399
445
  ### Data
@@ -407,7 +453,7 @@ CW macro files can be found there. Otherwise they will be found at
407
453
  Configuration file(s) can be found at the location defined by `XDG_CONFIG_HOME`.
408
454
  Otherwise they will be found at `yourhome/.config/not1mm`
409
455
 
410
- ## The database
456
+ ## The Database
411
457
 
412
458
  ### Why
413
459
 
@@ -417,7 +463,7 @@ everything shown in the Station Settings dialog. You can have one database for
417
463
  the rest of your life. Filled with hundreds of contests you've logged. Or, you
418
464
  can create a new database to hold just one contest. You do You Boo.
419
465
 
420
- ### The first one
466
+ ### The first one is free
421
467
 
422
468
  On the initial running, a database is created for you called `ham.db`. This, and
423
469
  all future databases, are located in the data directory mentioned above.
@@ -433,7 +479,7 @@ day for all I care. You can manage your own digital disaster.
433
479
  You can select a previously created databases for use by selecting
434
480
  `File` > `Open Database`.
435
481
 
436
- ## Station Settings dialog (REQUIRED)
482
+ ## Station Settings dialog (It's REQUIRED Russ)
437
483
 
438
484
  After initial run of the program or creating a new database you will need to
439
485
  fill out the Station Settings dialog that will pop up.
@@ -453,7 +499,7 @@ You can fill. You can fill. Everyone look at your keys.
453
499
  Station information can be changed any time by going to
454
500
  `File` > `Station Settings` and editing the information.
455
501
 
456
- ## Selecting a contest (REQUIRED)
502
+ ## Selecting a contest (It's REQUIRED Russ)
457
503
 
458
504
  ### Selecting a new contest
459
505
 
@@ -12,9 +12,19 @@
12
12
  [![Code Maturity:Snot Nosed](https://img.shields.io/badge/Code%20Maturity-Snot%20Nosed-red)](https://xkcd.com/1695/)
13
13
  [![PyPI - Downloads](https://img.shields.io/pypi/dm/not1mm)](https://pypi.org/project/not1mm/)
14
14
 
15
+ ![main screen](https://github.com/mbridak/not1mm/raw/master/pic/main.png)
16
+
15
17
  - [Not1MM](#not1mm)
16
18
  - [What and why is Not1MM](#what-and-why-is-not1mm)
19
+ - [The elephant in the room](#the-elephant-in-the-room)
20
+ - [The What](#the-what)
21
+ - [Target Environment](#target-environment)
22
+ - [The Why](#the-why)
23
+ - [General logging](#general-logging)
17
24
  - [Current state](#current-state)
25
+ - [Code maturity](#code-maturity)
26
+ - [Data and RTTY](#data-and-rtty)
27
+ - [Other not so supported contests](#other-not-so-supported-contests)
18
28
  - [Our Code Contributors ✨](#our-code-contributors-)
19
29
  - [List of should be working contests](#list-of-should-be-working-contests)
20
30
  - [Recent Changes](#recent-changes)
@@ -35,17 +45,18 @@
35
45
  - [After the install](#after-the-install)
36
46
  - [You may or may not get a warning message like](#you-may-or-may-not-get-a-warning-message-like)
37
47
  - [Or this fan favorite](#or-this-fan-favorite)
48
+ - [Update your CTY and SCP files](#update-your-cty-and-scp-files)
38
49
  - [Various data file locations](#various-data-file-locations)
39
50
  - [Data](#data)
40
51
  - [Config](#config)
41
- - [The database](#the-database)
52
+ - [The Database](#the-database)
42
53
  - [Why](#why)
43
- - [The first one](#the-first-one)
54
+ - [The first one is free](#the-first-one-is-free)
44
55
  - [Why limit yourself](#why-limit-yourself)
45
56
  - [Revisiting an old friend](#revisiting-an-old-friend)
46
- - [Station Settings dialog (REQUIRED)](#station-settings-dialog-required)
57
+ - [Station Settings dialog (It's REQUIRED Russ)](#station-settings-dialog-its-required-russ)
47
58
  - [Changing station information](#changing-station-information)
48
- - [Selecting a contest (REQUIRED)](#selecting-a-contest-required)
59
+ - [Selecting a contest (It's REQUIRED Russ)](#selecting-a-contest-its-required-russ)
49
60
  - [Selecting a new contest](#selecting-a-new-contest)
50
61
  - [Selecting an existing contest as the current contest](#selecting-an-existing-contest-as-the-current-contest)
51
62
  - [Editing existing contest parameters](#editing-existing-contest-parameters)
@@ -81,34 +92,64 @@
81
92
 
82
93
  ## What and why is Not1MM
83
94
 
95
+ ### The elephant in the room
96
+
84
97
  Not1MM's interface is a blatant ripoff of N1MM. It is NOT N1MM and any problem
85
98
  you have with this software should in no way reflect on their software.
86
99
 
87
- If you use Windows(tm), you should run away from Not1MM and use someother
88
- program.
100
+ ### The What
101
+
102
+ Not1MM attempts to be a useable amateur radio, or HAM, contest logger. It's
103
+ written in Python, 3.9+, and uses Qt6 framework for the graphical interface
104
+ and SQLite for the database.
105
+
106
+ ### Target Environment
89
107
 
90
- I personally don't use Windows(tm). While it may be possible to get N1MM working
91
- under Wine, I haven't checked. I'd rather not have to jump thru the hoops.
108
+ The primary target for this application is Linux. It may be able to run on other
109
+ platforms, BSD, Mac and Windows. But I don't have a way, or desire, to directly
110
+ support them.
92
111
 
93
- **Currently this exists for my own personal amusement**. Something to do in my
94
- free time. While I'm not watching TV, Right vs Left political 'News' programs,
95
- mind numbing 'Reality' shows etc...
112
+ ### The Why
113
+
114
+ **Currently this exists for my own personal amusement**. I've recently retired
115
+ after 35+ years working for 'The Phone Company', GTE -> Verizon -> Frontier.
116
+ And being a Gentleman of Leisure, needed something to do in my free time.
117
+ I'm a casual contester and could not find any contesting software for Linux that
118
+ I wanted to use. There is [Tucnak](http://tucnak.nagano.cz/) which is very robust
119
+ and mature. It just wasn't for me.
120
+
121
+ ### General logging
122
+
123
+ In short... Don't. There are much better general purpose QSO logging programs.
124
+ Try QLog or CQRLog.
96
125
 
97
126
  ## Current state
98
127
 
99
- The current state is "**BETA**". I've used it for a few contests, and was able
100
- to work contacts and submit a cabrillo at the end. I'm not a "Contester". So
101
- I'll add contests as/if I work them. I'm only one guy, so if you see a bug let
102
- me know. I don't do much of any Data or RTTY operating. This is why you don't
103
- see RTTY in the list of working contests. The Lord helps those who burn people
104
- at the... I mean who help themselves. Feel free to fill in that hole with a pull
105
- request.
128
+ ### Code maturity
106
129
 
107
- ![main screen](https://github.com/mbridak/not1mm/raw/master/pic/main.png)
130
+ The current state is "**BETA**".
131
+
132
+ I've used it for quite a few contests, and was able to work contacts and submit
133
+ cabrillos at the end. There are still quite a few features I'd like to implement.
134
+ And "BETA" is a sort of get out of jail free badge for coders. A safety net for
135
+ when the program craps the bed. I'm only one guy, so if you see a bug let me know.
136
+
137
+ ### Data and RTTY
138
+
139
+ I don't do much of any digital or RTTY operating. This is why you don't see RTTY in
140
+ the list of working contests. The Lord helps those who burn people at the... I
141
+ mean, who help themselves. Feel free to fill in that hole with a pull request.
142
+
143
+ ### Other not so supported contests
144
+
145
+ Of note, state QSO parties. I haven't worked any yet. And no one has submitted a PR
146
+ adding one... So there you go. In the near future I'll probably add California, guess
147
+ where I live, and the 4 states QSO party.
108
148
 
109
149
  ## Our Code Contributors ✨
110
150
 
111
- I wish to thank those who've contributed to the project.
151
+ I wish to thank those who've contributed to the project. Below is an automatically
152
+ generated, 'cause I'm lazy, list of those who've submitted PR's.
112
153
 
113
154
  <a href="https://github.com/mbridak/not1mm/graphs/contributors">
114
155
  <img src="https://contrib.rocks/image?repo=mbridak/not1mm" alt="Avatar icons for code contributors." />
@@ -150,7 +191,7 @@ I wish to thank those who've contributed to the project.
150
191
 
151
192
  ## Recent Changes
152
193
 
153
- - [24-6-1] Added leading zeros to S/N's less than 100.
194
+ - [24-7-13] Trap Exceptions in flrig xmlrpc client.
154
195
 
155
196
  See [CHANGELOG.md](CHANGELOG.md) for prior changes.
156
197
 
@@ -211,7 +252,7 @@ source .profile
211
252
 
212
253
  </details>
213
254
 
214
- <details>
255
+ <details>REQUIRED
215
256
 
216
257
  <summary><b>Fedora 38, 39 and 40</b></summary>
217
258
 
@@ -362,6 +403,11 @@ For a more permanent solution you can place the line
362
403
  `export QT_QPA_PLATFORM=wayland` in your home directories .bashrc file. Then
363
404
  after logging out and back in you should be able to launch it normally.
364
405
 
406
+ ### Update your CTY and SCP files
407
+
408
+ After all the configuration stuff below and before operating in a contest, you
409
+ might want to update the CTY and SCP files. You can do this by choosing FILE->Update CTY and FILE->Update MASTER.SCP
410
+
365
411
  ## Various data file locations
366
412
 
367
413
  ### Data
@@ -375,7 +421,7 @@ CW macro files can be found there. Otherwise they will be found at
375
421
  Configuration file(s) can be found at the location defined by `XDG_CONFIG_HOME`.
376
422
  Otherwise they will be found at `yourhome/.config/not1mm`
377
423
 
378
- ## The database
424
+ ## The Database
379
425
 
380
426
  ### Why
381
427
 
@@ -385,7 +431,7 @@ everything shown in the Station Settings dialog. You can have one database for
385
431
  the rest of your life. Filled with hundreds of contests you've logged. Or, you
386
432
  can create a new database to hold just one contest. You do You Boo.
387
433
 
388
- ### The first one
434
+ ### The first one is free
389
435
 
390
436
  On the initial running, a database is created for you called `ham.db`. This, and
391
437
  all future databases, are located in the data directory mentioned above.
@@ -401,7 +447,7 @@ day for all I care. You can manage your own digital disaster.
401
447
  You can select a previously created databases for use by selecting
402
448
  `File` > `Open Database`.
403
449
 
404
- ## Station Settings dialog (REQUIRED)
450
+ ## Station Settings dialog (It's REQUIRED Russ)
405
451
 
406
452
  After initial run of the program or creating a new database you will need to
407
453
  fill out the Station Settings dialog that will pop up.
@@ -421,7 +467,7 @@ You can fill. You can fill. Everyone look at your keys.
421
467
  Station information can be changed any time by going to
422
468
  `File` > `Station Settings` and editing the information.
423
469
 
424
- ## Selecting a contest (REQUIRED)
470
+ ## Selecting a contest (It's REQUIRED Russ)
425
471
 
426
472
  ### Selecting a new contest
427
473
 
@@ -2863,7 +2863,7 @@ class MainWindow(QtWidgets.QMainWindow):
2863
2863
  None
2864
2864
  """
2865
2865
 
2866
- if mode == "CW":
2866
+ if mode in ("CW", "CW-U", "CW-L"):
2867
2867
  self.setmode("CW")
2868
2868
  self.radio_state["mode"] = "CW"
2869
2869
  if self.rig_control:
@@ -3015,7 +3015,7 @@ class MainWindow(QtWidgets.QMainWindow):
3015
3015
 
3016
3016
  def setmode(self, mode: str) -> None:
3017
3017
  """Call when the mode changes."""
3018
- if mode == "CW":
3018
+ if mode in ("CW", "CW-U", "CW-L"):
3019
3019
  if self.current_mode != "CW":
3020
3020
  self.current_mode = "CW"
3021
3021
  self.sent.setText("599")
@@ -3032,7 +3032,7 @@ class MainWindow(QtWidgets.QMainWindow):
3032
3032
  self.receive.setText("59")
3033
3033
  self.read_cw_macros()
3034
3034
  return
3035
- if mode == "RTTY":
3035
+ if mode in ("RTTY", "DIGI-U", "DIGI-L"):
3036
3036
  if self.current_mode != "RTTY":
3037
3037
  self.current_mode = "RTTY"
3038
3038
  self.sent.setText("59")
@@ -3145,7 +3145,7 @@ class MainWindow(QtWidgets.QMainWindow):
3145
3145
  info_dirty = True
3146
3146
  self.radio_state["bw"] = bw
3147
3147
 
3148
- if mode == "CW":
3148
+ if mode in ("CW", "CW-U", "CW-L"):
3149
3149
  self.setmode(mode)
3150
3150
  if mode == "LSB" or mode == "USB":
3151
3151
  self.setmode("SSB")
@@ -3153,26 +3153,29 @@ class MainWindow(QtWidgets.QMainWindow):
3153
3153
  self.setmode("RTTY")
3154
3154
 
3155
3155
  if info_dirty:
3156
- logger.debug("VFO: %s MODE: %s BW: %s", vfo, mode, bw)
3157
- self.set_window_title()
3158
- cmd = {}
3159
- cmd["cmd"] = "RADIO_STATE"
3160
- cmd["station"] = platform.node()
3161
- cmd["band"] = band
3162
- cmd["vfoa"] = vfo
3163
- cmd["mode"] = mode
3164
- cmd["bw"] = bw
3165
- self.multicast_interface.send_as_json(cmd)
3166
- if self.n1mm:
3167
- if self.n1mm.send_radio_packets:
3168
- self.n1mm.radio_info["Freq"] = vfo[:-1]
3169
- self.n1mm.radio_info["TXFreq"] = vfo[:-1]
3170
- self.n1mm.radio_info["Mode"] = mode
3171
- self.n1mm.radio_info["OpCall"] = self.current_op
3172
- self.n1mm.radio_info["IsRunning"] = str(
3173
- self.pref.get("run_state", False)
3174
- )
3175
- self.n1mm.send_radio()
3156
+ try:
3157
+ logger.debug("VFO: %s MODE: %s BW: %s", vfo, mode, bw)
3158
+ self.set_window_title()
3159
+ cmd = {}
3160
+ cmd["cmd"] = "RADIO_STATE"
3161
+ cmd["station"] = platform.node()
3162
+ cmd["band"] = band
3163
+ cmd["vfoa"] = vfo
3164
+ cmd["mode"] = mode
3165
+ cmd["bw"] = bw
3166
+ self.multicast_interface.send_as_json(cmd)
3167
+ if self.n1mm:
3168
+ if self.n1mm.send_radio_packets:
3169
+ self.n1mm.radio_info["Freq"] = vfo[:-1]
3170
+ self.n1mm.radio_info["TXFreq"] = vfo[:-1]
3171
+ self.n1mm.radio_info["Mode"] = mode
3172
+ self.n1mm.radio_info["OpCall"] = self.current_op
3173
+ self.n1mm.radio_info["IsRunning"] = str(
3174
+ self.pref.get("run_state", False)
3175
+ )
3176
+ self.n1mm.send_radio()
3177
+ except TypeError as err:
3178
+ logger.debug(f"{err=} {vfo=} {the_dict=}")
3176
3179
 
3177
3180
  def edit_cw_macros(self) -> None:
3178
3181
  """