not1mm 24.4.9.3__tar.gz → 24.4.15__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 (153) hide show
  1. {not1mm-24.4.9.3 → not1mm-24.4.15}/PKG-INFO +4 -2
  2. {not1mm-24.4.9.3 → not1mm-24.4.15}/README.md +3 -1
  3. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/__main__.py +10 -3
  4. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/checkwindow.py +21 -17
  5. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/main.ui +11 -1
  6. not1mm-24.4.15/not1mm/lib/version.py +3 -0
  7. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm.egg-info/PKG-INFO +4 -2
  8. {not1mm-24.4.9.3 → not1mm-24.4.15}/pyproject.toml +1 -1
  9. not1mm-24.4.9.3/not1mm/lib/version.py +0 -3
  10. {not1mm-24.4.9.3 → not1mm-24.4.15}/LICENSE +0 -0
  11. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/__init__.py +0 -0
  12. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/bandmap.py +0 -0
  13. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/JetBrainsMono-Regular.ttf +0 -0
  14. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/MASTER.SCP +0 -0
  15. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/about.ui +0 -0
  16. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/alpha bravo charlie delta.txt +0 -0
  17. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/bandmap.ui +0 -0
  18. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/check.png +0 -0
  19. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/checkwindow.ui +0 -0
  20. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/configuration.ui +0 -0
  21. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/contests.sql +0 -0
  22. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/cty.json +0 -0
  23. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/cwmacros.txt +0 -0
  24. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/donors.html +0 -0
  25. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/editcontact.ui +0 -0
  26. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/editmacro.ui +0 -0
  27. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/greendot.png +0 -0
  28. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/k6gte-not1mm.desktop +0 -0
  29. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/k6gte.not1mm-128.png +0 -0
  30. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/k6gte.not1mm-32.png +0 -0
  31. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/k6gte.not1mm-64.png +0 -0
  32. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/logwindow.ui +0 -0
  33. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/logwindowx.ui +0 -0
  34. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/new_contest.ui +0 -0
  35. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/not1mm.html +0 -0
  36. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/opon.ui +0 -0
  37. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/0.wav +0 -0
  38. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/1.wav +0 -0
  39. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/2.wav +0 -0
  40. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/3.wav +0 -0
  41. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/4.wav +0 -0
  42. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/5.wav +0 -0
  43. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/6.wav +0 -0
  44. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/7.wav +0 -0
  45. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/73.wav +0 -0
  46. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/8.wav +0 -0
  47. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/9.wav +0 -0
  48. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/a.wav +0 -0
  49. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/again.wav +0 -0
  50. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/b.wav +0 -0
  51. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/c.wav +0 -0
  52. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/contest.wav +0 -0
  53. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/cq.wav +0 -0
  54. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/d.wav +0 -0
  55. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/e.wav +0 -0
  56. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/f.wav +0 -0
  57. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/g.wav +0 -0
  58. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/h.wav +0 -0
  59. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/i.wav +0 -0
  60. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/j.wav +0 -0
  61. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/k.wav +0 -0
  62. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/k6gte.wav +0 -0
  63. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/l.wav +0 -0
  64. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/m.wav +0 -0
  65. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/mynumber.wav +0 -0
  66. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/n.wav +0 -0
  67. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/nil.wav +0 -0
  68. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/o.wav +0 -0
  69. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/p.wav +0 -0
  70. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/q.wav +0 -0
  71. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/r.wav +0 -0
  72. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/roger.wav +0 -0
  73. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/s.wav +0 -0
  74. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/space.wav +0 -0
  75. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/t.wav +0 -0
  76. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/thankyou.wav +0 -0
  77. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/thankyouqrz.wav +0 -0
  78. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/u.wav +0 -0
  79. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/v.wav +0 -0
  80. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/w.wav +0 -0
  81. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/x.wav +0 -0
  82. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/y.wav +0 -0
  83. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/yourcall.wav +0 -0
  84. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/phonetics/z.wav +0 -0
  85. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/pickcontest.ui +0 -0
  86. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/radio_green.png +0 -0
  87. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/radio_grey.png +0 -0
  88. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/radio_red.png +0 -0
  89. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/reddot.png +0 -0
  90. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/settings.ui +0 -0
  91. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/ssbmacros.txt +0 -0
  92. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/data/vfo.ui +0 -0
  93. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/fsutils.py +0 -0
  94. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/lib/__init__.py +0 -0
  95. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/lib/about.py +0 -0
  96. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/lib/cat_interface.py +0 -0
  97. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/lib/cwinterface.py +0 -0
  98. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/lib/database.py +0 -0
  99. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/lib/edit_contact.py +0 -0
  100. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/lib/edit_macro.py +0 -0
  101. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/lib/edit_opon.py +0 -0
  102. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/lib/edit_station.py +0 -0
  103. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/lib/ft8_watcher.py +0 -0
  104. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/lib/ham_utility.py +0 -0
  105. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/lib/lookup.py +0 -0
  106. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/lib/multicast.py +0 -0
  107. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/lib/n1mm.py +0 -0
  108. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/lib/new_contest.py +0 -0
  109. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/lib/plugin_common.py +0 -0
  110. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/lib/select_contest.py +0 -0
  111. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/lib/settings.py +0 -0
  112. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/lib/super_check_partial.py +0 -0
  113. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/lib/versiontest.py +0 -0
  114. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/logwindow.py +0 -0
  115. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/plugins/10_10_fall_cw.py +0 -0
  116. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/plugins/10_10_spring_cw.py +0 -0
  117. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/plugins/10_10_summer_phone.py +0 -0
  118. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/plugins/10_10_winter_phone.py +0 -0
  119. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/plugins/__init__.py +0 -0
  120. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/plugins/arrl_10m.py +0 -0
  121. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/plugins/arrl_dx_cw.py +0 -0
  122. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/plugins/arrl_dx_ssb.py +0 -0
  123. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/plugins/arrl_field_day.py +0 -0
  124. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/plugins/arrl_rtty_ru.py +0 -0
  125. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/plugins/arrl_ss_cw.py +0 -0
  126. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/plugins/arrl_ss_phone.py +0 -0
  127. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/plugins/arrl_vhf_jan.py +0 -0
  128. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/plugins/arrl_vhf_jun.py +0 -0
  129. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/plugins/arrl_vhf_sep.py +0 -0
  130. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/plugins/canada_day.py +0 -0
  131. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/plugins/cq_160_cw.py +0 -0
  132. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/plugins/cq_160_ssb.py +0 -0
  133. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/plugins/cq_wpx_cw.py +0 -0
  134. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/plugins/cq_wpx_ssb.py +0 -0
  135. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/plugins/cq_ww_cw.py +0 -0
  136. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/plugins/cq_ww_ssb.py +0 -0
  137. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/plugins/cwt.py +0 -0
  138. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/plugins/general_logging.py +0 -0
  139. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/plugins/iaru_hf.py +0 -0
  140. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/plugins/jidx_cw.py +0 -0
  141. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/plugins/jidx_ph.py +0 -0
  142. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/plugins/naqp_cw.py +0 -0
  143. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/plugins/naqp_ssb.py +0 -0
  144. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/plugins/phone_weekly_test.py +0 -0
  145. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/plugins/stew_perry_topband.py +0 -0
  146. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/plugins/winter_field_day.py +0 -0
  147. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm/vfo.py +0 -0
  148. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm.egg-info/SOURCES.txt +0 -0
  149. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm.egg-info/dependency_links.txt +0 -0
  150. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm.egg-info/entry_points.txt +0 -0
  151. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm.egg-info/requires.txt +0 -0
  152. {not1mm-24.4.9.3 → not1mm-24.4.15}/not1mm.egg-info/top_level.txt +0 -0
  153. {not1mm-24.4.9.3 → not1mm-24.4.15}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: not1mm
3
- Version: 24.4.9.3
3
+ Version: 24.4.15
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
@@ -33,7 +33,7 @@ Requires-Dist: Levenshtein
33
33
  # Not1MM
34
34
 
35
35
  ![logo](https://github.com/mbridak/not1mm/raw/master/not1mm/data/k6gte.not1mm.svg)
36
-
36
+
37
37
  The worlds #1 unfinished contest logger <sup>*According to my daughter Corinna.<sup>
38
38
 
39
39
  [![PyPI](https://img.shields.io/pypi/v/not1mm)](https://pypi.org/project/not1mm/)
@@ -177,6 +177,8 @@ I wish to thank those who've contributed to the project.
177
177
 
178
178
  ## Recent Changes
179
179
 
180
+ - [24-4-15] checkwindow.py Tighter results. Changed the call selection to use a single click.
181
+ - [24-4-9-4] Check for portaudio instead of crash boom. Removed empty dockwidget. Tested on Plasma 6.
180
182
  - [24-4-9-3] Ugh. It's not a real day unless you forget to test.
181
183
  - [24-4-9-2] Put back the floatable dock widgets, 'cause Wayland strikes again.
182
184
  - [24-4-9-1] Removed DockWidgetFloatable from the dock widgets since my wee brain can't figure out how to add a dragable window frame to them once they are floating. Added a minimum size for the VFO LCD digits. Defaulted bandmap window to the right.
@@ -1,7 +1,7 @@
1
1
  # Not1MM
2
2
 
3
3
  ![logo](https://github.com/mbridak/not1mm/raw/master/not1mm/data/k6gte.not1mm.svg)
4
-
4
+
5
5
  The worlds #1 unfinished contest logger <sup>*According to my daughter Corinna.<sup>
6
6
 
7
7
  [![PyPI](https://img.shields.io/pypi/v/not1mm)](https://pypi.org/project/not1mm/)
@@ -145,6 +145,8 @@ I wish to thank those who've contributed to the project.
145
145
 
146
146
  ## Recent Changes
147
147
 
148
+ - [24-4-15] checkwindow.py Tighter results. Changed the call selection to use a single click.
149
+ - [24-4-9-4] Check for portaudio instead of crash boom. Removed empty dockwidget. Tested on Plasma 6.
148
150
  - [24-4-9-3] Ugh. It's not a real day unless you forget to test.
149
151
  - [24-4-9-2] Put back the floatable dock widgets, 'cause Wayland strikes again.
150
152
  - [24-4-9-1] Removed DockWidgetFloatable from the dock widgets since my wee brain can't figure out how to add a dragable window frame to them once they are floating. Added a minimum size for the VFO LCD digits. Defaulted bandmap window to the right.
@@ -28,7 +28,13 @@ from shutil import copyfile
28
28
 
29
29
  import notctyparser
30
30
  import psutil
31
- import sounddevice as sd
31
+
32
+ try:
33
+ import sounddevice as sd
34
+ except OSError as exception:
35
+ print(exception)
36
+ print("portaudio is not installed")
37
+ sd = None
32
38
  import soundfile as sf
33
39
  from PyQt6 import QtCore, QtGui, QtWidgets, uic
34
40
  from PyQt6.QtCore import QDir, Qt
@@ -200,8 +206,6 @@ class MainWindow(QtWidgets.QMainWindow):
200
206
  self.setCorner(Qt.Corner.BottomLeftCorner, Qt.DockWidgetArea.LeftDockWidgetArea)
201
207
  data_path = fsutils.APP_DATA_PATH / "main.ui"
202
208
  uic.loadUi(data_path, self)
203
- self.dockwidget = QtWidgets.QDockWidget(self)
204
- self.dockwidget.setAllowedAreas(Qt.DockWidgetArea.AllDockWidgetAreas)
205
209
  self.cw_entry.hide()
206
210
  self.leftdot.hide()
207
211
  self.rightdot.hide()
@@ -2269,6 +2273,9 @@ class MainWindow(QtWidgets.QMainWindow):
2269
2273
  """
2270
2274
 
2271
2275
  logger.debug("Voicing: %s", the_string)
2276
+ if sd is None:
2277
+ logger.warning("Sounddevice/portaudio not installed.")
2278
+ return
2272
2279
  op_path = fsutils.USER_DATA_PATH / self.current_op
2273
2280
  if "[" in the_string:
2274
2281
  sub_string = the_string.strip("[]").lower()
@@ -12,7 +12,7 @@ import queue
12
12
  from json import loads
13
13
  import Levenshtein
14
14
 
15
- from PyQt6 import QtGui, uic, QtCore
15
+ from PyQt6 import QtGui, uic
16
16
  from PyQt6.QtWidgets import QLabel, QVBoxLayout, QWidget, QDockWidget
17
17
  from PyQt6.QtGui import QMouseEvent, QColorConstants
18
18
 
@@ -258,39 +258,43 @@ class CheckWindow(QDockWidget):
258
258
  filter(lambda x: x, [x.get("callsign", None) for x in spots]),
259
259
  )
260
260
 
261
- def populate_layout(self, layout, call_list):
261
+ def populate_layout(self, layout, call_list) -> None:
262
+ """Apply blackmagic to a layout."""
262
263
  for i in reversed(range(layout.count())):
263
264
  if layout.itemAt(i).widget():
264
265
  layout.itemAt(i).widget().setParent(None)
265
266
  else:
266
267
  layout.removeItem(layout.itemAt(i))
267
- labels = []
268
+ call_items = []
268
269
  for call in call_list:
269
270
  if call:
270
271
  if self.call:
271
272
  label_text = ""
273
+ diff_score = 0
272
274
  for tag, i1, i2, j1, j2 in Levenshtein.opcodes(call, self.call):
273
- # logger.debug('{:7} a[{}:{}] --> b[{}:{}] {!r:>8} --> {!r}'.format(
274
- # tag, i1, i2, j1, j2, call[i1:i2], self.call[j1:j2]))
275
275
  if tag == "equal":
276
276
  label_text += call[i1:i2]
277
277
  continue
278
278
  elif tag == "replace":
279
279
  label_text += f"<span style='background-color: {self.character_remove_color};'>{call[i1:i2]}</span>"
280
+ diff_score += max((i2 - i1), (j2 - j1)) * (
281
+ len(call) + 1 - i2
282
+ )
280
283
  elif tag == "insert" or tag == "delete":
281
284
  label_text += f"<span style='background-color: {self.character_add_color};'>{call[i1:i2]}</span>"
282
- labels.append(
283
- (
284
- Levenshtein.hamming(call, self.call),
285
- CallLabel(
286
- label_text, call=call, callback=self.item_clicked
287
- ),
288
- )
289
- )
290
-
291
- for _, label in sorted(labels, key=lambda x: x[0]):
285
+ diff_score += max((i2 - i1), (j2 - j1)) * (len(call) - i2)
286
+ call_items.append((diff_score, label_text, call))
287
+
288
+ call_items = sorted(call_items, key=lambda x: x[0])
289
+ for i in reversed(range(layout.count())):
290
+ if layout.itemAt(i).widget():
291
+ layout.itemAt(i).widget().setParent(None)
292
+ else:
293
+ layout.removeItem(layout.itemAt(i))
294
+
295
+ for _, label_text, call in call_items:
296
+ label = CallLabel(label_text, call=call, callback=self.item_clicked)
292
297
  layout.addWidget(label)
293
- # top aligns
294
298
  layout.addStretch(0)
295
299
 
296
300
 
@@ -307,6 +311,6 @@ class CallLabel(QLabel):
307
311
  self.call = call
308
312
  self.callback = callback
309
313
 
310
- def mouseDoubleClickEvent(self, e: QMouseEvent) -> None:
314
+ def mouseReleaseEvent(self, e: QMouseEvent) -> None:
311
315
  if self.call and self.callback:
312
316
  self.callback(self.call)
@@ -31,6 +31,16 @@
31
31
  <property name="windowTitle">
32
32
  <string>Not1MM</string>
33
33
  </property>
34
+ <property name="windowIcon">
35
+ <iconset>
36
+ <normaloff>k6gte.not1mm-32.png</normaloff>k6gte.not1mm-32.png</iconset>
37
+ </property>
38
+ <property name="iconSize">
39
+ <size>
40
+ <width>32</width>
41
+ <height>32</height>
42
+ </size>
43
+ </property>
34
44
  <widget class="QWidget" name="centralwidget">
35
45
  <property name="enabled">
36
46
  <bool>true</bool>
@@ -1282,7 +1292,7 @@
1282
1292
  <x>0</x>
1283
1293
  <y>0</y>
1284
1294
  <width>878</width>
1285
- <height>30</height>
1295
+ <height>25</height>
1286
1296
  </rect>
1287
1297
  </property>
1288
1298
  <property name="nativeMenuBar">
@@ -0,0 +1,3 @@
1
+ """It's the version"""
2
+
3
+ __version__ = "24.4.15"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: not1mm
3
- Version: 24.4.9.3
3
+ Version: 24.4.15
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
@@ -33,7 +33,7 @@ Requires-Dist: Levenshtein
33
33
  # Not1MM
34
34
 
35
35
  ![logo](https://github.com/mbridak/not1mm/raw/master/not1mm/data/k6gte.not1mm.svg)
36
-
36
+
37
37
  The worlds #1 unfinished contest logger <sup>*According to my daughter Corinna.<sup>
38
38
 
39
39
  [![PyPI](https://img.shields.io/pypi/v/not1mm)](https://pypi.org/project/not1mm/)
@@ -177,6 +177,8 @@ I wish to thank those who've contributed to the project.
177
177
 
178
178
  ## Recent Changes
179
179
 
180
+ - [24-4-15] checkwindow.py Tighter results. Changed the call selection to use a single click.
181
+ - [24-4-9-4] Check for portaudio instead of crash boom. Removed empty dockwidget. Tested on Plasma 6.
180
182
  - [24-4-9-3] Ugh. It's not a real day unless you forget to test.
181
183
  - [24-4-9-2] Put back the floatable dock widgets, 'cause Wayland strikes again.
182
184
  - [24-4-9-1] Removed DockWidgetFloatable from the dock widgets since my wee brain can't figure out how to add a dragable window frame to them once they are floating. Added a minimum size for the VFO LCD digits. Defaulted bandmap window to the right.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "not1mm"
7
- version = "24.4.9.3"
7
+ version = "24.4.15"
8
8
  description = "NOT1MM Logger"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -1,3 +0,0 @@
1
- """It's the version"""
2
-
3
- __version__ = "24.4.9.3"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes