not1mm 24.3.15__py3-none-any.whl → 24.3.24__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.
Files changed (69) hide show
  1. not1mm/__main__.py +288 -124
  2. not1mm/bandmap.py +207 -191
  3. not1mm/checkwindow.py +62 -109
  4. not1mm/data/MASTER.SCP +1077 -749
  5. not1mm/data/bandmap.ui +4 -4
  6. not1mm/data/checkwindow.ui +9 -16
  7. not1mm/data/cty.json +1 -1
  8. not1mm/data/logwindow.ui +16 -11
  9. not1mm/data/main.ui +16 -6
  10. not1mm/data/vfo.ui +64 -52
  11. not1mm/fsutils.py +63 -0
  12. not1mm/lib/about.py +4 -2
  13. not1mm/lib/cat_interface.py +1 -1
  14. not1mm/lib/cwinterface.py +1 -1
  15. not1mm/lib/database.py +4 -4
  16. not1mm/lib/edit_contact.py +2 -2
  17. not1mm/lib/edit_macro.py +2 -3
  18. not1mm/lib/edit_opon.py +2 -2
  19. not1mm/lib/edit_station.py +3 -3
  20. not1mm/lib/ham_utility.py +1 -1
  21. not1mm/lib/lookup.py +1 -1
  22. not1mm/lib/multicast.py +9 -4
  23. not1mm/lib/n1mm.py +1 -1
  24. not1mm/lib/new_contest.py +2 -2
  25. not1mm/lib/plugin_common.py +3 -2
  26. not1mm/lib/select_contest.py +2 -2
  27. not1mm/lib/settings.py +3 -4
  28. not1mm/lib/super_check_partial.py +8 -5
  29. not1mm/lib/version.py +1 -1
  30. not1mm/logwindow.py +62 -105
  31. not1mm/plugins/10_10_fall_cw.py +3 -1
  32. not1mm/plugins/10_10_spring_cw.py +3 -1
  33. not1mm/plugins/10_10_summer_phone.py +3 -1
  34. not1mm/plugins/10_10_winter_phone.py +3 -1
  35. not1mm/plugins/arrl_10m.py +3 -1
  36. not1mm/plugins/arrl_dx_cw.py +3 -1
  37. not1mm/plugins/arrl_dx_ssb.py +3 -1
  38. not1mm/plugins/arrl_field_day.py +3 -1
  39. not1mm/plugins/arrl_ss_cw.py +3 -1
  40. not1mm/plugins/arrl_ss_phone.py +3 -1
  41. not1mm/plugins/arrl_vhf_jan.py +3 -1
  42. not1mm/plugins/arrl_vhf_jun.py +3 -1
  43. not1mm/plugins/arrl_vhf_sep.py +3 -1
  44. not1mm/plugins/canada_day.py +3 -1
  45. not1mm/plugins/cq_160_cw.py +4 -2
  46. not1mm/plugins/cq_160_ssb.py +4 -2
  47. not1mm/plugins/cq_wpx_cw.py +3 -1
  48. not1mm/plugins/cq_wpx_ssb.py +3 -1
  49. not1mm/plugins/cq_ww_cw.py +3 -1
  50. not1mm/plugins/cq_ww_ssb.py +3 -1
  51. not1mm/plugins/cwt.py +3 -1
  52. not1mm/plugins/general_logging.py +1 -1
  53. not1mm/plugins/iaru_hf.py +3 -1
  54. not1mm/plugins/jidx_cw.py +3 -1
  55. not1mm/plugins/jidx_ph.py +3 -1
  56. not1mm/plugins/naqp_cw.py +3 -1
  57. not1mm/plugins/naqp_ssb.py +3 -1
  58. not1mm/plugins/phone_weekly_test.py +3 -1
  59. not1mm/plugins/stew_perry_topband.py +3 -1
  60. not1mm/plugins/winter_field_day.py +3 -1
  61. not1mm/vfo.py +78 -98
  62. {not1mm-24.3.15.dist-info → not1mm-24.3.24.dist-info}/METADATA +68 -55
  63. {not1mm-24.3.15.dist-info → not1mm-24.3.24.dist-info}/RECORD +69 -67
  64. testing/detectdark.py +35 -0
  65. testing/test.py +13 -11
  66. {not1mm-24.3.15.dist-info → not1mm-24.3.24.dist-info}/LICENSE +0 -0
  67. {not1mm-24.3.15.dist-info → not1mm-24.3.24.dist-info}/WHEEL +0 -0
  68. {not1mm-24.3.15.dist-info → not1mm-24.3.24.dist-info}/entry_points.txt +0 -0
  69. {not1mm-24.3.15.dist-info → not1mm-24.3.24.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: not1mm
3
- Version: 24.3.15
3
+ Version: 24.3.24
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
@@ -27,6 +27,7 @@ Requires-Dist: soundfile
27
27
  Requires-Dist: numpy
28
28
  Requires-Dist: notctyparser >=23.6.21
29
29
  Requires-Dist: rapidfuzz
30
+ Requires-Dist: appdata
30
31
 
31
32
  # Not1MM
32
33
 
@@ -47,19 +48,16 @@ The worlds #1 unfinished contest logger <sup>*According to my daughter Corinna.<
47
48
  - [Our Code Contributors ✨](#our-code-contributors-)
48
49
  - [List of should be working contests](#list-of-should-be-working-contests)
49
50
  - [Recent Changes](#recent-changes)
50
- - [Installing from PyPi](#installing-from-pypi)
51
- - [Python and pip](#python-and-pip)
52
- - [Installing with pip](#installing-with-pip)
53
- - [Ubuntu 22.04 LTS](#ubuntu-2204-lts)
54
- - [Ubuntu 23.04](#ubuntu-2304)
55
- - [Fedora 38 \& 39](#fedora-38--39)
51
+ - [Installation](#installation)
52
+ - [Python, PyPI, pip and pipx](#python-pypi-pip-and-pipx)
53
+ - [Bootstrapping pipx](#bootstrapping-pipx)
54
+ - [Installing with pipx](#installing-with-pipx)
55
+ - [Installing portaudio](#installing-portaudio)
56
+ - [After install](#after-install)
56
57
  - [You may or may not get a warning message like](#you-may-or-may-not-get-a-warning-message-like)
57
58
  - [Or this fan favorite](#or-this-fan-favorite)
58
- - [Updating with pip/pipx](#updating-with-pippipx)
59
- - [Other Libraries](#other-libraries)
60
- - [Dark mode on Ubuntu](#dark-mode-on-ubuntu)
61
59
  - [Wayland Compositor](#wayland-compositor)
62
- - [Running from source](#running-from-source)
60
+ - [Running from source](#running-from-source)
63
61
  - [Various data file locations](#various-data-file-locations)
64
62
  - [Data](#data)
65
63
  - [Config](#config)
@@ -70,13 +68,14 @@ The worlds #1 unfinished contest logger <sup>*According to my daughter Corinna.<
70
68
  - [Revisiting an old friend](#revisiting-an-old-friend)
71
69
  - [Station Settings dialog (REQUIRED)](#station-settings-dialog-required)
72
70
  - [Changing station information](#changing-station-information)
73
- - [Adding a contest to the current dababase (REQUIRED)](#adding-a-contest-to-the-current-dababase-required)
74
- - [Selecting an existing contest as the current contest](#selecting-an-existing-contest-as-the-current-contest)
75
- - [Editing existing contest parameters](#editing-existing-contest-parameters)
71
+ - [Selecting a contest (REQUIRED)](#selecting-a-contest-required)
72
+ - [Selecting a new contest](#selecting-a-new-contest)
73
+ - [Selecting an existing contest as the current contest](#selecting-an-existing-contest-as-the-current-contest)
74
+ - [Editing existing contest parameters](#editing-existing-contest-parameters)
76
75
  - [Configuration Settings](#configuration-settings)
77
76
  - [Lookup](#lookup)
78
77
  - [Soundcard](#soundcard)
79
- - [CAT](#cat)
78
+ - [CAT Control](#cat-control)
80
79
  - [CW Keyer interface](#cw-keyer-interface)
81
80
  - [Cluster](#cluster)
82
81
  - [N1MM Packets](#n1mm-packets)
@@ -89,7 +88,7 @@ The worlds #1 unfinished contest logger <sup>*According to my daughter Corinna.<
89
88
  - [Other uses for the call field](#other-uses-for-the-call-field)
90
89
  - [Windows](#windows)
91
90
  - [The Main Window](#the-main-window)
92
- - [Keyboard commands](#keyboard-commands)
91
+ - [Keyboard commands](#keyboard-commands)
93
92
  - [Log Display](#log-display)
94
93
  - [Editing a contact](#editing-a-contact)
95
94
  - [Recalulate Mults](#recalulate-mults)
@@ -168,6 +167,11 @@ I wish to thank those who've contributed to the project.
168
167
 
169
168
  ## Recent Changes
170
169
 
170
+ - [24-3-24] Reworked fsutil.py to correct directory paths for Linux.
171
+ - [24-3-23] Yanked version 24-3-21, too many bugs for existing userbase.
172
+ - [24-3-21] Merged PR from @kyleboyle for docking windows. MacOS and Windows support.
173
+ - [24-3-19] Removed some useless bloat causing slow interface on FreeBSD 13/14 and maybe others.
174
+ - [24-3-16] Add Save/Fail confirmation dialogs when saving ADIF of Cabrillo files.
171
175
  - [24-3-15] Change 'CWR' to 'CW' in the ADIF output.
172
176
  - [24-3-13] Added CQ 160 CW and SSB
173
177
  - [24-3-9] Marked calls in the bandmap window colored Blue, until worked.
@@ -177,43 +181,64 @@ I wish to thank those who've contributed to the project.
177
181
 
178
182
  See [CHANGELOG.md](CHANGELOG.md) for prior changes.
179
183
 
180
- ## Installing from PyPi
184
+ ## Installation
181
185
 
182
- ### Python and pip
186
+ ### Python, PyPI, pip and pipx
183
187
 
184
- This software is a Python package hosted on PyPi, and installable with the pip or pipx command. If this is your first exposure to pip you can get all the details from [The PyPA](https://packaging.python.org/en/latest/tutorials/installing-packages/). In short, most linux distros come with Python pre installed. If pip is not installed by default, you can usually load it through your package manager. For example `sudo apt install python3-pip` or `sudo dnf install python3-pip`.
188
+ This software is a Python package hosted on PyPI, and installable with the pip or pipx command. If this is your first exposure to Python packaging you can get all the details from:
185
189
 
186
- ### Installing with pip
190
+ - [The PyPA](https://packaging.python.org/en/latest/tutorials/installing-packages/)
191
+ - [Install packages in a virtual environment using pip and venv](https://packaging.python.org/en/latest/guides/installing-using-pip-and-virtual-environments/)
192
+ - [Installing stand alone command line tools](https://packaging.python.org/en/latest/guides/installing-stand-alone-command-line-tools/)
187
193
 
188
- I've included what installation steps I took to install on fresh images of Ubuntu and Fedora below. YMMV.
194
+ In short, You should install stuff into a Python virtual environment. Newer Linux distros will make you do this unless you include a command line argument akin to '--break-my-system' when using pip. I'm not telling you to use pipx. But... **Use pipx**.
189
195
 
190
- #### Ubuntu 22.04 LTS
196
+ ### Bootstrapping pipx
197
+
198
+ Assuming you have only Python installed, your path to pipx is:
191
199
 
192
200
  ```bash
193
- sudo apt update
194
- sudo apt upgrade
195
- sudo apt install -y libportaudio2 python3-pip python3-pyqt5 python3-numpy adwaita-qt
196
- pip install -U not1mm
201
+ # First get pip installed. Either with apt or dnf, or the ensurepip command.
202
+ python3 -m ensurepip
203
+
204
+ # Update the pip that was just installed.
205
+ python3 -m pip install --upgrade pip
206
+
207
+ # Install pipx
208
+ python3 -m pip install --user pipx
209
+ python3 -m pipx ensurepath
197
210
  ```
198
211
 
199
- #### Ubuntu 23.04
212
+ ### Installing with pipx
213
+
214
+ Then installing not1mm is as simple as:
200
215
 
201
216
  ```bash
202
- sudo apt update
203
- sudo apt upgrade
204
- sudo apt install -y libportaudio2 adwaita-qt pipx
217
+ # Install not1mm
205
218
  pipx install not1mm
206
- pipx ensurepath
207
219
  ```
208
220
 
209
- #### Fedora 38 & 39
221
+ If you need to later update not1mm, you can do so with:
222
+
223
+ ```bash
224
+ # Update not1mm
225
+ pipx upgrade not1mm
226
+ ```
227
+
228
+ ### Installing portaudio
229
+
230
+ not1mm uses portaudio to play audio. You can install it with:
210
231
 
211
232
  ```bash
212
- sudo dnf upgrade --refresh
233
+ # Ubuntu
234
+ sudo apt install -y libportaudio2
235
+
236
+ # Fedora
213
237
  sudo dnf install python3-pip portaudio
214
- pip install not1mm
215
238
  ```
216
239
 
240
+ ## After install
241
+
217
242
  You can now open a new terminal and type `not1mm`. On it's first run, it may or may not install a lovely non AI generated
218
243
  icon, which you can later click on to launch the application.
219
244
 
@@ -240,27 +265,13 @@ To avoid this you can export an environment variable and launch the app like thi
240
265
 
241
266
  For a more permanent solution you can place the line `export QT_QPA_PLATFORM=wayland` in your home directories .bashrc file. Then after logging out and back in you should be able to launch it normally.
242
267
 
243
- ### Updating with pip/pipx
244
-
245
- I've been posting updates just about everyday. Sometimes multiple times a day. It's early days, so there is much to do. You can check for and install updates with `pip install -U not1mm` or if installed with pipx `pipx upgrade not1mm`.
246
-
247
- ## Other Libraries
248
-
249
- The audio library used, uses pipewire/portaudio. You may need to install portaudio. Ubuntu: `sudo apt install libportaudio2`
250
-
251
- ### Dark mode on Ubuntu
252
-
253
- I believe I figured out dark mode in Ubuntu and have it working on my shack PC that runs Ubuntu 22.04. The secret sauce seems to be installing adwaita-qt with apt, and setting an environment variable `QT_STYLE_OVERRIDE` to `Adwaita-Dark`. I set the environment variable in the start of the program if running on a Gnome platform. So you don't need to do that part.
254
-
255
- Or see this discussion [darkmode](https://github.com/mbridak/not1mm/discussions/60).
256
-
257
268
  ## Wayland Compositor
258
269
 
259
270
  One side effect of Wayland is that we are not able to request for a window to regain or retain focus. So if you were to click on a spot in the bandmap window to tune to that spot, you would have to then click on the main window to continue entering contest data. I'm aware of this, but I can not change it.
260
271
 
261
- ## Running from source
272
+ ### Running from source
262
273
 
263
- Since this is packaged for PyPi, if you want to work on your own source branch, after cloning from github you would:
274
+ Since this is packaged for PyPI, if you want to work on your own source branch, after cloning from github you would:
264
275
 
265
276
  ```bash
266
277
  pip install --upgrade pip
@@ -329,19 +340,21 @@ You can fill. You can fill. Everyone look at your keys.
329
340
 
330
341
  Station information can be changed any time by going to `File` > `Station Settings` and editing the information.
331
342
 
332
- ## Adding a contest to the current dababase (REQUIRED)
343
+ ## Selecting a contest (REQUIRED)
344
+
345
+ ### Selecting a new contest
333
346
 
334
347
  Select `File` > `New Contest`
335
348
 
336
349
  ![New Contest Dialog](https://github.com/mbridak/not1mm/raw/master/pic/new_contest.png)
337
350
 
338
- ## Selecting an existing contest as the current contest
351
+ ### Selecting an existing contest as the current contest
339
352
 
340
353
  Select `File` > `Open Contest`
341
354
 
342
355
  ![Open an existing contest](https://github.com/mbridak/not1mm/raw/master/pic/select_contest.png)
343
356
 
344
- ## Editing existing contest parameters
357
+ ### Editing existing contest parameters
345
358
 
346
359
  You can edit the parameters of a previously defined contest by selecting it as the current contest. Then select `File` > `Edit Current Contest`. Click `OK` to save the new values and reload the contest. `Cancel` to keep the existing parameters.
347
360
 
@@ -361,7 +374,7 @@ For callsign lookup, Two services are supported. QRZ and HamQTH. They require a
361
374
 
362
375
  Choose the sound output device for the voice keyer.
363
376
 
364
- ### CAT
377
+ ### CAT Control
365
378
 
366
379
  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.
367
380
 
@@ -444,7 +457,7 @@ After this, a request is made to QRZ for the gridsquare of the callsign. If ther
444
457
 
445
458
  ![Main screen with callouts](https://github.com/mbridak/not1mm/raw/master/pic/mainwithcallouts.png)
446
459
 
447
- #### Keyboard commands
460
+ ### Keyboard commands
448
461
 
449
462
  | Key | Result |
450
463
  | -------------- | --- |
@@ -1,19 +1,20 @@
1
1
  not1mm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- not1mm/__main__.py,sha256=DtSm7QSnt4rkwigRVvRKjNTLrq7KNkXKD9NqnNHhbI4,108514
3
- not1mm/bandmap.py,sha256=hL76Hyz2omB_jroaUeXJ9XTYuD_qbWZQrqfTMW1Wx3E,29645
4
- not1mm/checkwindow.py,sha256=QyxPtGwqOCTQR3kVREhwSkhdbWcGfDyGNHId-b6FpQQ,7449
5
- not1mm/logwindow.py,sha256=Rk9GAxOjic8JeqjrCJrCbnLIdoKT9kdE-G32AjAwVX4,44021
6
- not1mm/vfo.py,sha256=AWqNVdcF4WRFls6J9443UM7V2YdLO0FzVWOcs9B1g0c,11096
2
+ not1mm/__main__.py,sha256=rbAS_BogM6bnkhvKuTpyaDeW5kJhkXy-vc7wpGmiGdw,115699
3
+ not1mm/bandmap.py,sha256=RsvKJpSuz3mveB_FWPZBpujlctO91KP6JVKfmGbuKKY,32117
4
+ not1mm/checkwindow.py,sha256=I7f82yO-ODwVbLH9YrNxIyoI34g9G6F3odmu5h_jVGI,7376
5
+ not1mm/fsutils.py,sha256=Li8Tq9K7c_q7onOHOQ7u1dOOFfhIIz5Aj2LKuQtGOO4,1652
6
+ not1mm/logwindow.py,sha256=y5xqnGPoHGSzcw6lHl7GPSsVsWyn_bxHm0PVFenjm20,43657
7
+ not1mm/vfo.py,sha256=9Z7osgvzfk0Vh8DFbx7uoWCdyyzj4PEnfkfQk5ldv60,11530
7
8
  not1mm/data/JetBrainsMono-Regular.ttf,sha256=UOHctAKY_PzCGh7zy-6f6egnCcSK0wzmF0csBqO9lDY,203952
8
- not1mm/data/MASTER.SCP,sha256=K3oXgFMOyhmEsi2e4_JVrxwKe2ZFJkEiAsix1hGGeyw,364222
9
+ not1mm/data/MASTER.SCP,sha256=1vQRvEZ865brfmmajp-Lj-hgWejVGI992q8o971bUV8,366478
9
10
  not1mm/data/about.ui,sha256=7TqvtXFFm0Rmcu0bmLupwpO1CsK8MekfZ09_xn6kZrQ,2067
10
11
  not1mm/data/alpha bravo charlie delta.txt,sha256=d5QMmSWEUAe4Rj1XbNjTPLa_5Be4Se6u5LUIqAYidOQ,224
11
- not1mm/data/bandmap.ui,sha256=iWl5RSCQMbshLz4EyTnljnsc_HzAd8flUOERxa92ILY,6762
12
+ not1mm/data/bandmap.ui,sha256=X6BpebEQLc77OF37a_25JTndL5LPc6PJUaIF9THogQs,6746
12
13
  not1mm/data/check.png,sha256=UvFOLr8V-79qnjW8wUaGItXk_OSP8m8hqPevs8NDlFY,387
13
- not1mm/data/checkwindow.ui,sha256=nc4FRc4D3ozC1jhm96Q2y6rolayKF6OwMrbCSaQ-vbg,2572
14
+ not1mm/data/checkwindow.ui,sha256=_a22PpCNxO2TrXL0n9xT6JDkCuck2vAIrCmTf0ffAmo,2564
14
15
  not1mm/data/configuration.ui,sha256=DJZxA4zZPb4sTdVn17j1fwaTw-5lJCNQ6PspQrsdMe4,51643
15
16
  not1mm/data/contests.sql,sha256=4hmJCDvrbxnA_Y5S4T5o52TZieeFk6QUwFerwlFePNA,89307
16
- not1mm/data/cty.json,sha256=1x0RqUdqGuhLBU2yklu1isYm_4HyPstn7ehQilZduHw,4753305
17
+ not1mm/data/cty.json,sha256=CGf_bvqr_qfr0kXLQC0JGW1BWSX-1Ce8qZwDMMN7tuM,4783134
17
18
  not1mm/data/cwmacros.txt,sha256=PvJ7TxGILq-ErHb6Gbrm-08x76BbCdXb8AY8a7st5mg,451
18
19
  not1mm/data/donors.html,sha256=8hNzO3Q5a6p-_3egT1hfOjimPf810tKMUM5ukLzUsGM,116
19
20
  not1mm/data/editcontact.ui,sha256=ax-pm4TeECpHl3LSb5z4L403WjPWXZ9KV2it_6gIjqk,27404
@@ -23,8 +24,8 @@ not1mm/data/k6gte-not1mm.desktop,sha256=bSiSG7PzGygv0bBaF7Nf48PApVyrobSBVNk7j7wR
23
24
  not1mm/data/k6gte.not1mm-128.png,sha256=ZP93MfRqr4WwsFCwg1m5MZjLs8bG895vDW9DDDn1B_Q,6076
24
25
  not1mm/data/k6gte.not1mm-32.png,sha256=XdTsCa3xqwTfn26Ga7RwO_Vlbg_77RKkSc8bMxVcCac,1526
25
26
  not1mm/data/k6gte.not1mm-64.png,sha256=6ku45Gq1g5ezh04F07osoKRtanb3e4kbx5XdIEh3N90,2925
26
- not1mm/data/logwindow.ui,sha256=_-wobHhIjALzCswyXIrqNadnLdc88eay1GNF23a-Qh0,970
27
- not1mm/data/main.ui,sha256=zhF00NG9BL6EDr7159GNvvU8vb0oH9FUsdTGli9xY58,53841
27
+ not1mm/data/logwindow.ui,sha256=hC_G_4UCxBogUrQ4NX-pY1cXVGQOltbRF361HbZG2cI,1229
28
+ not1mm/data/main.ui,sha256=X9sNqSZyKennX-7Ne4c8yLnkbN13T5YpDUeri-wPOn4,54070
28
29
  not1mm/data/new_contest.ui,sha256=Xubngdbs_V_-o8huXzKOOaQOfj1NSXu9giIcaL4d0qk,21823
29
30
  not1mm/data/not1mm.html,sha256=c9-mfjMwDt4f5pySUruz2gREW33CQ2_rCddM2z5CZQo,23273
30
31
  not1mm/data/opon.ui,sha256=mC4OhoVIfR1H9IqHAKXliPMm8VOVmxSEadpsFQ7XnS4,2247
@@ -35,7 +36,7 @@ not1mm/data/radio_red.png,sha256=QvkMk7thd_hCEIyK5xGAG4xVVXivl39nwOfD8USDI20,957
35
36
  not1mm/data/reddot.png,sha256=M33jEMoU8W4rQ4_MVyzzKxDPDte1ypKBch5VnUMNLKE,565
36
37
  not1mm/data/settings.ui,sha256=7r4aZwxKUHQGm8NLQGLINurGMvT_5VMU9p2dznW25bA,40028
37
38
  not1mm/data/ssbmacros.txt,sha256=0Qccj4y0nlK-w5da9a9ti-jILkURtwztoDuL_D0pEJM,470
38
- not1mm/data/vfo.ui,sha256=71PziPIo7tpVbNQ4J4bpIgkCg67foZmdyCyUUeHOCHY,1874
39
+ not1mm/data/vfo.ui,sha256=f18m5r3gMbm0xtPJAZH1qVvOggK24XKBL7OGmip_Ks8,2405
39
40
  not1mm/data/phonetics/0.wav,sha256=0OpYiR-3MK6fVHE6MB-HeOxSAPiDNMjqvx5JcIZtsQk,42590
40
41
  not1mm/data/phonetics/1.wav,sha256=OEAavA8cfVxFZwaT0HY9Wg9NAGEPKBhwhEdzGXkQs_U,30248
41
42
  not1mm/data/phonetics/2.wav,sha256=AmCfvo8y8BT9OlHkCs_N4y_mUAjmyG_x9ahbgiwU2FE,29584
@@ -85,68 +86,69 @@ not1mm/data/phonetics/y.wav,sha256=QINogHdj01-zkUX9E3fnVTzjGM8wc5F5NEGz-bSd3Ng,5
85
86
  not1mm/data/phonetics/yourcall.wav,sha256=4kheHJmCiRDL2kjhlgXQ8_u_eEMgKxiNGu5UBk9k08E,46510
86
87
  not1mm/data/phonetics/z.wav,sha256=arafCi7fwmBLdVDI-PRyaL4U-03PIQDhffwY5noJ_2c,51768
87
88
  not1mm/lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
88
- not1mm/lib/about.py,sha256=O9i8ypv2W9KZkPAp2bcRI0J5RgPE5R1vMfU8ZGlok_E,379
89
- not1mm/lib/cat_interface.py,sha256=fLiIzVk2azQPYNRPa1bLPkfMY6UogNmOu-aFHz26W5w,15122
90
- not1mm/lib/cwinterface.py,sha256=fZ5BXVyF7by0yGTJVznUTjRCxRt3lJaUIsNC-_mCGP4,3123
91
- not1mm/lib/database.py,sha256=YXtWgHE9vvEyTtc6S_Q6zWjVXm19rT_s9ubSmr0Qlqs,42486
92
- not1mm/lib/edit_contact.py,sha256=YwuX-BuIa7AuPtLRENs4jTzxOrtk6MCxZj3BR_bDPW8,357
93
- not1mm/lib/edit_macro.py,sha256=lyToZb1nmcONNFh6W35NzYHLU48gbAs2_OsnuRQGHck,559
94
- not1mm/lib/edit_opon.py,sha256=GqAOJMiC265_4YRVbkT1PflBuCa4HiCNfRhq8-J6ZVY,363
95
- not1mm/lib/edit_station.py,sha256=WGeFg-LuHdYzjzFh91bcOBFViv-D0Lzly3onfpcVyZQ,1973
96
- not1mm/lib/ham_utility.py,sha256=q4xyXD5Rtarn0TdbL7WGzLBiq94X1nMuPwbh_57x5_A,10975
97
- not1mm/lib/lookup.py,sha256=nuRyeUCcGOj0reBXcmPkGXCYGyKN5vsBD5xF8iE0fF8,13777
98
- not1mm/lib/multicast.py,sha256=VbKyppKVu6m2RN9prcd6jknEivr5hcDH0MAsnyAC9Gw,3000
99
- not1mm/lib/n1mm.py,sha256=O3U2dhOX-_5nBomyuiyfx-_GQk6rj067lwrcC9GtDpQ,5713
100
- not1mm/lib/new_contest.py,sha256=mHKNCS3iKOKN-bT9d8ZK3JemThOZFQ0ikfUSS0-ZTpY,354
101
- not1mm/lib/plugin_common.py,sha256=qYA2rt0lQc81qyNPNwq8i_x8KbtU7eYb5Ppk7k4fDLQ,8478
102
- not1mm/lib/select_contest.py,sha256=XQdRUkPAIHIMVsilm82M54b_v9yWpYrZ1nfInJrtZoo,363
103
- not1mm/lib/settings.py,sha256=t_JLJPnDBtMGAvJMAF1AL1eVB7MyucqlksVTU47yxvk,8933
104
- not1mm/lib/super_check_partial.py,sha256=YFc3_o2OdKMwQMlUAcKyZaLbvbSfMcSjWAAPUjd84uk,2258
105
- not1mm/lib/version.py,sha256=ByTDWuF-eKsxJkbyv5Ox2YOsb8jfW8dNJ8GgAN_gcOU,48
89
+ not1mm/lib/about.py,sha256=3PSyHeNS9BIqhyY4QCm1a5Tzr7jMDOrkKnUWJh4j5lg,416
90
+ not1mm/lib/cat_interface.py,sha256=dr5bBcObNtRWVHr9A5kq9GCq0wQfOOfVhkrEAzJez90,15127
91
+ not1mm/lib/cwinterface.py,sha256=Seupz7tMkCvJ80mgmyaNU_1AUADsvNPkAfwDSlwibF0,3126
92
+ not1mm/lib/database.py,sha256=RQoj3JsTejMiiFIN42lY3N4jrj80htftdoFeRqVKnKs,42480
93
+ not1mm/lib/edit_contact.py,sha256=W4SrP3MHO0o87d02_9APx5pDaBPiCGwCNgMazTduFYA,353
94
+ not1mm/lib/edit_macro.py,sha256=1wyKiLYyTCvoVeIYRfZ7cu-OyfwDVEq6dsbeRyOdyXc,517
95
+ not1mm/lib/edit_opon.py,sha256=2_oJIpTbaXccPWvc4f9C_tRp2TFXHlhwL8xOvQrUmJI,359
96
+ not1mm/lib/edit_station.py,sha256=DQ-HW6RxIagyFHxj34-Ocbc5mXM11UsJ7ptXCreDeTQ,1964
97
+ not1mm/lib/ham_utility.py,sha256=pUrysod3wGk4BYOWDAKJxZZTiUNDE4ZzRk8S5ZnllNA,10978
98
+ not1mm/lib/lookup.py,sha256=WyLfb4i763fyRR9_QjV4eLexNxwsEcPUpuycevGuntw,13775
99
+ not1mm/lib/multicast.py,sha256=w4uFeZhjBFa_s5ltNGe2mTrG4r5xA2POtrxNLFKG8aQ,3196
100
+ not1mm/lib/n1mm.py,sha256=V1NiNyOHaPNYKe_vRsq44O1R42N8uS5PlfRa5Db4Tv0,5712
101
+ not1mm/lib/new_contest.py,sha256=EMiSYHijebaOZJBBJ2M94PZ9fmIr-EjonNPke2yEMto,350
102
+ not1mm/lib/plugin_common.py,sha256=AAKBPCXzTWZJb-h08uPNnHVG7bSCg7kwukc211gFivY,8605
103
+ not1mm/lib/select_contest.py,sha256=Ezc7MTZXEbQ_nXK7gmghalqfbbDyxp0pAVt0-chBJOw,359
104
+ not1mm/lib/settings.py,sha256=9dyXiUZcrR57EVemGDrO2ad3HSMQbe5ngl_bxtZtEic,8877
105
+ not1mm/lib/super_check_partial.py,sha256=p5l3u2ZOCBtlWgbvskC50FpuoaIpR07tfC6zTdRWbh4,2334
106
+ not1mm/lib/version.py,sha256=SJ-JVOSCJswtOP_VbxWQ4ULRpIw-sBsATLBtG4Kd5vg,48
106
107
  not1mm/lib/versiontest.py,sha256=8vDNptuBBunn-1IGkjNaquehqBYUJyjrPSF8Igmd4_Y,1286
107
- not1mm/plugins/10_10_fall_cw.py,sha256=8cN7QmGKWzz_jgu48DzWwy5VbbY3-ntT2Q1DSVbgkwE,10692
108
- not1mm/plugins/10_10_spring_cw.py,sha256=cgCLyGw-w8SjKooDxY6PjJFUjVKgI48bzrOsyasOapY,10698
109
- not1mm/plugins/10_10_summer_phone.py,sha256=WR7bMPY11vLleT8VuyMBElyjDq_KlfRL5g4tHA0JldY,10706
110
- not1mm/plugins/10_10_winter_phone.py,sha256=ZXoUCXC-RhgirI-VHA7-s76LgS5mHcOaT29Jg_9zD_s,10709
108
+ not1mm/plugins/10_10_fall_cw.py,sha256=pG0cFmTNOFO03wXcI1a3EEaT1QK83yWIsrSdqCOU-gg,10834
109
+ not1mm/plugins/10_10_spring_cw.py,sha256=aWTohVrnZpT0SlQuqq7zxQaYe4SExEkOl3NI8xYYJWI,10840
110
+ not1mm/plugins/10_10_summer_phone.py,sha256=HMJYIC8hxQbc31BJv6f1BaZora8YWrDvptQPabNvjk4,10848
111
+ not1mm/plugins/10_10_winter_phone.py,sha256=csiQlznP7yOBqEhoEHvd5LKQ_2NGJk8Tul3xTwZO-Ug,10851
111
112
  not1mm/plugins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
112
- not1mm/plugins/arrl_10m.py,sha256=Cp3COORlROvfLvRi5R5fA1yCmbDCrl2KOTu7t_Yt6u8,13501
113
- not1mm/plugins/arrl_dx_cw.py,sha256=WcbNo0PJ6xbC6oYZLN-YCC00AwbXF6JRH8hN2hfGWrQ,13546
114
- not1mm/plugins/arrl_dx_ssb.py,sha256=-zTxktlLOqNoVxuW0qmhl2C8W9OZPG61RiQJdMufcsk,13549
115
- not1mm/plugins/arrl_field_day.py,sha256=aiQjnWsorjMk1kFHQZMFI6pBc1Z6q2-nx0hhSXN45pI,9884
113
+ not1mm/plugins/arrl_10m.py,sha256=EUmP3LFDqhL2mJxhsvN3dPEXJpfiazAoVMKHBipVoas,13643
114
+ not1mm/plugins/arrl_dx_cw.py,sha256=cNdVo58bbllTM4HzxVtnpwnlcBFGbh83isWSrDPaIEE,13688
115
+ not1mm/plugins/arrl_dx_ssb.py,sha256=Qw-jgCJ7isiVr-8wyQ1xuWpLJN3qlDucy0621sDL2Uc,13691
116
+ not1mm/plugins/arrl_field_day.py,sha256=sMBVPoCUkL6_3YNRNWdrdQNvEBM1aXGlC_eEgRmrPLs,10026
116
117
  not1mm/plugins/arrl_rtty_ru.py,sha256=9v9wApmUZHAKX4t_O6hVqBnT7v5bqAGV8SjgDhfOuMs,7974
117
- not1mm/plugins/arrl_ss_cw.py,sha256=kmQ-DZnNCyivVmnRtW5H1z3b6tFFXXUljwfao5uLVnI,13001
118
- not1mm/plugins/arrl_ss_phone.py,sha256=T2EPgADFQ7Fjk00PeOvzc46ncN4-Vw4C1ZJsQC615jQ,13007
119
- not1mm/plugins/arrl_vhf_jan.py,sha256=oLnWh7Ue3y_TwRHMML4uxqJQP0MrRuSPJavRKdTwQXM,12296
120
- not1mm/plugins/arrl_vhf_jun.py,sha256=mVRCYXHdMFS64xzptJhj9eRxhbDWrA1hAWqhSWuGjJ4,11315
121
- not1mm/plugins/arrl_vhf_sep.py,sha256=s_NIUWiOgzzrLYU0QVpotvRYv1BjMawUXdCT1xOQjKc,11315
122
- not1mm/plugins/canada_day.py,sha256=e_cNbn0D3lVdq40gMxmdvU4uAIijqqx6o90xvtgZQCM,11727
123
- not1mm/plugins/cq_160_cw.py,sha256=RWvadRgFP6n4znhbo0TxkichtZPIReg-6MDipQ_8E_c,13861
124
- not1mm/plugins/cq_160_ssb.py,sha256=JH_cgO6TGy4ntjC8tneJKcgzxk0emnFyeL_Y0ckyw_4,13865
125
- not1mm/plugins/cq_wpx_cw.py,sha256=UHXw9pkprJ_AxB9aKLRjAfucLA5ZMihbs6vERiLzt0M,12236
126
- not1mm/plugins/cq_wpx_ssb.py,sha256=bWrqVUK-jX3_47AUt5n9JglPmHTAh6nus2W_ngzXjSA,12324
127
- not1mm/plugins/cq_ww_cw.py,sha256=O0kcMd9izzoOpWOI4Pi5AMXRXJgS8b7valY5IYVLQY4,10941
128
- not1mm/plugins/cq_ww_ssb.py,sha256=Wq9o0g97KgmwVwDKWGt75oRsJ_ri6linpeR-ERz-b0E,10946
129
- not1mm/plugins/cwt.py,sha256=R6BqQr5-Jxb4r0c6INbPlMTUMVC_PcQh0QMEnXSVv-M,11834
130
- not1mm/plugins/general_logging.py,sha256=naz16xAfjdWRm8B-dB_UBJ0NVjBuvbu98hDR1f7UgFk,3371
131
- not1mm/plugins/iaru_hf.py,sha256=huaTl3XiCCdoSZaXVPz4UEr9fctHXlHzKmAmzTblPJs,11291
132
- not1mm/plugins/jidx_cw.py,sha256=xpdJ0Fb-VZH_CFuQxGnHA7WGRzh3WCuH7mXqX8PS8GM,10907
133
- not1mm/plugins/jidx_ph.py,sha256=zQOUnj50D_6Mr1l2GqCHOJyRLih_Q7dcTY5ICBCDpe4,10909
134
- not1mm/plugins/naqp_cw.py,sha256=mmApyN16MOaWPixQpauPa5kgMLatd1eVDn3KB_8oW2Q,11330
135
- not1mm/plugins/naqp_ssb.py,sha256=3q8Qz73IknsE-ccN34WzXCqGuAs6JdV6q8uCSEtGnSE,11335
136
- not1mm/plugins/phone_weekly_test.py,sha256=nELl0oFEdi9pJBGLsXoj1zirvUu_EQkhdDM4JlVjGVQ,12136
137
- not1mm/plugins/stew_perry_topband.py,sha256=TWbjdsIuTF8yTUb7NGPVWj_jHZqMc8ZixDLxdClNyJE,10404
138
- not1mm/plugins/winter_field_day.py,sha256=CvaA2H9y0ud6PyHXuGzRkCAeK4xUFmDvFHXv7ViP3Xc,10070
118
+ not1mm/plugins/arrl_ss_cw.py,sha256=epwosJmLhrVBY5lVdRkT_z8vJzxUxbmwiK1PJz_LLzQ,13143
119
+ not1mm/plugins/arrl_ss_phone.py,sha256=oVw2z1IEc6-7GU-JM2PiOE83tob5JJcHXYPMf03x6fQ,13149
120
+ not1mm/plugins/arrl_vhf_jan.py,sha256=zGFYQ83F9tt-zM_1oL5n8c0gAyvekxF7WPAAEA79GT0,12438
121
+ not1mm/plugins/arrl_vhf_jun.py,sha256=zpIUoGIlRK9UN9BhhzfZlgfxvEJXO1Xl0U_CaD7doXI,11457
122
+ not1mm/plugins/arrl_vhf_sep.py,sha256=a3i5wmVWkEfo4A_3Hi4WS-6dQBCXdV_62SHhYTMclR4,11457
123
+ not1mm/plugins/canada_day.py,sha256=oyIPi73IoiF3-puYzcvXLVkchAeqemRvhHZPZvdICzc,11869
124
+ not1mm/plugins/cq_160_cw.py,sha256=I-z7Z3R3jEPL6qBChY9H4F3AW_gvEdrkYuDQ2EmtO2o,14018
125
+ not1mm/plugins/cq_160_ssb.py,sha256=nxIVfpF_QGR0gige5lUf1oEYRpT05eWtxCNUA7sjW_4,14061
126
+ not1mm/plugins/cq_wpx_cw.py,sha256=Ftw08EU8vYUIYgzJ-Olkt-qCWtfyBtFEGACQV-GMjA0,12378
127
+ not1mm/plugins/cq_wpx_ssb.py,sha256=zMh31RweV6EIORLfMUHFKzg7v4d-43H_N75r6wCLx2I,12466
128
+ not1mm/plugins/cq_ww_cw.py,sha256=gQ5XUfRXHER7dJzAbv8xx6WKlbNzoT0VmEmxYnMENpw,11083
129
+ not1mm/plugins/cq_ww_ssb.py,sha256=dsE-KIDk2_Zpx-x8R7LwAMpP0lNn5D0qz3okZ_iS-YM,11088
130
+ not1mm/plugins/cwt.py,sha256=abiNdx8lPSONkoSQZI-tV3nL2tMOgybOEY9LErqiAww,11976
131
+ not1mm/plugins/general_logging.py,sha256=kC3Gl-dxV9FwzkjOTLQwS3eHx3LLNrq6s5jPuT4Qn00,3369
132
+ not1mm/plugins/iaru_hf.py,sha256=M5c8FiyMyoIcUkV5-g5-nZ-ufW0ug4hTwVmY2awJY_c,11433
133
+ not1mm/plugins/jidx_cw.py,sha256=qHNJW6OnXzBdFQiL0Ua9c7cWkQuTPyKCDibma1OwumE,11049
134
+ not1mm/plugins/jidx_ph.py,sha256=UbawmW7obhjkRLa43V8o8rdkfReIKp_SM7k3EeLxAN8,11051
135
+ not1mm/plugins/naqp_cw.py,sha256=73aTpREZVtDqfEGYLGekqRLksEenpJ7EkIyZ2Zs4DMM,11472
136
+ not1mm/plugins/naqp_ssb.py,sha256=pof1k6Eg_MDQXSaCOJLh1jfVyyIri0LdHYrZQu7P_gs,11477
137
+ not1mm/plugins/phone_weekly_test.py,sha256=EfLQzKREEXO_Ljg-q3VWg87JfbPVar9ydNhCdmHCrt8,12278
138
+ not1mm/plugins/stew_perry_topband.py,sha256=bjcImkZhBXpw4XKogs85mpShz7QgYbVohvhFMQ050DI,10546
139
+ not1mm/plugins/winter_field_day.py,sha256=7JK-RS1abcj1xQLnTF8rIPHRpDzmp4sAFBBML8b-Lwk,10212
139
140
  not1mm/testing/fakeflrig.py,sha256=_vJHGjARpSNxSZngkHNO_kkHoVnqtf--T6gwTAYnnZQ,2083
140
141
  not1mm/testing/flrigclient.py,sha256=24r_0HqpoTjyJ6Bqg_HIC8Nn9wjtnwwWQ26I7UprwgA,1658
141
142
  not1mm/testing/multicast_listener.py,sha256=2CkiyZ4EQxBX68_1QzGIX9g_UB9-CQq63OH-pUY3FiU,1051
142
143
  not1mm/testing/n1mm_listener.py,sha256=UD-qyKEnppQua330WEFKMvMJaNjnYKi7dDuX_RGB5lQ,1099
143
144
  not1mm/testing/simulant.py,sha256=kBqCZTe3ADEuHUsh9ygY9usn-jKe4EKRh7-L6tY6iYE,10948
144
145
  not1mm/testing/test.py,sha256=97xdCpTVIWx1CUMU7JBrn9PMU7DqWnz6zO96XificC4,99
145
- testing/test.py,sha256=q7socQaMu46q-I-1fYgmQhnygrrC5NjAUM5yuySo4fA,249
146
+ testing/detectdark.py,sha256=d2oUDqLkDLMCTFjW3lSJgaf-PgLDrk71gw2Cess5itY,895
147
+ testing/test.py,sha256=VkkKwKTJ4lqB7ozS9OEqy3NH67xU-_Dq0xkixKUdjrY,312
146
148
  usb_vfo_knob/code.py,sha256=h59iPPlcYbkXmRcYPQHDBP0yfLEl7fY3VkiIszdQeyI,1057
147
- not1mm-24.3.15.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
148
- not1mm-24.3.15.dist-info/METADATA,sha256=T52Z8fZ8aNAJ2H_qwnxxssUlCs50B359z7d7fhORYZo,25879
149
- not1mm-24.3.15.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
150
- not1mm-24.3.15.dist-info/entry_points.txt,sha256=pMcZk_0dxFgLkcUkF0Q874ojpwOmF3OL6EKw9LgvocM,47
151
- not1mm-24.3.15.dist-info/top_level.txt,sha256=PBUZJeDgW5ta7ghk__UYh_ygOFIhe9ymJDaxEuVumFU,28
152
- not1mm-24.3.15.dist-info/RECORD,,
149
+ not1mm-24.3.24.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
150
+ not1mm-24.3.24.dist-info/METADATA,sha256=LfWsz-7TEAcL2fUCqG5NAun_8v7-m7JqjC84B5O6vWA,25905
151
+ not1mm-24.3.24.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
152
+ not1mm-24.3.24.dist-info/entry_points.txt,sha256=pMcZk_0dxFgLkcUkF0Q874ojpwOmF3OL6EKw9LgvocM,47
153
+ not1mm-24.3.24.dist-info/top_level.txt,sha256=PBUZJeDgW5ta7ghk__UYh_ygOFIhe9ymJDaxEuVumFU,28
154
+ not1mm-24.3.24.dist-info/RECORD,,
testing/detectdark.py ADDED
@@ -0,0 +1,35 @@
1
+ import darkdetect
2
+ import sys
3
+ import threading
4
+ from PyQt5.QtWidgets import QApplication, QWidget
5
+
6
+
7
+ class Example(QWidget):
8
+
9
+ def __init__(self):
10
+ super().__init__()
11
+
12
+ self.init_ui()
13
+
14
+ def init_ui(self):
15
+ self.setWindowTitle("Darkdetect Listener Example")
16
+ self.setGeometry(300, 300, 300, 300)
17
+
18
+ self.show()
19
+
20
+ def on_dark_mode_changed(self, dark_mode):
21
+ if dark_mode:
22
+ self.setStyleSheet("background-color: black; color: white;")
23
+ else:
24
+ self.setStyleSheet("background-color: white; color: black;")
25
+
26
+
27
+ if __name__ == "__main__":
28
+ app = QApplication(sys.argv)
29
+
30
+ listener = darkdetect.Listener(print)
31
+ t = threading.Thread(target=listener.listen, daemon=True)
32
+ # OR: t = threading.Thread(target=darkdetect.listener, args=(print,), daemon=True)
33
+ t.start()
34
+ example = Example()
35
+ sys.exit(app.exec_())
testing/test.py CHANGED
@@ -1,15 +1,17 @@
1
- """doc"""
1
+ import sys
2
2
 
3
- import psutil
3
+ from PyQt6.QtWidgets import QApplication, QMainWindow, QPushButton
4
4
 
5
- for proc in psutil.process_iter():
6
- if len(proc.cmdline()) == 2:
7
- print(proc.cmdline()[1])
5
+ import qdarktheme
8
6
 
9
- print(__name__)
10
- print(__file__)
11
- print(__cached__)
12
- print(__package__)
13
- print(__loader__)
7
+ app = QApplication(sys.argv)
8
+ # Apply dark theme.
9
+ qdarktheme.setup_theme()
14
10
 
15
- print(__loader__.get_filename())
11
+ main_win = QMainWindow()
12
+ push_button = QPushButton("PyQtDarkTheme!!")
13
+ main_win.setCentralWidget(push_button)
14
+
15
+ main_win.show()
16
+
17
+ app.exec()