not1mm 24.3.25.2__py3-none-any.whl → 24.4.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- not1mm/__main__.py +10 -0
- not1mm/bandmap.py +0 -8
- not1mm/checkwindow.py +19 -12
- not1mm/lib/version.py +1 -1
- {not1mm-24.3.25.2.dist-info → not1mm-24.4.1.dist-info}/METADATA +245 -119
- {not1mm-24.3.25.2.dist-info → not1mm-24.4.1.dist-info}/RECORD +10 -10
- {not1mm-24.3.25.2.dist-info → not1mm-24.4.1.dist-info}/LICENSE +0 -0
- {not1mm-24.3.25.2.dist-info → not1mm-24.4.1.dist-info}/WHEEL +0 -0
- {not1mm-24.3.25.2.dist-info → not1mm-24.4.1.dist-info}/entry_points.txt +0 -0
- {not1mm-24.3.25.2.dist-info → not1mm-24.4.1.dist-info}/top_level.txt +0 -0
not1mm/__main__.py
CHANGED
@@ -2456,6 +2456,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
2456
2456
|
cmd["station"] = platform.node()
|
2457
2457
|
cmd["COLUMNS"] = self.contest.columns
|
2458
2458
|
self.multicast_interface.send_as_json(cmd)
|
2459
|
+
continue
|
2459
2460
|
if (
|
2460
2461
|
json_data.get("cmd", "") == "TUNE"
|
2461
2462
|
and json_data.get("station", "") == platform.node()
|
@@ -2472,6 +2473,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
2472
2473
|
self.callsign.setFocus()
|
2473
2474
|
self.callsign.activateWindow()
|
2474
2475
|
window.raise_()
|
2476
|
+
continue
|
2475
2477
|
|
2476
2478
|
if (
|
2477
2479
|
json_data.get("cmd", "") == "GETWORKEDLIST"
|
@@ -2483,6 +2485,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
2483
2485
|
cmd["station"] = platform.node()
|
2484
2486
|
cmd["worked"] = result
|
2485
2487
|
self.multicast_interface.send_as_json(cmd)
|
2488
|
+
continue
|
2486
2489
|
|
2487
2490
|
if (
|
2488
2491
|
json_data.get("cmd", "") == "GETCONTESTSTATUS"
|
@@ -2495,6 +2498,13 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
2495
2498
|
"operator": self.current_op,
|
2496
2499
|
}
|
2497
2500
|
self.multicast_interface.send_as_json(cmd)
|
2501
|
+
continue
|
2502
|
+
|
2503
|
+
if (
|
2504
|
+
json_data.get("cmd", "") == "CHANGECALL"
|
2505
|
+
and json_data.get("station", "") == platform.node()
|
2506
|
+
):
|
2507
|
+
self.callsign.setText(json_data.get("call", ""))
|
2498
2508
|
|
2499
2509
|
def dark_mode_state_changed(self) -> None:
|
2500
2510
|
"""Called when the Dark Mode menu state is changed."""
|
not1mm/bandmap.py
CHANGED
@@ -449,13 +449,11 @@ class BandMapWindow(QtWidgets.QDockWidget):
|
|
449
449
|
if self.connected is True:
|
450
450
|
self.close_cluster()
|
451
451
|
return
|
452
|
-
# refresh settings
|
453
452
|
self.settings = self.get_settings()
|
454
453
|
server = self.settings.get("cluster_server", "dxc.nc7j.com")
|
455
454
|
port = self.settings.get("cluster_port", 7373)
|
456
455
|
logger.info(f"connecting to dx cluster {server} {port}")
|
457
456
|
self.socket.connectToHost(server, port)
|
458
|
-
# self.connectButton.setStyleSheet("color: white;")
|
459
457
|
self.connectButton.setText("Connecting")
|
460
458
|
self.connected = True
|
461
459
|
|
@@ -567,7 +565,6 @@ class BandMapWindow(QtWidgets.QDockWidget):
|
|
567
565
|
if packet.get("cmd", "") == "CONTESTSTATUS":
|
568
566
|
if not self.callsignField.text():
|
569
567
|
self.callsignField.setText(packet.get("operator", "").upper())
|
570
|
-
# self.callsignField.selectAll()
|
571
568
|
continue
|
572
569
|
if packet.get("cmd", "") == "DARKMODE":
|
573
570
|
self.setDarkMode(packet.get("state", False))
|
@@ -753,9 +750,6 @@ class BandMapWindow(QtWidgets.QDockWidget):
|
|
753
750
|
def update_stations(self):
|
754
751
|
"""doc"""
|
755
752
|
self.update_timer.setInterval(UPDATE_INTERVAL)
|
756
|
-
if not self.connected:
|
757
|
-
return
|
758
|
-
|
759
753
|
self.clear_all_callsign_from_scene()
|
760
754
|
self.spot_aging()
|
761
755
|
step, _digits = self.determine_step_digits()
|
@@ -908,7 +902,6 @@ class BandMapWindow(QtWidgets.QDockWidget):
|
|
908
902
|
def disconnected(self) -> None:
|
909
903
|
"""Called when socket is disconnected."""
|
910
904
|
self.connected = False
|
911
|
-
# self.connectButton.setStyleSheet("color: red;")
|
912
905
|
self.connectButton.setText("Closed")
|
913
906
|
|
914
907
|
def send_command(self, cmd: str) -> None:
|
@@ -937,7 +930,6 @@ class BandMapWindow(QtWidgets.QDockWidget):
|
|
937
930
|
logger.info("Closing dx cluster connection")
|
938
931
|
self.socket.close()
|
939
932
|
self.connected = False
|
940
|
-
# self.connectButton.setStyleSheet("color: red;")
|
941
933
|
self.connectButton.setText("Closed")
|
942
934
|
|
943
935
|
def closeEvent(self, _event: QtGui.QCloseEvent) -> None:
|
not1mm/checkwindow.py
CHANGED
@@ -13,7 +13,6 @@ from json import loads
|
|
13
13
|
|
14
14
|
from PyQt5 import QtGui, uic
|
15
15
|
from PyQt5.QtCore import Qt
|
16
|
-
from PyQt5.QtWidgets import QListWidgetItem
|
17
16
|
from PyQt5.QtWidgets import QWidget
|
18
17
|
|
19
18
|
import not1mm.fsutils as fsutils
|
@@ -43,8 +42,11 @@ class CheckWindow(QWidget):
|
|
43
42
|
uic.loadUi(fsutils.APP_DATA_PATH / "checkwindow.ui", self)
|
44
43
|
|
45
44
|
self.logList.clear()
|
45
|
+
self.logList.itemClicked.connect(self.item_clicked)
|
46
46
|
self.masterList.clear()
|
47
|
+
self.masterList.itemClicked.connect(self.item_clicked)
|
47
48
|
self.telnetList.clear()
|
49
|
+
self.telnetList.itemClicked.connect(self.item_clicked)
|
48
50
|
self.callhistoryList.clear()
|
49
51
|
self.callhistoryList.hide()
|
50
52
|
self.callhistoryListLabel.hide()
|
@@ -54,10 +56,19 @@ class CheckWindow(QWidget):
|
|
54
56
|
self.multicast_interface = Multicast(
|
55
57
|
self.pref.get("multicast_group", "239.1.1.1"),
|
56
58
|
self.pref.get("multicast_port", 2239),
|
57
|
-
self.pref.get("interface_ip", "
|
59
|
+
self.pref.get("interface_ip", "0,0,0,0"),
|
58
60
|
)
|
59
61
|
self.multicast_interface.ready_read_connect(self.watch_udp)
|
60
62
|
|
63
|
+
def item_clicked(self, item):
|
64
|
+
"""docstring for item_clicked"""
|
65
|
+
if item:
|
66
|
+
cmd = {}
|
67
|
+
cmd["cmd"] = "CHANGECALL"
|
68
|
+
cmd["station"] = platform.node()
|
69
|
+
cmd["call"] = item.text()
|
70
|
+
self.multicast_interface.send_as_json(cmd)
|
71
|
+
|
61
72
|
def setDarkMode(self, dark: bool):
|
62
73
|
"""Forces a darkmode palette."""
|
63
74
|
|
@@ -189,9 +200,8 @@ class CheckWindow(QWidget):
|
|
189
200
|
for item in results:
|
190
201
|
if "#" in item:
|
191
202
|
continue
|
192
|
-
|
193
|
-
|
194
|
-
self.masterList.show()
|
203
|
+
self.masterList.addItem(item)
|
204
|
+
self.masterList.show()
|
195
205
|
|
196
206
|
def log_list(self, call: str) -> None:
|
197
207
|
"""
|
@@ -209,10 +219,8 @@ class CheckWindow(QWidget):
|
|
209
219
|
self.logList.clear()
|
210
220
|
if call:
|
211
221
|
result = self.database.get_like_calls_and_bands(call)
|
212
|
-
|
213
|
-
|
214
|
-
self.logList.addItem(listItem)
|
215
|
-
self.logList.show()
|
222
|
+
self.logList.addItems(result)
|
223
|
+
self.logList.show()
|
216
224
|
|
217
225
|
def telnet_list(self, spots: list) -> None:
|
218
226
|
"""
|
@@ -231,6 +239,5 @@ class CheckWindow(QWidget):
|
|
231
239
|
if spots:
|
232
240
|
for calls in spots:
|
233
241
|
call = calls.get("callsign", "")
|
234
|
-
|
235
|
-
|
236
|
-
self.telnetList.show()
|
242
|
+
self.telnetList.addItem(call)
|
243
|
+
self.telnetList.show()
|
not1mm/lib/version.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: not1mm
|
3
|
-
Version: 24.
|
3
|
+
Version: 24.4.1
|
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
|
@@ -48,16 +48,20 @@ The worlds #1 unfinished contest logger <sup>*According to my daughter Corinna.<
|
|
48
48
|
- [Our Code Contributors ✨](#our-code-contributors-)
|
49
49
|
- [List of should be working contests](#list-of-should-be-working-contests)
|
50
50
|
- [Recent Changes](#recent-changes)
|
51
|
+
- [Flatpak](#flatpak)
|
51
52
|
- [Installation](#installation)
|
53
|
+
- [Prerequisites](#prerequisites)
|
54
|
+
- [Common installation recipes for Ubuntu and Fedora](#common-installation-recipes-for-ubuntu-and-fedora)
|
55
|
+
- [Ubuntu 22.04 LTS](#ubuntu-2204-lts)
|
56
|
+
- [Ubuntu 23.04](#ubuntu-2304)
|
57
|
+
- [Fedora 38 \& 39](#fedora-38--39)
|
52
58
|
- [Python, PyPI, pip and pipx](#python-pypi-pip-and-pipx)
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
- [After install](#after-install)
|
59
|
+
- [Bootstrapping pipx](#bootstrapping-pipx)
|
60
|
+
- [Installing with pipx](#installing-with-pipx)
|
61
|
+
- [After the install](#after-the-install)
|
57
62
|
- [You may or may not get a warning message like](#you-may-or-may-not-get-a-warning-message-like)
|
58
63
|
- [Or this fan favorite](#or-this-fan-favorite)
|
59
|
-
|
60
|
-
- [Running from source](#running-from-source)
|
64
|
+
- [Installing from GitHub source](#installing-from-github-source)
|
61
65
|
- [Various data file locations](#various-data-file-locations)
|
62
66
|
- [Data](#data)
|
63
67
|
- [Config](#config)
|
@@ -86,41 +90,46 @@ The worlds #1 unfinished contest logger <sup>*According to my daughter Corinna.<
|
|
86
90
|
- [Macro use with voice](#macro-use-with-voice)
|
87
91
|
- [cty.dat and QRZ lookups for distance and bearing](#ctydat-and-qrz-lookups-for-distance-and-bearing)
|
88
92
|
- [Other uses for the call field](#other-uses-for-the-call-field)
|
89
|
-
- [Windows](#windows)
|
93
|
+
- [The Windows](#the-windows)
|
90
94
|
- [The Main Window](#the-main-window)
|
91
|
-
|
92
|
-
- [Log
|
95
|
+
- [Keyboard commands](#keyboard-commands)
|
96
|
+
- [The Log Window](#the-log-window)
|
93
97
|
- [Editing a contact](#editing-a-contact)
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
- [Remote VFO](#remote-vfo)
|
98
|
+
- [The Bandmap Window](#the-bandmap-window)
|
99
|
+
- [The Check Window](#the-check-window)
|
100
|
+
- [The Remote VFO Window](#the-remote-vfo-window)
|
98
101
|
- [Cabrillo](#cabrillo)
|
99
102
|
- [ADIF](#adif)
|
100
|
-
- [
|
103
|
+
- [Recalulate Mults](#recalulate-mults)
|
101
104
|
- [Contest specific notes](#contest-specific-notes)
|
102
105
|
- [ARRL Sweekstakes](#arrl-sweekstakes)
|
103
106
|
- [The exchange parser](#the-exchange-parser)
|
104
107
|
- [The exchange](#the-exchange)
|
105
108
|
|
106
|
-
[Visit the Wiki](https://github.com/mbridak/not1mm/wiki/Not1MM)
|
107
|
-
|
108
109
|
## What and why is Not1MM
|
109
110
|
|
110
|
-
Not1MM's interface is a blatant ripoff of N1MM.
|
111
|
-
|
111
|
+
Not1MM's interface is a blatant ripoff of N1MM. It is NOT N1MM and any problem
|
112
|
+
you have with this software should in no way reflect on their software.
|
112
113
|
|
113
|
-
If you use Windows(tm), you should run away from Not1MM and use someother
|
114
|
+
If you use Windows(tm), you should run away from Not1MM and use someother
|
115
|
+
program.
|
114
116
|
|
115
|
-
I personally don't use Windows(tm). While it may be possible to get N1MM working
|
117
|
+
I personally don't use Windows(tm). While it may be possible to get N1MM working
|
118
|
+
under Wine, I haven't checked. I'd rather not have to jump thru the hoops.
|
116
119
|
|
117
|
-
**Currently this exists for my own personal amusement**.
|
118
|
-
|
119
|
-
|
120
|
+
**Currently this exists for my own personal amusement**. Something to do in my
|
121
|
+
free time. While I'm not watching TV, Right vs Left political 'News' programs,
|
122
|
+
mind numbing 'Reality' shows etc...
|
120
123
|
|
121
124
|
## Current state
|
122
125
|
|
123
|
-
The current state is "**BETA**". I've used it for a few contests, and was able
|
126
|
+
The current state is "**BETA**". I've used it for a few contests, and was able
|
127
|
+
to work contacts and submit a cabrillo at the end. I'm not a "Contester". So
|
128
|
+
I'll add contests as/if I work them. I'm only one guy, so if you see a bug let
|
129
|
+
me know. I don't do much of any Data or RTTY operating. This is why you don't
|
130
|
+
see RTTY in the list of working contests. The Lord helps those who burn people
|
131
|
+
at the... I mean who help themselves. Feel free to fill in that hole with a pull
|
132
|
+
request.
|
124
133
|
|
125
134
|

|
126
135
|
|
@@ -167,36 +176,76 @@ I wish to thank those who've contributed to the project.
|
|
167
176
|
|
168
177
|
## Recent Changes
|
169
178
|
|
170
|
-
- [24-
|
171
|
-
- [24-3-25] Yanked version 24-3-24-1. Fixed widget focus issues.
|
172
|
-
- [24-3-24-1] Killed an SQL query bug causing crash when pressing arrow down.
|
173
|
-
- [24-3-24] Reworked fsutil.py to correct directory paths for Linux.
|
174
|
-
- [24-3-23] Yanked version 24-3-21, too many bugs for existing userbase.
|
175
|
-
- [24-3-21] Merged PR from @kyleboyle for docking windows. MacOS and Windows support.
|
176
|
-
- [24-3-19] Removed some useless bloat causing slow interface on FreeBSD 13/14 and maybe others.
|
177
|
-
- [24-3-16] Add Save/Fail confirmation dialogs when saving ADIF of Cabrillo files.
|
178
|
-
- [24-3-15] Change 'CWR' to 'CW' in the ADIF output.
|
179
|
-
- [24-3-13] Added CQ 160 CW and SSB
|
180
|
-
- [24-3-9] Marked calls in the bandmap window colored Blue, until worked.
|
181
|
-
- [24-3-7] Merged PR from @arodland for faster fuzzy SCP lookups.
|
182
|
-
- [24-3-2-1] Added marking stations on the bandmap to work later with CTRL-M.
|
183
|
-
- [24-3-2] Merged PR from @arodland for fuzzy SCP lookup.
|
179
|
+
- [24-4-1] Removed some un-needed loops and widgets from the check window.
|
184
180
|
|
185
181
|
See [CHANGELOG.md](CHANGELOG.md) for prior changes.
|
186
182
|
|
183
|
+
## Flatpak
|
184
|
+
|
185
|
+
I've tried for a couple days to get not1mm to build as a flatpak. I've failed.
|
186
|
+
It keeps failing at building numpy. If you happen to be a flatpak savant, please
|
187
|
+
feel free to look at com.github.mbridak.not1mm.yaml and python3-modules.yaml and
|
188
|
+
clue me into the black magic needed to get it to work.
|
189
|
+
|
187
190
|
## Installation
|
188
191
|
|
192
|
+
### Prerequisites
|
193
|
+
|
194
|
+
not1mm requires Python 3.9+, PyQt5 and libportaudio2. You should install these
|
195
|
+
through your distribution's package manager before continuing.
|
196
|
+
|
197
|
+
### Common installation recipes for Ubuntu and Fedora
|
198
|
+
|
199
|
+
I've taken the time to install some common Linux distributions into a VM and
|
200
|
+
noted the minimum steps needed to install not1mm.
|
201
|
+
|
202
|
+
#### Ubuntu 22.04 LTS
|
203
|
+
|
204
|
+
```bash
|
205
|
+
sudo apt update
|
206
|
+
sudo apt upgrade
|
207
|
+
sudo apt install -y libportaudio2 python3-pip python3-pyqt5 python3-numpy
|
208
|
+
pip install -U not1mm
|
209
|
+
```
|
210
|
+
|
211
|
+
#### Ubuntu 23.04
|
212
|
+
|
213
|
+
```bash
|
214
|
+
sudo apt update
|
215
|
+
sudo apt upgrade
|
216
|
+
sudo apt install -y libportaudio2 pipx
|
217
|
+
pipx install not1mm
|
218
|
+
pipx ensurepath
|
219
|
+
```
|
220
|
+
|
221
|
+
#### Fedora 38 & 39
|
222
|
+
|
223
|
+
```bash
|
224
|
+
sudo dnf upgrade --refresh
|
225
|
+
sudo dnf install python3-pip portaudio
|
226
|
+
pip install not1mm
|
227
|
+
```
|
228
|
+
|
229
|
+
You can now open a new terminal and type not1mm. On it's first run, it may or
|
230
|
+
may not install a lovely non AI generated icon, which you can later click on to
|
231
|
+
launch the application.
|
232
|
+
|
189
233
|
### Python, PyPI, pip and pipx
|
190
234
|
|
191
|
-
This software is a Python package hosted on PyPI, and installable with the pip
|
235
|
+
This software is a Python package hosted on PyPI, and installable with the pip
|
236
|
+
or pipx command. If this is your first exposure to Python packaging you can get
|
237
|
+
all the details from:
|
192
238
|
|
193
239
|
- [The PyPA](https://packaging.python.org/en/latest/tutorials/installing-packages/)
|
194
240
|
- [Install packages in a virtual environment using pip and venv](https://packaging.python.org/en/latest/guides/installing-using-pip-and-virtual-environments/)
|
195
241
|
- [Installing stand alone command line tools](https://packaging.python.org/en/latest/guides/installing-stand-alone-command-line-tools/)
|
196
242
|
|
197
|
-
In short, You should install stuff into a Python virtual environment. Newer
|
243
|
+
In short, You should install stuff into a Python virtual environment. Newer
|
244
|
+
Linux distros will make you do this unless you include a command line argument
|
245
|
+
akin to '--break-my-system' when using pip. I'm not telling you to use pipx.
|
246
|
+
But... **Use pipx**.
|
198
247
|
|
199
|
-
|
248
|
+
#### Bootstrapping pipx
|
200
249
|
|
201
250
|
Assuming you have only Python installed, your path to pipx is:
|
202
251
|
|
@@ -212,7 +261,7 @@ python3 -m pip install --user pipx
|
|
212
261
|
python3 -m pipx ensurepath
|
213
262
|
```
|
214
263
|
|
215
|
-
|
264
|
+
#### Installing with pipx
|
216
265
|
|
217
266
|
Then installing not1mm is as simple as:
|
218
267
|
|
@@ -228,22 +277,11 @@ If you need to later update not1mm, you can do so with:
|
|
228
277
|
pipx upgrade not1mm
|
229
278
|
```
|
230
279
|
|
231
|
-
|
280
|
+
## After the install
|
232
281
|
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
# Ubuntu
|
237
|
-
sudo apt install -y libportaudio2
|
238
|
-
|
239
|
-
# Fedora
|
240
|
-
sudo dnf install python3-pip portaudio
|
241
|
-
```
|
242
|
-
|
243
|
-
## After install
|
244
|
-
|
245
|
-
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
|
246
|
-
icon, which you can later click on to launch the application.
|
282
|
+
You can now open a new terminal and type `not1mm`. On it's first run, it may or
|
283
|
+
may not install a lovely non AI generated icon, which you can later click on to
|
284
|
+
launch the application.
|
247
285
|
|
248
286
|
### You may or may not get a warning message like
|
249
287
|
|
@@ -266,15 +304,14 @@ To avoid this you can export an environment variable and launch the app like thi
|
|
266
304
|
|
267
305
|
`mbridak@vm:~$ export QT_QPA_PLATFORM=wayland; not1mm`
|
268
306
|
|
269
|
-
For a more permanent solution you can place the line
|
270
|
-
|
271
|
-
|
307
|
+
For a more permanent solution you can place the line
|
308
|
+
`export QT_QPA_PLATFORM=wayland` in your home directories .bashrc file. Then
|
309
|
+
after logging out and back in you should be able to launch it normally.
|
272
310
|
|
273
|
-
|
311
|
+
### Installing from GitHub source
|
274
312
|
|
275
|
-
|
276
|
-
|
277
|
-
Since this is packaged for PyPI, if you want to work on your own source branch, after cloning from github you would:
|
313
|
+
Since this is packaged for PyPI, if you want to work on your own source branch,
|
314
|
+
after cloning from github you would:
|
278
315
|
|
279
316
|
```bash
|
280
317
|
pip install --upgrade pip
|
@@ -283,7 +320,8 @@ pip install build
|
|
283
320
|
source rebuild.sh
|
284
321
|
```
|
285
322
|
|
286
|
-
from the root directory. This installs a build chain and a local editable copy
|
323
|
+
from the root directory. This installs a build chain and a local editable copy
|
324
|
+
of not1mm.
|
287
325
|
|
288
326
|
There's two ways to launch the program from the local editable copy.
|
289
327
|
|
@@ -303,37 +341,51 @@ not1mm
|
|
303
341
|
|
304
342
|
### Data
|
305
343
|
|
306
|
-
If your system has an `XDG_DATA_HOME` environment variable set, the database and
|
344
|
+
If your system has an `XDG_DATA_HOME` environment variable set, the database and
|
345
|
+
CW macro files can be found there. Otherwise they will be found at
|
346
|
+
`yourhome/.local/share/not1mm`
|
307
347
|
|
308
348
|
### Config
|
309
349
|
|
310
|
-
Configuration file(s) can be found at the location defined by `XDG_CONFIG_HOME`.
|
350
|
+
Configuration file(s) can be found at the location defined by `XDG_CONFIG_HOME`.
|
351
|
+
Otherwise they will be found at `yourhome/.config/not1mm`
|
311
352
|
|
312
353
|
## The database
|
313
354
|
|
314
355
|
### Why
|
315
356
|
|
316
|
-
The database holds... wait for it... data... I know shocker right. A database
|
357
|
+
The database holds... wait for it... data... I know shocker right. A database
|
358
|
+
can hold one or many contest logs. It also holds the station information,
|
359
|
+
everything shown in the Station Settings dialog. You can have one database for
|
360
|
+
the rest of your life. Filled with hundreds of contests you've logged. Or, you
|
361
|
+
can create a new database to hold just one contest. You do You Boo.
|
317
362
|
|
318
363
|
### The first one
|
319
364
|
|
320
|
-
On the initial running, a database is created for you called `ham.db`. This, and
|
365
|
+
On the initial running, a database is created for you called `ham.db`. This, and
|
366
|
+
all future databases, are located in the data directory mentioned above.
|
321
367
|
|
322
368
|
### Why limit yourself
|
323
369
|
|
324
|
-
You can create a new database by selecting `File` > `New Database` from the main
|
370
|
+
You can create a new database by selecting `File` > `New Database` from the main
|
371
|
+
window, and give it a snazzy name. Why limit yourself. Hell, create one every
|
372
|
+
day for all I care. You can manage your own digital disaster.
|
325
373
|
|
326
374
|
### Revisiting an old friend
|
327
375
|
|
328
|
-
You can select a previously created databases for use by selecting
|
376
|
+
You can select a previously created databases for use by selecting
|
377
|
+
`File` > `Open Database`.
|
329
378
|
|
330
379
|
## Station Settings dialog (REQUIRED)
|
331
380
|
|
332
|
-
After initial run of the program or creating a new database you will need to
|
381
|
+
After initial run of the program or creating a new database you will need to
|
382
|
+
fill out the Station Settings dialog that will pop up.
|
333
383
|
|
334
384
|

|
335
385
|
|
336
|
-
You can fill it out if you want to. You can leave our friends behind.
|
386
|
+
You can fill it out if you want to. You can leave our friends behind.
|
387
|
+
'Cause your friends don't fill, and if they don't fill. Well, they're no friends
|
388
|
+
of mine.
|
337
389
|
|
338
390
|
You can fill. You can fill. Everyone look at your keys.
|
339
391
|
|
@@ -341,7 +393,8 @@ You can fill. You can fill. Everyone look at your keys.
|
|
341
393
|
|
342
394
|
### Changing station information
|
343
395
|
|
344
|
-
Station information can be changed any time by going to
|
396
|
+
Station information can be changed any time by going to
|
397
|
+
`File` > `Station Settings` and editing the information.
|
345
398
|
|
346
399
|
## Selecting a contest (REQUIRED)
|
347
400
|
|
@@ -359,11 +412,15 @@ Select `File` > `Open Contest`
|
|
359
412
|
|
360
413
|
### Editing existing contest parameters
|
361
414
|
|
362
|
-
You can edit the parameters of a previously defined contest by selecting it as
|
415
|
+
You can edit the parameters of a previously defined contest by selecting it as
|
416
|
+
the current contest. Then select `File` > `Edit Current Contest`. Click `OK` to
|
417
|
+
save the new values and reload the contest. `Cancel` to keep the existing
|
418
|
+
parameters.
|
363
419
|
|
364
420
|
## Configuration Settings
|
365
421
|
|
366
|
-
To setup your CAT control, CW keyer, Callsign lookups, select
|
422
|
+
To setup your CAT control, CW keyer, Callsign lookups, select
|
423
|
+
`File` > `Configuration Settings`
|
367
424
|
|
368
425
|
The tabs for groups and n1mm are disabled and are for future expansion.
|
369
426
|
|
@@ -371,7 +428,8 @@ The tabs for groups and n1mm are disabled and are for future expansion.
|
|
371
428
|
|
372
429
|
### Lookup
|
373
430
|
|
374
|
-
For callsign lookup, Two services are supported. QRZ and HamQTH. They require a
|
431
|
+
For callsign lookup, Two services are supported. QRZ and HamQTH. They require a
|
432
|
+
username and password, Enter it here.
|
375
433
|
|
376
434
|
### Soundcard
|
377
435
|
|
@@ -379,41 +437,59 @@ Choose the sound output device for the voice keyer.
|
|
379
437
|
|
380
438
|
### CAT Control
|
381
439
|
|
382
|
-
Under the `CAT` TAB, you can choose either `rigctld` normally with an IP of
|
440
|
+
Under the `CAT` TAB, you can choose either `rigctld` normally with an IP of
|
441
|
+
`127.0.0.1` and a port of `4532`. Or `flrig`, IP normally of `127.0.0.1` and a
|
442
|
+
port of `12345`. `None` is always an option, but is it really? There's an
|
443
|
+
onscreen icon for CAT status. Green good, Red bad, Grey neither.
|
383
444
|
|
384
445
|
### CW Keyer interface
|
385
446
|
|
386
|
-
Under the `CW` TAB, There are three options. `cwdaemon`, which normally uses IP
|
447
|
+
Under the `CW` TAB, There are three options. `cwdaemon`, which normally uses IP
|
448
|
+
`127.0.0.1` and port `6789`. `pywinkeyer` which normally uses IP `127.0.0.1` and
|
449
|
+
port `8000`. Or `None`, if you want to Morse it like it's 1899.
|
387
450
|
|
388
451
|
### Cluster
|
389
452
|
|
390
453
|

|
391
454
|
|
392
|
-
|
455
|
+
Under the `Cluster` TAB you can change the default AR Cluster server, port and
|
456
|
+
filter settings used for the bandmap window.
|
393
457
|
|
394
458
|
### N1MM Packets
|
395
459
|
|
396
|
-
Work has started on N1MM udp packets. So far just RadioInfo, contactinfo,
|
460
|
+
Work has started on N1MM udp packets. So far just RadioInfo, contactinfo,
|
461
|
+
contactreplace and contactdelete.
|
397
462
|
|
398
463
|

|
399
464
|
|
400
|
-
When entering IP and Ports, enter them with a colon ':' between them. You can
|
465
|
+
When entering IP and Ports, enter them with a colon ':' between them. You can
|
466
|
+
enter multiple pairs on the same line if separated by a space ' '.
|
401
467
|
|
402
468
|
### Bands
|
403
469
|
|
404
|
-
You can define which bands appear in the main window. Those with checkmarks will
|
470
|
+
You can define which bands appear in the main window. Those with checkmarks will
|
471
|
+
appear. Those without will not.
|
405
472
|
|
406
473
|

|
407
474
|
|
408
475
|
## Sending CW
|
409
476
|
|
410
|
-
Other than sending CW by hand, you can also send predefined CW text messages by
|
477
|
+
Other than sending CW by hand, you can also send predefined CW text messages by
|
478
|
+
pressing F1 - F12. See next section on Editing macro keys. If you need to send
|
479
|
+
something freeform, you can press CTRL-SHIFT-K, this will expose an entry field
|
480
|
+
at the bottom of the window which you can type directly into. When you're done
|
481
|
+
you can either press CTRL-SHIFT-K again, or press the Enter Key to close the
|
482
|
+
field.
|
411
483
|
|
412
484
|
## Editing macro keys
|
413
485
|
|
414
|
-
To edit the macros, choose `File` > `Edit Macros`. This will open your systems
|
486
|
+
To edit the macros, choose `File` > `Edit Macros`. This will open your systems
|
487
|
+
registered text editor with current macros loaded. When your done just save the
|
488
|
+
file and close the editor. The file loaded to edit, CW or SSB, will be
|
489
|
+
determined by your current operating mode.
|
415
490
|
|
416
|
-
After editing and saving the macro file. You can force the logger to reload the
|
491
|
+
After editing and saving the macro file. You can force the logger to reload the
|
492
|
+
macro file by toggeling between `Run` and `S&P` states.
|
417
493
|
|
418
494
|
### Macro substitutions
|
419
495
|
|
@@ -430,19 +506,37 @@ You can include a limited set of substitution instructions.
|
|
430
506
|
|
431
507
|
### Macro use with voice
|
432
508
|
|
433
|
-
The macros when used with voice, will also accept filenames of WAV files to
|
509
|
+
The macros when used with voice, will also accept filenames of WAV files to
|
510
|
+
play, excluding the file extension. The filename must be enclosed by brackets.
|
511
|
+
For example `[CQ]` will play `cq.wav`, `[again]` will play `again.wav`. The wav
|
512
|
+
files are stored in the operators personal data directory. The filenames must be
|
513
|
+
in lowercase. See [Various data file locations](#various-data-file-locations)
|
514
|
+
above for the location of your data files. For me, the macro `[cq]` will play
|
515
|
+
`/home/mbridak/.local/share/not1mm/K6GTE/cq.wav`
|
434
516
|
|
435
|
-
**The current wav files in place are not the ones you will want to use. They
|
517
|
+
**The current wav files in place are not the ones you will want to use. They
|
518
|
+
sound like an idiot.** You can use something like Audacity to record new wav
|
519
|
+
files in your own voice.
|
436
520
|
|
437
|
-
Aside from the `[filename]` wav files, there are also NATO phonetic wav files
|
521
|
+
Aside from the `[filename]` wav files, there are also NATO phonetic wav files
|
522
|
+
for each letter and number. So if your macro key holds
|
523
|
+
`{HISCALL} {SNT} {SENTNR}` and you have entered K5TUX in callsign field during
|
524
|
+
CQ WW SSB while in CQ Zone 3. You'll here Kilo 5 Tango Uniform X-ray, 5 9 9, 3.
|
525
|
+
Hopefully not in an idiots voice.
|
438
526
|
|
439
527
|
## cty.dat and QRZ lookups for distance and bearing
|
440
528
|
|
441
|
-
When a callsign is entered, a look up is first done in a cty.dat file to
|
529
|
+
When a callsign is entered, a look up is first done in a cty.dat file to
|
530
|
+
determin the country of origin, geographic center, cq zone and ITU region.
|
531
|
+
Great circle calculations are done to determin the heading and distance from
|
532
|
+
your gridsquare to the grographic center. This information then displayed at the
|
533
|
+
bottom left.
|
442
534
|
|
443
535
|

|
444
536
|
|
445
|
-
After this, a request is made to QRZ for the gridsquare of the callsign. If
|
537
|
+
After this, a request is made to QRZ for the gridsquare of the callsign. If
|
538
|
+
there is a response the information is recalculated and displayed. You'll know
|
539
|
+
is this has happened, since the gridsquare will replace the word "Regional".
|
446
540
|
|
447
541
|

|
448
542
|
|
@@ -454,13 +548,13 @@ After this, a request is made to QRZ for the gridsquare of the callsign. If ther
|
|
454
548
|
|
455
549
|
**You must press the SPACE bar after entering any of the above.**
|
456
550
|
|
457
|
-
## Windows
|
551
|
+
## The Windows
|
458
552
|
|
459
553
|
### The Main Window
|
460
554
|
|
461
555
|

|
462
556
|
|
463
|
-
|
557
|
+
#### Keyboard commands
|
464
558
|
|
465
559
|
| Key | Result |
|
466
560
|
| -------------- | --- |
|
@@ -480,15 +574,18 @@ After this, a request is made to QRZ for the gridsquare of the callsign. If ther
|
|
480
574
|
| [CTRL-G] | Tune to a spot matching partial text in the callsign entry field (CAT Required). |
|
481
575
|
| [CTRL-SHIFT-K] | Open CW text input field. |
|
482
576
|
|
483
|
-
### Log
|
577
|
+
### The Log Window
|
484
578
|
|
485
579
|
`Window`>`Log Window`
|
486
580
|
|
487
|
-
The Log display gets updated automatically when a contact is entered. The top
|
581
|
+
The Log display gets updated automatically when a contact is entered. The top
|
582
|
+
half is a list of all contacts.
|
488
583
|
|
489
584
|

|
490
585
|
|
491
|
-
The bottom half of the log displays contacts sorted by what's currently in the
|
586
|
+
The bottom half of the log displays contacts sorted by what's currently in the
|
587
|
+
call entry field. The columns displayed in the log window are dependant on what
|
588
|
+
contests is currently active.
|
492
589
|
|
493
590
|
#### Editing a contact
|
494
591
|
|
@@ -500,39 +597,48 @@ You can also Right-Click on a cell to bring up the edit dialog.
|
|
500
597
|
|
501
598
|

|
502
599
|
|
503
|
-
You can not directly edit the multiplier status of a contact. Instead see the
|
600
|
+
You can not directly edit the multiplier status of a contact. Instead see the
|
601
|
+
next section on recalculating mults. If you change the callsign make sure the
|
602
|
+
`WPX` field is still valid.
|
504
603
|
|
505
|
-
|
506
|
-
|
507
|
-
After editing a contact and before generating a Cabrillo file. There is a Misc menu option that will recalculate the multipliers incase an edit had caused a change.
|
508
|
-
|
509
|
-
## Bandmap
|
604
|
+
### The Bandmap Window
|
510
605
|
|
511
606
|
`Window`>`Bandmap`
|
512
607
|
|
513
608
|
Put your callsign in the top and press the connect button.
|
514
609
|
|
515
|
-
The bandmap window is, as with everything, a work in progress. The bandmap now
|
610
|
+
The bandmap window is, as with everything, a work in progress. The bandmap now
|
611
|
+
follows the VFO.
|
516
612
|
|
517
613
|

|
518
614
|
|
519
|
-
VFO indicator now displays as small triangle in the frequency tickmarks. A small
|
615
|
+
VFO indicator now displays as small triangle in the frequency tickmarks. A small
|
616
|
+
blue rectangle shows the receivers bandwidth if one is reported.
|
520
617
|
|
521
618
|

|
522
619
|
|
523
|
-
Clicked on spots now tune the radio and set the callsign field. Previously
|
620
|
+
Clicked on spots now tune the radio and set the callsign field. Previously
|
621
|
+
worked calls are displayed in red.
|
524
622
|
|
525
|
-
|
623
|
+
### The Check Window
|
526
624
|
|
527
625
|
`Window`>`Check Window`
|
528
626
|
|
529
|
-
As you enter a callsign, the Check Window will show probable matches to calls
|
627
|
+
As you enter a callsign, the Check Window will show probable matches to calls
|
628
|
+
either in the MASTER.SCP file, your local log or the recent telnet spots. The
|
629
|
+
MASTER.SCP column will show results for strings of 3 or more matching characters
|
630
|
+
from the start of the call string. The local log and telnet columns will show
|
631
|
+
matches of any length appearing anywhere in the string.
|
632
|
+
|
633
|
+
Clicking on any of these items will change the callsign field.
|
530
634
|
|
531
635
|

|
532
636
|
|
533
|
-
|
637
|
+
### The Remote VFO Window
|
534
638
|
|
535
|
-
You can control the VFO on a remote rig by following the directions listed in
|
639
|
+
You can control the VFO on a remote rig by following the directions listed in
|
640
|
+
the link below. It's a small hardware project with a BOM of under $20, and
|
641
|
+
consisting of two parts.
|
536
642
|
|
537
643
|
1. Making the [VFO](https://github.com/mbridak/not1mm/blob/master/usb_vfo_knob/vfo.md)...
|
538
644
|
2. Then... `Window`>`VFO`
|
@@ -553,7 +659,8 @@ K6GTE_CANADA-DAY_2023-09-04_07-47-05.log
|
|
553
659
|
|
554
660
|
Look, a log [eh](https://www.youtube.com/watch?v=El41sHXck-E)?
|
555
661
|
|
556
|
-
[This](https://www.youtube.com/watch?v=oMI23JJUpGE) outlines some differences
|
662
|
+
[This](https://www.youtube.com/watch?v=oMI23JJUpGE) outlines some differences
|
663
|
+
between ARRL Field Day and Canada Day.
|
557
664
|
|
558
665
|
## ADIF
|
559
666
|
|
@@ -563,32 +670,51 @@ Boom... ADIF
|
|
563
670
|
|
564
671
|
`StationCall`\_`ContestName`\_`Date`\_`Time`.adi
|
565
672
|
|
566
|
-
##
|
673
|
+
## Recalulate Mults
|
567
674
|
|
568
|
-
|
675
|
+
After editing a contact and before generating a Cabrillo file. There is a Misc
|
676
|
+
menu option that will recalculate the multipliers incase an edit had caused a
|
677
|
+
change.
|
569
678
|
|
570
679
|
## Contest specific notes
|
571
680
|
|
572
|
-
I found it might be beneficial to have a section devoted to wierd quirky things
|
681
|
+
I found it might be beneficial to have a section devoted to wierd quirky things
|
682
|
+
about operating a specific contests.
|
573
683
|
|
574
684
|
### ARRL Sweekstakes
|
575
685
|
|
576
686
|
#### The exchange parser
|
577
687
|
|
578
|
-
This was a pain in the tukus. There are so many elements to the exchange, and
|
688
|
+
This was a pain in the tukus. There are so many elements to the exchange, and
|
689
|
+
one input field aside from the callsign field. So I had to write sort of a
|
690
|
+
'parser'. The parser moves over your input string following some basic rules and
|
691
|
+
is re-evaluated with each keypress and the parsed result will be displayed in
|
692
|
+
the label over the field. The exchange looks like `124 A K6GTE 17 ORG`, a Serial
|
693
|
+
number, Precidence, Callsign, Year Licenced and Section. even though the
|
694
|
+
callsign is given as part of the exchange, the callsign does not have to be
|
695
|
+
entered and is pulled from the callsign field. If the exchange was entered as
|
696
|
+
`124 A 17 ORG` you would see:
|
579
697
|
|
580
698
|

|
581
699
|
|
582
|
-
You can enter the serial number and precidence, or the year and section as
|
700
|
+
You can enter the serial number and precidence, or the year and section as
|
701
|
+
pairs. For instance `124A 17ORG`. This would ensure the values get parsed
|
702
|
+
correctly.
|
583
703
|
|
584
|
-
You do not have to go back to correct typing. You can just tack the correct
|
704
|
+
You do not have to go back to correct typing. You can just tack the correct
|
705
|
+
items to the end of the field and the older values will get overwritten. So if
|
706
|
+
you entered `124A 17ORG Q`, the precidence will change from A to Q. If you need
|
707
|
+
to change the serial number you must append the precidence to it, `125A`.
|
585
708
|
|
586
|
-
If the callsign was entered wrong in the callsign field, you can put the correct
|
709
|
+
If the callsign was entered wrong in the callsign field, you can put the correct
|
710
|
+
callsign some where in the exchange. As long as it shows up in the parsed label
|
711
|
+
above correctly your good.
|
587
712
|
|
588
713
|
The best thing you can do is play around with it to see how it behaves.
|
589
714
|
|
590
715
|
#### The exchange
|
591
716
|
|
592
|
-
In the `Sent Exchange` field of the New Contest dialog put in the Precidence,
|
717
|
+
In the `Sent Exchange` field of the New Contest dialog put in the Precidence,
|
718
|
+
Call, Check and Section. Example: `A K6GTE 17 ORG`.
|
593
719
|
|
594
720
|
For the Run Exchange macro I'd put `{HISCALL} # A K6GTE 17 ORG`.
|
@@ -1,7 +1,7 @@
|
|
1
1
|
not1mm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
-
not1mm/__main__.py,sha256=
|
3
|
-
not1mm/bandmap.py,sha256=
|
4
|
-
not1mm/checkwindow.py,sha256=
|
2
|
+
not1mm/__main__.py,sha256=GhgvGedPUhRoahp924Qi6fAwbenCmuJXiE5F5pyuRHg,118379
|
3
|
+
not1mm/bandmap.py,sha256=a0QZj0HvPh8ixj207ANRHO29aKN3YMKolp_P47gSOtI,33404
|
4
|
+
not1mm/checkwindow.py,sha256=fDCKpDQ3bO_g5M88qUKO6Xz-ZuMOxphUgZcUxRh69So,7604
|
5
5
|
not1mm/fsutils.py,sha256=Li8Tq9K7c_q7onOHOQ7u1dOOFfhIIz5Aj2LKuQtGOO4,1652
|
6
6
|
not1mm/logwindow.py,sha256=2uy3oduImH1QNz5tBBrevsk7iMoYCUOTO7ttf92zN5w,43830
|
7
7
|
not1mm/vfo.py,sha256=ghtTmkhrug8YxYXUlJZOk7wN8jR8XNZKYTrcs4-E4rw,11530
|
@@ -103,7 +103,7 @@ not1mm/lib/plugin_common.py,sha256=AAKBPCXzTWZJb-h08uPNnHVG7bSCg7kwukc211gFivY,8
|
|
103
103
|
not1mm/lib/select_contest.py,sha256=Ezc7MTZXEbQ_nXK7gmghalqfbbDyxp0pAVt0-chBJOw,359
|
104
104
|
not1mm/lib/settings.py,sha256=9dyXiUZcrR57EVemGDrO2ad3HSMQbe5ngl_bxtZtEic,8877
|
105
105
|
not1mm/lib/super_check_partial.py,sha256=p5l3u2ZOCBtlWgbvskC50FpuoaIpR07tfC6zTdRWbh4,2334
|
106
|
-
not1mm/lib/version.py,sha256=
|
106
|
+
not1mm/lib/version.py,sha256=zyPYRGlb6qNTLHKshHMd9CAwvJzBXvKiaRdBpQav138,47
|
107
107
|
not1mm/lib/versiontest.py,sha256=8vDNptuBBunn-1IGkjNaquehqBYUJyjrPSF8Igmd4_Y,1286
|
108
108
|
not1mm/plugins/10_10_fall_cw.py,sha256=pG0cFmTNOFO03wXcI1a3EEaT1QK83yWIsrSdqCOU-gg,10834
|
109
109
|
not1mm/plugins/10_10_spring_cw.py,sha256=aWTohVrnZpT0SlQuqq7zxQaYe4SExEkOl3NI8xYYJWI,10840
|
@@ -137,9 +137,9 @@ not1mm/plugins/naqp_ssb.py,sha256=pof1k6Eg_MDQXSaCOJLh1jfVyyIri0LdHYrZQu7P_gs,11
|
|
137
137
|
not1mm/plugins/phone_weekly_test.py,sha256=EfLQzKREEXO_Ljg-q3VWg87JfbPVar9ydNhCdmHCrt8,12278
|
138
138
|
not1mm/plugins/stew_perry_topband.py,sha256=bjcImkZhBXpw4XKogs85mpShz7QgYbVohvhFMQ050DI,10546
|
139
139
|
not1mm/plugins/winter_field_day.py,sha256=7JK-RS1abcj1xQLnTF8rIPHRpDzmp4sAFBBML8b-Lwk,10212
|
140
|
-
not1mm-24.
|
141
|
-
not1mm-24.
|
142
|
-
not1mm-24.
|
143
|
-
not1mm-24.
|
144
|
-
not1mm-24.
|
145
|
-
not1mm-24.
|
140
|
+
not1mm-24.4.1.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
141
|
+
not1mm-24.4.1.dist-info/METADATA,sha256=a_dOeboBd2iCbbCsD6NFbGEV16tvyeIt2leV3jxC1-s,26175
|
142
|
+
not1mm-24.4.1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
143
|
+
not1mm-24.4.1.dist-info/entry_points.txt,sha256=pMcZk_0dxFgLkcUkF0Q874ojpwOmF3OL6EKw9LgvocM,47
|
144
|
+
not1mm-24.4.1.dist-info/top_level.txt,sha256=0YmTxEcDzQlzXub-lXASvoLpg_mt1c2thb5cVkDf5J4,7
|
145
|
+
not1mm-24.4.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|