not1mm 24.3.25.2__py3-none-any.whl → 24.3.27__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 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
@@ -43,8 +43,11 @@ class CheckWindow(QWidget):
43
43
  uic.loadUi(fsutils.APP_DATA_PATH / "checkwindow.ui", self)
44
44
 
45
45
  self.logList.clear()
46
+ self.logList.itemClicked.connect(self.item_clicked)
46
47
  self.masterList.clear()
48
+ self.masterList.itemClicked.connect(self.item_clicked)
47
49
  self.telnetList.clear()
50
+ self.telnetList.itemClicked.connect(self.item_clicked)
48
51
  self.callhistoryList.clear()
49
52
  self.callhistoryList.hide()
50
53
  self.callhistoryListLabel.hide()
@@ -54,10 +57,19 @@ class CheckWindow(QWidget):
54
57
  self.multicast_interface = Multicast(
55
58
  self.pref.get("multicast_group", "239.1.1.1"),
56
59
  self.pref.get("multicast_port", 2239),
57
- self.pref.get("interface_ip", "127.0.0.1"),
60
+ self.pref.get("interface_ip", "0,0,0,0"),
58
61
  )
59
62
  self.multicast_interface.ready_read_connect(self.watch_udp)
60
63
 
64
+ def item_clicked(self, item):
65
+ """docstring for item_clicked"""
66
+ if item:
67
+ cmd = {}
68
+ cmd["cmd"] = "CHANGECALL"
69
+ cmd["station"] = platform.node()
70
+ cmd["call"] = item.text()
71
+ self.multicast_interface.send_as_json(cmd)
72
+
61
73
  def setDarkMode(self, dark: bool):
62
74
  """Forces a darkmode palette."""
63
75
 
not1mm/lib/version.py CHANGED
@@ -1,3 +1,3 @@
1
1
  """It's the version"""
2
2
 
3
- __version__ = "24.3.25.2"
3
+ __version__ = "24.3.27"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: not1mm
3
- Version: 24.3.25.2
3
+ Version: 24.3.27
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
@@ -49,15 +49,19 @@ The worlds #1 unfinished contest logger <sup>*According to my daughter Corinna.<
49
49
  - [List of should be working contests](#list-of-should-be-working-contests)
50
50
  - [Recent Changes](#recent-changes)
51
51
  - [Installation](#installation)
52
+ - [Prerequisites](#prerequisites)
53
+ - [Common recipes for Ubuntu and Fedora](#common-recipes-for-ubuntu-and-fedora)
54
+ - [Ubuntu 22.04 LTS](#ubuntu-2204-lts)
55
+ - [Ubuntu 23.04](#ubuntu-2304)
56
+ - [Fedora 38 \& 39](#fedora-38--39)
52
57
  - [Python, PyPI, pip and pipx](#python-pypi-pip-and-pipx)
53
58
  - [Bootstrapping pipx](#bootstrapping-pipx)
54
59
  - [Installing with pipx](#installing-with-pipx)
55
- - [Installing portaudio](#installing-portaudio)
56
- - [After install](#after-install)
60
+ - [After the install](#after-the-install)
57
61
  - [You may or may not get a warning message like](#you-may-or-may-not-get-a-warning-message-like)
58
62
  - [Or this fan favorite](#or-this-fan-favorite)
59
- - [Wayland Compositor](#wayland-compositor)
60
63
  - [Running from source](#running-from-source)
64
+ - [Wayland Compositor](#wayland-compositor)
61
65
  - [Various data file locations](#various-data-file-locations)
62
66
  - [Data](#data)
63
67
  - [Config](#config)
@@ -107,20 +111,28 @@ The worlds #1 unfinished contest logger <sup>*According to my daughter Corinna.<
107
111
 
108
112
  ## What and why is Not1MM
109
113
 
110
- Not1MM's interface is a blatant ripoff of N1MM.
111
- It is NOT N1MM and any problem you have with this software should in no way reflect on their software.
114
+ Not1MM's interface is a blatant ripoff of N1MM. It is NOT N1MM and any problem
115
+ you have with this software should in no way reflect on their software.
112
116
 
113
- If you use Windows(tm), you should run away from Not1MM and use someother program.
117
+ If you use Windows(tm), you should run away from Not1MM and use someother
118
+ program.
114
119
 
115
- I personally don't use Windows(tm). While it may be possible to get N1MM working under Wine, I haven't checked. I'd rather not have to jump thru the hoops.
120
+ I personally don't use Windows(tm). While it may be possible to get N1MM working
121
+ under Wine, I haven't checked. I'd rather not have to jump thru the hoops.
116
122
 
117
- **Currently this exists for my own personal amusement**.
118
- Something to do in my free time.
119
- While I'm not watching TV, Right vs Left political 'News' programs, mind numbing 'Reality' shows etc...
123
+ **Currently this exists for my own personal amusement**. Something to do in my
124
+ free time. While I'm not watching TV, Right vs Left political 'News' programs,
125
+ mind numbing 'Reality' shows etc...
120
126
 
121
127
  ## Current state
122
128
 
123
- The current state is "**BETA**". I've used it for a few contests, and was able to work contacts and submit a cabrillo at the end. I'm not a "Contester". So I'll add contests as/if I work them. I'm only one guy, so if you see a bug let me know. I don't do much of any Data or RTTY operating. This is why you don't see RTTY in the list of working contests. The Lord helps those who burn people at the... I mean who help themselves. Feel free to fill in that hole with a pull request.
129
+ The current state is "**BETA**". I've used it for a few contests, and was able
130
+ to work contacts and submit a cabrillo at the end. I'm not a "Contester". So
131
+ I'll add contests as/if I work them. I'm only one guy, so if you see a bug let
132
+ me know. I don't do much of any Data or RTTY operating. This is why you don't
133
+ see RTTY in the list of working contests. The Lord helps those who burn people
134
+ at the... I mean who help themselves. Feel free to fill in that hole with a pull
135
+ request.
124
136
 
125
137
  ![main screen](https://github.com/mbridak/not1mm/raw/master/pic/main.png)
126
138
 
@@ -167,6 +179,7 @@ I wish to thank those who've contributed to the project.
167
179
 
168
180
  ## Recent Changes
169
181
 
182
+ - [24-3-27] Made items in the checkwindow clickable. Removed connection check in bandmap preventing marked calls from appearing.
170
183
  - [24-3-25-1] Dark mode sorted out. Atleast for me...
171
184
  - [24-3-25] Yanked version 24-3-24-1. Fixed widget focus issues.
172
185
  - [24-3-24-1] Killed an SQL query bug causing crash when pressing arrow down.
@@ -186,15 +199,58 @@ See [CHANGELOG.md](CHANGELOG.md) for prior changes.
186
199
 
187
200
  ## Installation
188
201
 
202
+ ### Prerequisites
203
+
204
+ not1mm requires Python 3.9+, PyQt5 and libportaudio2. You should install these
205
+ through your distribution's package manager before continuing.
206
+
207
+ ### Common recipes for Ubuntu and Fedora
208
+
209
+ #### Ubuntu 22.04 LTS
210
+
211
+ ```bash
212
+ sudo apt update
213
+ sudo apt upgrade
214
+ sudo apt install -y libportaudio2 python3-pip python3-pyqt5 python3-numpy
215
+ pip install -U not1mm
216
+ ```
217
+
218
+ #### Ubuntu 23.04
219
+
220
+ ```bash
221
+ sudo apt update
222
+ sudo apt upgrade
223
+ sudo apt install -y libportaudio2 pipx
224
+ pipx install not1mm
225
+ pipx ensurepath
226
+ ```
227
+
228
+ #### Fedora 38 & 39
229
+
230
+ ```bash
231
+ sudo dnf upgrade --refresh
232
+ sudo dnf install python3-pip portaudio
233
+ pip install not1mm
234
+ ```
235
+
236
+ You can now open a new terminal and type not1mm. On it's first run, it may or
237
+ may not install a lovely non AI generated icon, which you can later click on to
238
+ launch the application.
239
+
189
240
  ### Python, PyPI, pip and pipx
190
241
 
191
- 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:
242
+ This software is a Python package hosted on PyPI, and installable with the pip
243
+ or pipx command. If this is your first exposure to Python packaging you can get
244
+ all the details from:
192
245
 
193
246
  - [The PyPA](https://packaging.python.org/en/latest/tutorials/installing-packages/)
194
247
  - [Install packages in a virtual environment using pip and venv](https://packaging.python.org/en/latest/guides/installing-using-pip-and-virtual-environments/)
195
248
  - [Installing stand alone command line tools](https://packaging.python.org/en/latest/guides/installing-stand-alone-command-line-tools/)
196
249
 
197
- 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**.
250
+ In short, You should install stuff into a Python virtual environment. Newer
251
+ Linux distros will make you do this unless you include a command line argument
252
+ akin to '--break-my-system' when using pip. I'm not telling you to use pipx.
253
+ But... **Use pipx**.
198
254
 
199
255
  ### Bootstrapping pipx
200
256
 
@@ -228,22 +284,11 @@ If you need to later update not1mm, you can do so with:
228
284
  pipx upgrade not1mm
229
285
  ```
230
286
 
231
- ### Installing portaudio
232
-
233
- not1mm uses portaudio to play audio. You can install it with:
234
-
235
- ```bash
236
- # Ubuntu
237
- sudo apt install -y libportaudio2
238
-
239
- # Fedora
240
- sudo dnf install python3-pip portaudio
241
- ```
287
+ ## After the install
242
288
 
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.
289
+ You can now open a new terminal and type `not1mm`. On it's first run, it may or
290
+ may not install a lovely non AI generated icon, which you can later click on to
291
+ launch the application.
247
292
 
248
293
  ### You may or may not get a warning message like
249
294
 
@@ -266,15 +311,14 @@ To avoid this you can export an environment variable and launch the app like thi
266
311
 
267
312
  `mbridak@vm:~$ export QT_QPA_PLATFORM=wayland; not1mm`
268
313
 
269
- 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.
270
-
271
- ## Wayland Compositor
272
-
273
- 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.
314
+ For a more permanent solution you can place the line
315
+ `export QT_QPA_PLATFORM=wayland` in your home directories .bashrc file. Then
316
+ after logging out and back in you should be able to launch it normally.
274
317
 
275
318
  ### Running from source
276
319
 
277
- Since this is packaged for PyPI, if you want to work on your own source branch, after cloning from github you would:
320
+ Since this is packaged for PyPI, if you want to work on your own source branch,
321
+ after cloning from github you would:
278
322
 
279
323
  ```bash
280
324
  pip install --upgrade pip
@@ -283,7 +327,8 @@ pip install build
283
327
  source rebuild.sh
284
328
  ```
285
329
 
286
- from the root directory. This installs a build chain and a local editable copy of not1mm.
330
+ from the root directory. This installs a build chain and a local editable copy
331
+ of not1mm.
287
332
 
288
333
  There's two ways to launch the program from the local editable copy.
289
334
 
@@ -299,41 +344,62 @@ or be in some other directory and just type:
299
344
  not1mm
300
345
  ```
301
346
 
347
+ ## Wayland Compositor
348
+
349
+ One side effect of Wayland is that we are not able to request for a window to
350
+ regain or retain focus. So if you were to click on a spot in the bandmap window
351
+ to tune to that spot, you would have to then click on the main window to
352
+ continue entering contest data. I'm aware of this, but I can not change it.
353
+
302
354
  ## Various data file locations
303
355
 
304
356
  ### Data
305
357
 
306
- If your system has an `XDG_DATA_HOME` environment variable set, the database and CW macro files can be found there. Otherwise they will be found at `yourhome/.local/share/not1mm`
358
+ If your system has an `XDG_DATA_HOME` environment variable set, the database and
359
+ CW macro files can be found there. Otherwise they will be found at
360
+ `yourhome/.local/share/not1mm`
307
361
 
308
362
  ### Config
309
363
 
310
- Configuration file(s) can be found at the location defined by `XDG_CONFIG_HOME`. Otherwise they will be found at `yourhome/.config/not1mm`
364
+ Configuration file(s) can be found at the location defined by `XDG_CONFIG_HOME`.
365
+ Otherwise they will be found at `yourhome/.config/not1mm`
311
366
 
312
367
  ## The database
313
368
 
314
369
  ### Why
315
370
 
316
- The database holds... wait for it... data... I know shocker right. A database can hold one or many contest logs. It also holds the station information, everything shown in the Station Settings dialog. You can have one database for the rest of your life. Filled with hundreds of contests you've logged. Or, you can create a new database to hold just one contest. You do You Boo.
371
+ The database holds... wait for it... data... I know shocker right. A database
372
+ can hold one or many contest logs. It also holds the station information,
373
+ everything shown in the Station Settings dialog. You can have one database for
374
+ the rest of your life. Filled with hundreds of contests you've logged. Or, you
375
+ can create a new database to hold just one contest. You do You Boo.
317
376
 
318
377
  ### The first one
319
378
 
320
- On the initial running, a database is created for you called `ham.db`. This, and all future databases, are located in the data directory mentioned above.
379
+ On the initial running, a database is created for you called `ham.db`. This, and
380
+ all future databases, are located in the data directory mentioned above.
321
381
 
322
382
  ### Why limit yourself
323
383
 
324
- You can create a new database by selecting `File` > `New Database` from the main window, and give it a snazzy name. Why limit yourself. Hell, create one every day for all I care. You can manage your own digital disaster.
384
+ You can create a new database by selecting `File` > `New Database` from the main
385
+ window, and give it a snazzy name. Why limit yourself. Hell, create one every
386
+ day for all I care. You can manage your own digital disaster.
325
387
 
326
388
  ### Revisiting an old friend
327
389
 
328
- You can select a previously created databases for use by selecting `File` > `Open Database`.
390
+ You can select a previously created databases for use by selecting
391
+ `File` > `Open Database`.
329
392
 
330
393
  ## Station Settings dialog (REQUIRED)
331
394
 
332
- After initial run of the program or creating a new database you will need to fill out the Station Settings dialog that will pop up.
395
+ After initial run of the program or creating a new database you will need to
396
+ fill out the Station Settings dialog that will pop up.
333
397
 
334
398
  ![settings screen](https://github.com/mbridak/not1mm/raw/master/pic/settings.png)
335
399
 
336
- You can fill it out if you want to. You can leave our friends behind. 'Cause your friends don't fill, and if they don't fill. Well, they're no friends of mine.
400
+ You can fill it out if you want to. You can leave our friends behind.
401
+ 'Cause your friends don't fill, and if they don't fill. Well, they're no friends
402
+ of mine.
337
403
 
338
404
  You can fill. You can fill. Everyone look at your keys.
339
405
 
@@ -341,7 +407,8 @@ You can fill. You can fill. Everyone look at your keys.
341
407
 
342
408
  ### Changing station information
343
409
 
344
- Station information can be changed any time by going to `File` > `Station Settings` and editing the information.
410
+ Station information can be changed any time by going to
411
+ `File` > `Station Settings` and editing the information.
345
412
 
346
413
  ## Selecting a contest (REQUIRED)
347
414
 
@@ -359,11 +426,15 @@ Select `File` > `Open Contest`
359
426
 
360
427
  ### Editing existing contest parameters
361
428
 
362
- 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.
429
+ You can edit the parameters of a previously defined contest by selecting it as
430
+ the current contest. Then select `File` > `Edit Current Contest`. Click `OK` to
431
+ save the new values and reload the contest. `Cancel` to keep the existing
432
+ parameters.
363
433
 
364
434
  ## Configuration Settings
365
435
 
366
- To setup your CAT control, CW keyer, Callsign lookups, select `File` > `Configuration Settings`
436
+ To setup your CAT control, CW keyer, Callsign lookups, select
437
+ `File` > `Configuration Settings`
367
438
 
368
439
  The tabs for groups and n1mm are disabled and are for future expansion.
369
440
 
@@ -371,7 +442,8 @@ The tabs for groups and n1mm are disabled and are for future expansion.
371
442
 
372
443
  ### Lookup
373
444
 
374
- For callsign lookup, Two services are supported. QRZ and HamQTH. They require a username and password, Enter it here.
445
+ For callsign lookup, Two services are supported. QRZ and HamQTH. They require a
446
+ username and password, Enter it here.
375
447
 
376
448
  ### Soundcard
377
449
 
@@ -379,41 +451,59 @@ Choose the sound output device for the voice keyer.
379
451
 
380
452
  ### CAT Control
381
453
 
382
- 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.
454
+ Under the `CAT` TAB, you can choose either `rigctld` normally with an IP of
455
+ `127.0.0.1` and a port of `4532`. Or `flrig`, IP normally of `127.0.0.1` and a
456
+ port of `12345`. `None` is always an option, but is it really? There's an
457
+ onscreen icon for CAT status. Green good, Red bad, Grey neither.
383
458
 
384
459
  ### CW Keyer interface
385
460
 
386
- Under the `CW` TAB, There are three options. `cwdaemon`, which normally uses IP `127.0.0.1` and port `6789`. `pywinkeyer` which normally uses IP `127.0.0.1` and port `8000`. Or `None`, if you want to Morse it like it's 1899.
461
+ Under the `CW` TAB, There are three options. `cwdaemon`, which normally uses IP
462
+ `127.0.0.1` and port `6789`. `pywinkeyer` which normally uses IP `127.0.0.1` and
463
+ port `8000`. Or `None`, if you want to Morse it like it's 1899.
387
464
 
388
465
  ### Cluster
389
466
 
390
467
  ![Configuration Settings screen](https://github.com/mbridak/not1mm/raw/master/pic/configuration_cluster.png)
391
468
 
392
- Under the `Cluster` TAB you can change the default AR Cluster server, port and filter settings used for the bandmap window.
469
+ Under the `Cluster` TAB you can change the default AR Cluster server, port and
470
+ filter settings used for the bandmap window.
393
471
 
394
472
  ### N1MM Packets
395
473
 
396
- Work has started on N1MM udp packets. So far just RadioInfo, contactinfo, contactreplace and contactdelete.
474
+ Work has started on N1MM udp packets. So far just RadioInfo, contactinfo,
475
+ contactreplace and contactdelete.
397
476
 
398
477
  ![N1MM Packet Configuration Screen](https://github.com/mbridak/not1mm/blob/master/pic/n1mm_packet_config.png?raw=true)
399
478
 
400
- When entering IP and Ports, enter them with a colon ':' between them. You can enter multiple pairs on the same line if separated by a space ' '.
479
+ When entering IP and Ports, enter them with a colon ':' between them. You can
480
+ enter multiple pairs on the same line if separated by a space ' '.
401
481
 
402
482
  ### Bands
403
483
 
404
- You can define which bands appear in the main window. Those with checkmarks will appear. Those without will not.
484
+ You can define which bands appear in the main window. Those with checkmarks will
485
+ appear. Those without will not.
405
486
 
406
487
  ![Bands Configuration Screen](https://github.com/mbridak/not1mm/raw/master/pic/configure_bands.png)
407
488
 
408
489
  ## Sending CW
409
490
 
410
- Other than sending CW by hand, you can also send predefined CW text messages by pressing F1 - F12. See next section on Editing macro keys. If you need to send something freeform, you can press CTRL-SHIFT-K, this will expose an entry field at the bottom of the window which you can type directly into. When you're done you can either press CTRL-SHIFT-K again, or press the Enter Key to close the field.
491
+ Other than sending CW by hand, you can also send predefined CW text messages by
492
+ pressing F1 - F12. See next section on Editing macro keys. If you need to send
493
+ something freeform, you can press CTRL-SHIFT-K, this will expose an entry field
494
+ at the bottom of the window which you can type directly into. When you're done
495
+ you can either press CTRL-SHIFT-K again, or press the Enter Key to close the
496
+ field.
411
497
 
412
498
  ## Editing macro keys
413
499
 
414
- To edit the macros, choose `File` > `Edit Macros`. This will open your systems registered text editor with current macros loaded. When your done just save the file and close the editor. The file loaded to edit, CW or SSB, will be determined by your current operating mode.
500
+ To edit the macros, choose `File` > `Edit Macros`. This will open your systems
501
+ registered text editor with current macros loaded. When your done just save the
502
+ file and close the editor. The file loaded to edit, CW or SSB, will be
503
+ determined by your current operating mode.
415
504
 
416
- After editing and saving the macro file. You can force the logger to reload the macro file by toggeling between `Run` and `S&P` states.
505
+ After editing and saving the macro file. You can force the logger to reload the
506
+ macro file by toggeling between `Run` and `S&P` states.
417
507
 
418
508
  ### Macro substitutions
419
509
 
@@ -430,19 +520,37 @@ You can include a limited set of substitution instructions.
430
520
 
431
521
  ### Macro use with voice
432
522
 
433
- The macros when used with voice, will also accept filenames of WAV files to play, excluding the file extension. The filename must be enclosed by brackets. For example `[CQ]` will play `cq.wav`, `[again]` will play `again.wav`. The wav files are stored in the operators personal data directory. The filenames must be in lowercase. See [Various data file locations](#various-data-file-locations) above for the location of your data files. For me, the macro `[cq]` will play `/home/mbridak/.local/share/not1mm/K6GTE/cq.wav`
523
+ The macros when used with voice, will also accept filenames of WAV files to
524
+ play, excluding the file extension. The filename must be enclosed by brackets.
525
+ For example `[CQ]` will play `cq.wav`, `[again]` will play `again.wav`. The wav
526
+ files are stored in the operators personal data directory. The filenames must be
527
+ in lowercase. See [Various data file locations](#various-data-file-locations)
528
+ above for the location of your data files. For me, the macro `[cq]` will play
529
+ `/home/mbridak/.local/share/not1mm/K6GTE/cq.wav`
434
530
 
435
- **The current wav files in place are not the ones you will want to use. They sound like an idiot.** You can use something like Audacity to record new wav files in your own voice.
531
+ **The current wav files in place are not the ones you will want to use. They
532
+ sound like an idiot.** You can use something like Audacity to record new wav
533
+ files in your own voice.
436
534
 
437
- Aside from the `[filename]` wav files, there are also NATO phonetic wav files for each letter and number. So if your macro key holds `{HISCALL} {SNT} {SENTNR}` and you have entered K5TUX in callsign field during CQ WW SSB while in CQ Zone 3. You'll here Kilo 5 Tango Uniform X-ray, 5 9 9, 3. Hopefully not in an idiots voice.
535
+ Aside from the `[filename]` wav files, there are also NATO phonetic wav files
536
+ for each letter and number. So if your macro key holds
537
+ `{HISCALL} {SNT} {SENTNR}` and you have entered K5TUX in callsign field during
538
+ CQ WW SSB while in CQ Zone 3. You'll here Kilo 5 Tango Uniform X-ray, 5 9 9, 3.
539
+ Hopefully not in an idiots voice.
438
540
 
439
541
  ## cty.dat and QRZ lookups for distance and bearing
440
542
 
441
- When a callsign is entered, a look up is first done in a cty.dat file to determin the country of origin, geographic center, cq zone and ITU region. Great circle calculations are done to determin the heading and distance from your gridsquare to the grographic center. This information then displayed at the bottom left.
543
+ When a callsign is entered, a look up is first done in a cty.dat file to
544
+ determin the country of origin, geographic center, cq zone and ITU region.
545
+ Great circle calculations are done to determin the heading and distance from
546
+ your gridsquare to the grographic center. This information then displayed at the
547
+ bottom left.
442
548
 
443
549
  ![snapshot of heading and distance](https://github.com/mbridak/not1mm/raw/master/pic/heading_distance.png)
444
550
 
445
- After this, a request is made to QRZ for the gridsquare of the callsign. If there is a response the information is recalculated and displayed. You'll know is this has happened, since the gridsquare will replace the word "Regional".
551
+ After this, a request is made to QRZ for the gridsquare of the callsign. If
552
+ there is a response the information is recalculated and displayed. You'll know
553
+ is this has happened, since the gridsquare will replace the word "Regional".
446
554
 
447
555
  ![snapshot of heading and distance](https://github.com/mbridak/not1mm/raw/master/pic/heading_distance_qrz.png)
448
556
 
@@ -484,11 +592,14 @@ After this, a request is made to QRZ for the gridsquare of the callsign. If ther
484
592
 
485
593
  `Window`>`Log Window`
486
594
 
487
- The Log display gets updated automatically when a contact is entered. The top half is a list of all contacts.
595
+ The Log display gets updated automatically when a contact is entered. The top
596
+ half is a list of all contacts.
488
597
 
489
598
  ![Log Display Window](https://github.com/mbridak/not1mm/raw/master/pic/logdisplay.png)
490
599
 
491
- The bottom half of the log displays contacts sorted by what's currently in the call entry field. The columns displayed in the log window are dependant on what contests is currently active.
600
+ The bottom half of the log displays contacts sorted by what's currently in the
601
+ call entry field. The columns displayed in the log window are dependant on what
602
+ contests is currently active.
492
603
 
493
604
  #### Editing a contact
494
605
 
@@ -500,11 +611,15 @@ You can also Right-Click on a cell to bring up the edit dialog.
500
611
 
501
612
  ![right click edit dialog](https://github.com/mbridak/not1mm/raw/master/pic/edit_dialog.png)
502
613
 
503
- You can not directly edit the multiplier status of a contact. Instead see the next section on recalculating mults. If you change the callsign make sure the `WPX` field is still valid.
614
+ You can not directly edit the multiplier status of a contact. Instead see the
615
+ next section on recalculating mults. If you change the callsign make sure the
616
+ `WPX` field is still valid.
504
617
 
505
618
  ## Recalulate Mults
506
619
 
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.
620
+ After editing a contact and before generating a Cabrillo file. There is a Misc
621
+ menu option that will recalculate the multipliers incase an edit had caused a
622
+ change.
508
623
 
509
624
  ## Bandmap
510
625
 
@@ -512,27 +627,38 @@ After editing a contact and before generating a Cabrillo file. There is a Misc m
512
627
 
513
628
  Put your callsign in the top and press the connect button.
514
629
 
515
- The bandmap window is, as with everything, a work in progress. The bandmap now follows the VFO.
630
+ The bandmap window is, as with everything, a work in progress. The bandmap now
631
+ follows the VFO.
516
632
 
517
633
  ![Bandmap Window](https://github.com/mbridak/not1mm/raw/master/pic/bandmap.png)
518
634
 
519
- VFO indicator now displays as small triangle in the frequency tickmarks. A small blue rectangle shows the receivers bandwidth if one is reported.
635
+ VFO indicator now displays as small triangle in the frequency tickmarks. A small
636
+ blue rectangle shows the receivers bandwidth if one is reported.
520
637
 
521
638
  ![Bandmap Window](https://github.com/mbridak/not1mm/raw/master/pic/VFO_and_bandwidth_markers.png)
522
639
 
523
- Clicked on spots now tune the radio and set the callsign field. Previously worked calls are displayed in red.
640
+ Clicked on spots now tune the radio and set the callsign field. Previously
641
+ worked calls are displayed in red.
524
642
 
525
643
  ## Check Window
526
644
 
527
645
  `Window`>`Check Window`
528
646
 
529
- As you enter a callsign, the Check Window will show probable matches to calls either in the MASTER.SCP file, your local log or the recent telnet spots. The MASTER.SCP column will show results for strings of 3 or more matching characters from the start of the call string. The local log and telnet columns will show matches of any length appearing anywhere in the string.
647
+ As you enter a callsign, the Check Window will show probable matches to calls
648
+ either in the MASTER.SCP file, your local log or the recent telnet spots. The
649
+ MASTER.SCP column will show results for strings of 3 or more matching characters
650
+ from the start of the call string. The local log and telnet columns will show
651
+ matches of any length appearing anywhere in the string.
652
+
653
+ Clicking on any of these items will change the callsign field.
530
654
 
531
655
  ![Check Window](https://github.com/mbridak/not1mm/raw/master/pic/checkwindow.png)
532
656
 
533
657
  ## Remote VFO
534
658
 
535
- You can control the VFO on a remote rig by following the directions listed in the link below. It's a small hardware project with a BOM of under $20, and consisting of two parts.
659
+ You can control the VFO on a remote rig by following the directions listed in
660
+ the link below. It's a small hardware project with a BOM of under $20, and
661
+ consisting of two parts.
536
662
 
537
663
  1. Making the [VFO](https://github.com/mbridak/not1mm/blob/master/usb_vfo_knob/vfo.md)...
538
664
  2. Then... `Window`>`VFO`
@@ -553,7 +679,8 @@ K6GTE_CANADA-DAY_2023-09-04_07-47-05.log
553
679
 
554
680
  Look, a log [eh](https://www.youtube.com/watch?v=El41sHXck-E)?
555
681
 
556
- [This](https://www.youtube.com/watch?v=oMI23JJUpGE) outlines some differences between ARRL Field Day and Canada Day.
682
+ [This](https://www.youtube.com/watch?v=oMI23JJUpGE) outlines some differences
683
+ between ARRL Field Day and Canada Day.
557
684
 
558
685
  ## ADIF
559
686
 
@@ -569,26 +696,43 @@ Added dupe checking. Big Red 'Dupe' will appear if it's a dupe...
569
696
 
570
697
  ## Contest specific notes
571
698
 
572
- I found it might be beneficial to have a section devoted to wierd quirky things about operating a specific contests.
699
+ I found it might be beneficial to have a section devoted to wierd quirky things
700
+ about operating a specific contests.
573
701
 
574
702
  ### ARRL Sweekstakes
575
703
 
576
704
  #### The exchange parser
577
705
 
578
- This was a pain in the tukus. There are so many elements to the exchange, and one input field aside from the callsign field. So I had to write sort of a 'parser'. The parser moves over your input string following some basic rules and is re-evaluated with each keypress and the parsed result will be displayed in the label over the field. The exchange looks like `124 A K6GTE 17 ORG`, a Serial number, Precidence, Callsign, Year Licenced and Section. even though the callsign is given as part of the exchange, the callsign does not have to be entered and is pulled from the callsign field. If the exchange was entered as `124 A 17 ORG` you would see:
706
+ This was a pain in the tukus. There are so many elements to the exchange, and
707
+ one input field aside from the callsign field. So I had to write sort of a
708
+ 'parser'. The parser moves over your input string following some basic rules and
709
+ is re-evaluated with each keypress and the parsed result will be displayed in
710
+ the label over the field. The exchange looks like `124 A K6GTE 17 ORG`, a Serial
711
+ number, Precidence, Callsign, Year Licenced and Section. even though the
712
+ callsign is given as part of the exchange, the callsign does not have to be
713
+ entered and is pulled from the callsign field. If the exchange was entered as
714
+ `124 A 17 ORG` you would see:
579
715
 
580
716
  ![SS Parser Result](https://github.com/mbridak/not1mm/raw/master/pic/ss_parser_1.png)
581
717
 
582
- You can enter the serial number and precidence, or the year and section as pairs. For instance `124A 17ORG`. This would ensure the values get parsed correctly.
718
+ You can enter the serial number and precidence, or the year and section as
719
+ pairs. For instance `124A 17ORG`. This would ensure the values get parsed
720
+ correctly.
583
721
 
584
- You do not have to go back to correct typing. You can just tack the correct items to the end of the field and the older values will get overwritten. So if you entered `124A 17ORG Q`, the precidence will change from A to Q. If you need to change the serial number you must append the precidence to it, `125A`.
722
+ You do not have to go back to correct typing. You can just tack the correct
723
+ items to the end of the field and the older values will get overwritten. So if
724
+ you entered `124A 17ORG Q`, the precidence will change from A to Q. If you need
725
+ to change the serial number you must append the precidence to it, `125A`.
585
726
 
586
- If the callsign was entered wrong in the callsign field, you can put the correct callsign some where in the exchange. As long as it shows up in the parsed label above correctly your good.
727
+ If the callsign was entered wrong in the callsign field, you can put the correct
728
+ callsign some where in the exchange. As long as it shows up in the parsed label
729
+ above correctly your good.
587
730
 
588
731
  The best thing you can do is play around with it to see how it behaves.
589
732
 
590
733
  #### The exchange
591
734
 
592
- In the `Sent Exchange` field of the New Contest dialog put in the Precidence, Call, Check and Section. Example: `A K6GTE 17 ORG`.
735
+ In the `Sent Exchange` field of the New Contest dialog put in the Precidence,
736
+ Call, Check and Section. Example: `A K6GTE 17 ORG`.
593
737
 
594
738
  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=Y5GZ0Fc3q9VFmQLIuxfFGSTQ-GLYZ6lCvDPhEGErvwk,118020
3
- not1mm/bandmap.py,sha256=pgFxlkIAXoDyF13tl4eMRtiE668epu81nmf7Et78TAk,33715
4
- not1mm/checkwindow.py,sha256=pZKGRYF0hwyBJfSEeX2F5mCxR2tsLOagRSsYM5vtjA4,7376
2
+ not1mm/__main__.py,sha256=GhgvGedPUhRoahp924Qi6fAwbenCmuJXiE5F5pyuRHg,118379
3
+ not1mm/bandmap.py,sha256=a0QZj0HvPh8ixj207ANRHO29aKN3YMKolp_P47gSOtI,33404
4
+ not1mm/checkwindow.py,sha256=TZbeX7IQCoKV8mKoB6HWUOZz6XxpDW7Vb3GvpDfehFs,7850
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=2igm7YIX4NC-lnaGlgUqlyvUh0xMhPhOcLCKnT2MEb8,50
106
+ not1mm/lib/version.py,sha256=IpjqBMjJNDsk2O3WzC_DpJzHa21DCNn_zNQC9cgEwlg,48
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.3.25.2.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
141
- not1mm-24.3.25.2.dist-info/METADATA,sha256=Fo0kdSXnMuBLlQIwWuuhUn7OkeESON4HEmAkSSGLFmg,26105
142
- not1mm-24.3.25.2.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
143
- not1mm-24.3.25.2.dist-info/entry_points.txt,sha256=pMcZk_0dxFgLkcUkF0Q874ojpwOmF3OL6EKw9LgvocM,47
144
- not1mm-24.3.25.2.dist-info/top_level.txt,sha256=0YmTxEcDzQlzXub-lXASvoLpg_mt1c2thb5cVkDf5J4,7
145
- not1mm-24.3.25.2.dist-info/RECORD,,
140
+ not1mm-24.3.27.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
141
+ not1mm-24.3.27.dist-info/METADATA,sha256=9fH5dH0rYoyFXAwpZrm5xWOC9Y6HmprnJ5dAYBh4Z80,27117
142
+ not1mm-24.3.27.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
143
+ not1mm-24.3.27.dist-info/entry_points.txt,sha256=pMcZk_0dxFgLkcUkF0Q874ojpwOmF3OL6EKw9LgvocM,47
144
+ not1mm-24.3.27.dist-info/top_level.txt,sha256=0YmTxEcDzQlzXub-lXASvoLpg_mt1c2thb5cVkDf5J4,7
145
+ not1mm-24.3.27.dist-info/RECORD,,