not1mm 24.11.21__py3-none-any.whl → 24.12.3.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 CHANGED
@@ -256,7 +256,7 @@ class MainWindow(QtWidgets.QMainWindow):
256
256
  self.actionNew_Database.triggered.connect(self.new_database)
257
257
  self.actionOpen_Database.triggered.connect(self.open_database)
258
258
 
259
- self.actionEdit_Macros.triggered.connect(self.edit_cw_macros)
259
+ self.actionEdit_Macros.triggered.connect(self.edit_macros)
260
260
 
261
261
  self.actionAbout.triggered.connect(self.show_about_dialog)
262
262
  self.actionHotKeys.triggered.connect(self.show_key_help)
@@ -659,7 +659,7 @@ class MainWindow(QtWidgets.QMainWindow):
659
659
  self.show_splash_msg("Loading contest.")
660
660
  self.load_contest()
661
661
  self.show_splash_msg("Reading macros.")
662
- self.read_cw_macros()
662
+ self.read_macros()
663
663
 
664
664
  self.show_splash_msg("Starting FlDigi watcher.")
665
665
  self.fldigi_watcher = FlDigiWatcher()
@@ -1627,6 +1627,7 @@ class MainWindow(QtWidgets.QMainWindow):
1627
1627
  cmd["COLUMNS"] = self.contest.columns
1628
1628
  if self.log_window:
1629
1629
  self.log_window.msg_from_main(cmd)
1630
+ self.read_macros()
1630
1631
 
1631
1632
  def check_for_new_cty(self) -> None:
1632
1633
  """
@@ -1730,7 +1731,6 @@ class MainWindow(QtWidgets.QMainWindow):
1730
1731
  """
1731
1732
 
1732
1733
  self.show_message_box(
1733
- "[Esc]\tClears the input fields of any text.\n"
1734
1734
  "[CTRL-Esc]\tStops cwdaemon from sending Morse.\n"
1735
1735
  "[PgUp]\tIncreases the cw sending speed.\n"
1736
1736
  "[PgDown]\tDecreases the cw sending speed.\n"
@@ -1750,6 +1750,7 @@ class MainWindow(QtWidgets.QMainWindow):
1750
1750
  "[CTRL-S]\tSpot Callsign to the cluster.\n"
1751
1751
  "[CTRL-SHIFT-K] Open CW text input field.\n"
1752
1752
  "[CTRL-=]\tLog the contact without sending the ESM macros.\n"
1753
+ "[CTRL-W]\tClears the input fields of any text.\n"
1753
1754
  )
1754
1755
 
1755
1756
  def filepicker(self, action: str) -> str:
@@ -2086,14 +2087,14 @@ class MainWindow(QtWidgets.QMainWindow):
2086
2087
  self.bandmap_window.msg_from_main(cmd)
2087
2088
  return
2088
2089
  if (
2089
- event.key() == Qt.Key.Key_Escape
2090
- and modifier != Qt.KeyboardModifier.ControlModifier
2090
+ event.key() == Qt.Key.Key_W
2091
+ and modifier == Qt.KeyboardModifier.ControlModifier
2091
2092
  ): # pylint: disable=no-member
2092
2093
  self.clearinputs()
2093
2094
  return
2094
2095
  if (
2095
2096
  event.key() == Qt.Key.Key_Escape
2096
- and modifier == Qt.KeyboardModifier.ControlModifier
2097
+ and modifier != Qt.KeyboardModifier.ControlModifier
2097
2098
  ):
2098
2099
  if self.cw is not None:
2099
2100
  if self.cw.servertype == 1:
@@ -2804,7 +2805,7 @@ class MainWindow(QtWidgets.QMainWindow):
2804
2805
  """
2805
2806
  self.pref["run_state"] = self.radioButton_run.isChecked()
2806
2807
  self.write_preference()
2807
- self.read_cw_macros()
2808
+ self.read_macros()
2808
2809
  self.check_esm()
2809
2810
 
2810
2811
  def write_preference(self) -> None:
@@ -2919,6 +2920,7 @@ class MainWindow(QtWidgets.QMainWindow):
2919
2920
  self.pref.get("CAT_ip", "127.0.0.1"),
2920
2921
  int(self.pref.get("CAT_port", 12345)),
2921
2922
  )
2923
+ self.rig_control.delta = int(self.pref.get("CAT_polldelta", 555))
2922
2924
  self.rig_control.moveToThread(self.radio_thread)
2923
2925
  self.radio_thread.started.connect(self.rig_control.run)
2924
2926
  self.radio_thread.finished.connect(self.rig_control.deleteLater)
@@ -2935,6 +2937,7 @@ class MainWindow(QtWidgets.QMainWindow):
2935
2937
  self.pref.get("CAT_ip", "127.0.0.1"),
2936
2938
  int(self.pref.get("CAT_port", 4532)),
2937
2939
  )
2940
+ self.rig_control.delta = int(self.pref.get("CAT_polldelta", 555))
2938
2941
  self.rig_control.moveToThread(self.radio_thread)
2939
2942
  self.radio_thread.started.connect(self.rig_control.run)
2940
2943
  self.radio_thread.finished.connect(self.rig_control.deleteLater)
@@ -2946,6 +2949,7 @@ class MainWindow(QtWidgets.QMainWindow):
2946
2949
  self.pref.get("CAT_ip", "127.0.0.1"),
2947
2950
  int(self.pref.get("CAT_port", 0000)),
2948
2951
  )
2952
+ self.rig_control.delta = int(self.pref.get("CAT_polldelta", 555))
2949
2953
  self.rig_control.moveToThread(self.radio_thread)
2950
2954
  self.radio_thread.started.connect(self.rig_control.run)
2951
2955
  self.radio_thread.finished.connect(self.rig_control.deleteLater)
@@ -3351,7 +3355,7 @@ class MainWindow(QtWidgets.QMainWindow):
3351
3355
  self.set_band_indicator(band)
3352
3356
  self.set_window_title()
3353
3357
  self.clearinputs()
3354
- self.read_cw_macros()
3358
+ self.read_macros()
3355
3359
  return
3356
3360
  if mode in (
3357
3361
  "DIGI-U",
@@ -3372,7 +3376,7 @@ class MainWindow(QtWidgets.QMainWindow):
3372
3376
  self.set_band_indicator(band)
3373
3377
  self.set_window_title()
3374
3378
  self.clearinputs()
3375
- self.read_cw_macros()
3379
+ self.read_macros()
3376
3380
  return
3377
3381
  if mode == "SSB":
3378
3382
  if intended_freq:
@@ -3393,7 +3397,7 @@ class MainWindow(QtWidgets.QMainWindow):
3393
3397
  self.set_band_indicator(band)
3394
3398
  self.set_window_title()
3395
3399
  self.clearinputs()
3396
- self.read_cw_macros()
3400
+ self.read_macros()
3397
3401
 
3398
3402
  def check_callsign(self, callsign) -> None:
3399
3403
  """
@@ -3480,7 +3484,7 @@ class MainWindow(QtWidgets.QMainWindow):
3480
3484
  self.current_mode = "CW"
3481
3485
  self.sent.setText("599")
3482
3486
  self.receive.setText("599")
3483
- self.read_cw_macros()
3487
+ self.read_macros()
3484
3488
  if self.contest:
3485
3489
  if self.contest.name == "ICWC Medium Speed Test":
3486
3490
  self.contest.prefill(self)
@@ -3490,14 +3494,14 @@ class MainWindow(QtWidgets.QMainWindow):
3490
3494
  self.current_mode = "SSB"
3491
3495
  self.sent.setText("59")
3492
3496
  self.receive.setText("59")
3493
- self.read_cw_macros()
3497
+ self.read_macros()
3494
3498
  return
3495
3499
  if mode in ("RTTY", "DIGI-U", "DIGI-L"):
3496
3500
  if self.current_mode != "RTTY":
3497
3501
  self.current_mode = "RTTY"
3498
3502
  self.sent.setText("599")
3499
3503
  self.receive.setText("599")
3500
- self.read_cw_macros()
3504
+ self.read_macros()
3501
3505
 
3502
3506
  def get_opon(self) -> None:
3503
3507
  """
@@ -3542,6 +3546,7 @@ class MainWindow(QtWidgets.QMainWindow):
3542
3546
  self.opon_dialog.close()
3543
3547
  logger.debug("New Op: %s", self.current_op)
3544
3548
  self.make_op_dir()
3549
+ self.set_window_title()
3545
3550
 
3546
3551
  def make_op_dir(self) -> None:
3547
3552
  """
@@ -3664,18 +3669,13 @@ class MainWindow(QtWidgets.QMainWindow):
3664
3669
  except TypeError as err:
3665
3670
  logger.debug(f"{err=} {vfo=} {the_dict=}")
3666
3671
 
3667
- def edit_cw_macros(self) -> None:
3668
- """
3669
- Calls the default text editor to edit the CW macro file.
3670
-
3671
- Parameters
3672
- ----------
3673
- None
3674
-
3675
- Returns
3676
- -------
3677
- None
3678
- """
3672
+ def get_macro_filename(self):
3673
+ """"""
3674
+ # Have not1mm check in USER_DATA_PATH for the existence of a folder with the contests name.
3675
+ # If it exists, check to see if a cw/ssb/rtty macro files exists within it and load them before
3676
+ # falling back to the default ones.
3677
+ # If user selects menu option to edit the current macro file, make the previous checks, if the
3678
+ # specific one does not exist, copy the default to the contest directory and edit that copy.
3679
3679
  if self.radio_state.get("mode") in ("CW", "CW-L", "CW-R", "CWR"):
3680
3680
  macro_file = "cwmacros.txt"
3681
3681
  elif self.radio_state.get("mode") in (
@@ -3695,8 +3695,14 @@ class MainWindow(QtWidgets.QMainWindow):
3695
3695
  macro_file = "rttymacros.txt"
3696
3696
  else:
3697
3697
  macro_file = "ssbmacros.txt"
3698
+
3699
+ try:
3700
+ if not (fsutils.USER_DATA_PATH / self.contest.name).exists():
3701
+ os.mkdir(fsutils.USER_DATA_PATH / self.contest.name)
3702
+ except AttributeError:
3703
+ return ""
3704
+
3698
3705
  if not (fsutils.USER_DATA_PATH / macro_file).exists():
3699
- logger.debug("copying default macro file.")
3700
3706
  try:
3701
3707
  copyfile(
3702
3708
  fsutils.APP_DATA_PATH / macro_file,
@@ -3704,57 +3710,50 @@ class MainWindow(QtWidgets.QMainWindow):
3704
3710
  )
3705
3711
  except IOError as err:
3706
3712
  logger.critical(f"Error {err} copying macro file.")
3713
+
3714
+ if not (fsutils.USER_DATA_PATH / self.contest.name / macro_file).exists():
3715
+ try:
3716
+ copyfile(
3717
+ fsutils.APP_DATA_PATH / macro_file,
3718
+ fsutils.USER_DATA_PATH / self.contest.name / macro_file,
3719
+ )
3720
+ except IOError as err:
3721
+ logger.critical(f"Error {err} copying macro file.")
3722
+
3723
+ return fsutils.USER_DATA_PATH / self.contest.name / macro_file
3724
+
3725
+ def edit_macros(self) -> None:
3726
+ """
3727
+ Calls the default text editor to edit the CW macro file.
3728
+
3729
+ Parameters
3730
+ ----------
3731
+ None
3732
+
3733
+ Returns
3734
+ -------
3735
+ None
3736
+ """
3737
+
3738
+ macro_file = self.get_macro_filename()
3739
+
3707
3740
  try:
3708
- fsutils.openFileWithOS(fsutils.USER_DATA_PATH / macro_file)
3741
+ fsutils.openFileWithOS(macro_file)
3709
3742
  except FileNotFoundError | PermissionError | OSError as err:
3710
- logger.critical(
3711
- f"Could not open file {fsutils.USER_DATA_PATH / macro_file} {err}"
3712
- )
3713
- self.read_cw_macros()
3743
+ logger.critical(f"Could not open file {macro_file} {err}")
3744
+ self.read_macros()
3714
3745
 
3715
- def read_cw_macros(self) -> None:
3746
+ def read_macros(self) -> None:
3716
3747
  """
3717
3748
  Reads in the CW macros, firsts it checks to see if the file exists. If it does not,
3718
3749
  and this has been packaged with pyinstaller it will copy the default file from the
3719
3750
  temp directory this is running from... In theory.
3720
3751
  """
3721
3752
 
3722
- if self.radio_state.get("mode") in (
3723
- "CW",
3724
- "CW-L",
3725
- "CW-R",
3726
- ):
3727
- macro_file = "cwmacros.txt"
3728
- elif self.radio_state.get("mode") in (
3729
- "RTTY",
3730
- "RTTY-R",
3731
- "LSB-D",
3732
- "USB-D",
3733
- "AM-D",
3734
- "FM-D",
3735
- "DIGI-U",
3736
- "DIGI-L",
3737
- "RTTYR",
3738
- "PKTLSB",
3739
- "PKTUSB",
3740
- ):
3741
- macro_file = "rttymacros.txt"
3742
- else:
3743
- macro_file = "ssbmacros.txt"
3753
+ macro_file = self.get_macro_filename()
3744
3754
 
3745
- if not (fsutils.USER_DATA_PATH / macro_file).exists():
3746
- logger.debug("copying default macro file.")
3747
- try:
3748
- copyfile(
3749
- fsutils.APP_DATA_PATH / macro_file,
3750
- fsutils.USER_DATA_PATH / macro_file,
3751
- )
3752
- except IOError as err:
3753
- logger.critical(f"Error {err} copying macro file.")
3754
3755
  try:
3755
- with open(
3756
- fsutils.USER_DATA_PATH / macro_file, "r", encoding="utf-8"
3757
- ) as file_descriptor:
3756
+ with open(macro_file, "r", encoding="utf-8") as file_descriptor:
3758
3757
  for line in file_descriptor:
3759
3758
  mode, fkey, buttonname, cwtext = line.split("|")
3760
3759
  if mode.strip().upper() == "R" and self.pref.get("run_state"):
not1mm/bandmap.py CHANGED
@@ -311,6 +311,10 @@ class Database:
311
311
  (f"-{minutes} minutes",),
312
312
  )
313
313
 
314
+ def delete_marks(self) -> None:
315
+ """Delete marked spots."""
316
+ self.cursor.execute("delete from spots where ts > datetime('now');")
317
+
314
318
 
315
319
  class BandMapWindow(QDockWidget):
316
320
  """The BandMapWindow class."""
@@ -345,6 +349,7 @@ class BandMapWindow(QDockWidget):
345
349
  self.agetime = self.clear_spot_olderSpinBox.value()
346
350
  self.clear_spot_olderSpinBox.valueChanged.connect(self.spot_aging_changed)
347
351
  self.clearButton.clicked.connect(self.clear_spots)
352
+ self.clearmarkedButton.clicked.connect(self.clear_marked)
348
353
  self.zoominButton.clicked.connect(self.dec_zoom)
349
354
  self.zoomoutButton.clicked.connect(self.inc_zoom)
350
355
  self.connectButton.clicked.connect(self.connect)
@@ -873,6 +878,10 @@ class BandMapWindow(QDockWidget):
873
878
  """Delete all spots from the database."""
874
879
  self.spots.delete_spots(0)
875
880
 
881
+ def clear_marked(self) -> None:
882
+ """Delete all marked spots."""
883
+ self.spots.delete_marks()
884
+
876
885
  def spot_aging_changed(self) -> None:
877
886
  """Called when spot aging spinbox is changed."""
878
887
  self.agetime = self.clear_spot_olderSpinBox.value()
not1mm/data/bandmap.ui CHANGED
@@ -6,7 +6,7 @@
6
6
  <rect>
7
7
  <x>0</x>
8
8
  <y>0</y>
9
- <width>383</width>
9
+ <width>342</width>
10
10
  <height>700</height>
11
11
  </rect>
12
12
  </property>
@@ -97,7 +97,7 @@
97
97
  <rect>
98
98
  <x>0</x>
99
99
  <y>0</y>
100
- <width>359</width>
100
+ <width>326</width>
101
101
  <height>512</height>
102
102
  </rect>
103
103
  </property>
@@ -148,18 +148,49 @@
148
148
  <enum>Qt::NoFocus</enum>
149
149
  </property>
150
150
  <property name="accessibleName">
151
- <string>clear all</string>
151
+ <string>clear spots</string>
152
152
  </property>
153
153
  <property name="accessibleDescription">
154
154
  <string>clear spots</string>
155
155
  </property>
156
+ <property name="maximumSize">
157
+ <size>
158
+ <width>1110</width>
159
+ <height>27</height>
160
+ </size>
161
+ </property>
162
+ <property name="text">
163
+ <string>🗑 Spots</string>
164
+ </property>
165
+ </widget>
166
+ </item>
167
+ <item>
168
+ <widget class="QPushButton" name="clearmarkedButton">
169
+ <property name="minimumSize">
170
+ <size>
171
+ <width>110</width>
172
+ <height>0</height>
173
+ </size>
174
+ </property>
175
+ <property name="maximumSize">
176
+ <size>
177
+ <width>1110</width>
178
+ <height>27</height>
179
+ </size>
180
+ </property>
156
181
  <property name="text">
157
- <string>Clear All</string>
182
+ <string>🗑 Marked</string>
158
183
  </property>
159
184
  </widget>
160
185
  </item>
161
186
  <item>
162
187
  <widget class="QPushButton" name="zoominButton">
188
+ <property name="maximumSize">
189
+ <size>
190
+ <width>27</width>
191
+ <height>27</height>
192
+ </size>
193
+ </property>
163
194
  <property name="focusPolicy">
164
195
  <enum>Qt::NoFocus</enum>
165
196
  </property>
@@ -170,12 +201,18 @@
170
201
  <string>zoom in</string>
171
202
  </property>
172
203
  <property name="text">
173
- <string>Zoom In</string>
204
+ <string>➕</string>
174
205
  </property>
175
206
  </widget>
176
207
  </item>
177
208
  <item>
178
209
  <widget class="QPushButton" name="zoomoutButton">
210
+ <property name="maximumSize">
211
+ <size>
212
+ <width>27</width>
213
+ <height>27</height>
214
+ </size>
215
+ </property>
179
216
  <property name="focusPolicy">
180
217
  <enum>Qt::NoFocus</enum>
181
218
  </property>
@@ -186,7 +223,7 @@
186
223
  <string>zoom out</string>
187
224
  </property>
188
225
  <property name="text">
189
- <string>Zoom Out</string>
226
+ <string>➖</string>
190
227
  </property>
191
228
  </widget>
192
229
  </item>
@@ -205,12 +242,6 @@
205
242
  </property>
206
243
  <item>
207
244
  <widget class="QLabel" name="clear_spot_olderLabel">
208
- <property name="font">
209
- <font>
210
- <family>JetBrains Mono ExtraLight</family>
211
- <pointsize>11</pointsize>
212
- </font>
213
- </property>
214
245
  <property name="text">
215
246
  <string>Clear older than </string>
216
247
  </property>
@@ -377,6 +377,43 @@
377
377
  <string>CAT</string>
378
378
  </attribute>
379
379
  <layout class="QGridLayout" name="gridLayout_4">
380
+ <item row="1" column="3">
381
+ <widget class="QLineEdit" name="rigcontrolport_field">
382
+ <property name="font">
383
+ <font>
384
+ <family>JetBrains Mono ExtraLight</family>
385
+ <pointsize>12</pointsize>
386
+ <bold>false</bold>
387
+ <strikeout>false</strikeout>
388
+ </font>
389
+ </property>
390
+ <property name="accessibleName">
391
+ <string>port number</string>
392
+ </property>
393
+ <property name="accessibleDescription">
394
+ <string>port number of rig control d or f l rig.</string>
395
+ </property>
396
+ <property name="inputMethodHints">
397
+ <set>Qt::InputMethodHint::ImhDigitsOnly</set>
398
+ </property>
399
+ <property name="text">
400
+ <string>4532</string>
401
+ </property>
402
+ </widget>
403
+ </item>
404
+ <item row="5" column="0" colspan="4">
405
+ <spacer name="verticalSpacer_3">
406
+ <property name="orientation">
407
+ <enum>Qt::Vertical</enum>
408
+ </property>
409
+ <property name="sizeHint" stdset="0">
410
+ <size>
411
+ <width>20</width>
412
+ <height>40</height>
413
+ </size>
414
+ </property>
415
+ </spacer>
416
+ </item>
380
417
  <item row="1" column="1">
381
418
  <widget class="QLineEdit" name="rigcontrolip_field">
382
419
  <property name="font">
@@ -398,7 +435,38 @@
398
435
  </property>
399
436
  </widget>
400
437
  </item>
401
- <item row="3" column="0" colspan="4">
438
+ <item row="3" column="1" colspan="3">
439
+ <spacer name="verticalSpacer_2">
440
+ <property name="orientation">
441
+ <enum>Qt::Vertical</enum>
442
+ </property>
443
+ <property name="sizeHint" stdset="0">
444
+ <size>
445
+ <width>20</width>
446
+ <height>40</height>
447
+ </size>
448
+ </property>
449
+ </spacer>
450
+ </item>
451
+ <item row="1" column="0">
452
+ <widget class="QLabel" name="label_6">
453
+ <property name="font">
454
+ <font>
455
+ <family>JetBrains Mono ExtraLight</family>
456
+ <pointsize>12</pointsize>
457
+ <bold>false</bold>
458
+ <strikeout>false</strikeout>
459
+ </font>
460
+ </property>
461
+ <property name="text">
462
+ <string>Rig Control IP:</string>
463
+ </property>
464
+ <property name="alignment">
465
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
466
+ </property>
467
+ </widget>
468
+ </item>
469
+ <item row="4" column="0" colspan="4">
402
470
  <layout class="QHBoxLayout" name="horizontalLayout">
403
471
  <property name="sizeConstraint">
404
472
  <enum>QLayout::SizeConstraint::SetDefaultConstraint</enum>
@@ -513,50 +581,6 @@
513
581
  </item>
514
582
  </layout>
515
583
  </item>
516
- <item row="2" column="1" colspan="3">
517
- <spacer name="verticalSpacer_2">
518
- <property name="orientation">
519
- <enum>Qt::Vertical</enum>
520
- </property>
521
- <property name="sizeHint" stdset="0">
522
- <size>
523
- <width>20</width>
524
- <height>40</height>
525
- </size>
526
- </property>
527
- </spacer>
528
- </item>
529
- <item row="1" column="0">
530
- <widget class="QLabel" name="label_6">
531
- <property name="font">
532
- <font>
533
- <family>JetBrains Mono ExtraLight</family>
534
- <pointsize>12</pointsize>
535
- <bold>false</bold>
536
- <strikeout>false</strikeout>
537
- </font>
538
- </property>
539
- <property name="text">
540
- <string>Rig Control IP:</string>
541
- </property>
542
- <property name="alignment">
543
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
544
- </property>
545
- </widget>
546
- </item>
547
- <item row="0" column="2">
548
- <spacer name="verticalSpacer">
549
- <property name="orientation">
550
- <enum>Qt::Vertical</enum>
551
- </property>
552
- <property name="sizeHint" stdset="0">
553
- <size>
554
- <width>20</width>
555
- <height>40</height>
556
- </size>
557
- </property>
558
- </spacer>
559
- </item>
560
584
  <item row="1" column="2">
561
585
  <widget class="QLabel" name="label_7">
562
586
  <property name="font">
@@ -575,8 +599,8 @@
575
599
  </property>
576
600
  </widget>
577
601
  </item>
578
- <item row="4" column="0" colspan="4">
579
- <spacer name="verticalSpacer_3">
602
+ <item row="0" column="2">
603
+ <spacer name="verticalSpacer">
580
604
  <property name="orientation">
581
605
  <enum>Qt::Vertical</enum>
582
606
  </property>
@@ -588,30 +612,16 @@
588
612
  </property>
589
613
  </spacer>
590
614
  </item>
591
- <item row="1" column="3">
592
- <widget class="QLineEdit" name="rigcontrolport_field">
593
- <property name="font">
594
- <font>
595
- <family>JetBrains Mono ExtraLight</family>
596
- <pointsize>12</pointsize>
597
- <bold>false</bold>
598
- <strikeout>false</strikeout>
599
- </font>
600
- </property>
601
- <property name="accessibleName">
602
- <string>port number</string>
603
- </property>
604
- <property name="accessibleDescription">
605
- <string>port number of rig control d or f l rig.</string>
606
- </property>
607
- <property name="inputMethodHints">
608
- <set>Qt::InputMethodHint::ImhDigitsOnly</set>
609
- </property>
615
+ <item row="2" column="0">
616
+ <widget class="QLabel" name="label_27">
610
617
  <property name="text">
611
- <string>4532</string>
618
+ <string>CAT Poll Interval (ms):</string>
612
619
  </property>
613
620
  </widget>
614
621
  </item>
622
+ <item row="2" column="1">
623
+ <widget class="QLineEdit" name="catpoll_field"/>
624
+ </item>
615
625
  </layout>
616
626
  </widget>
617
627
  <widget class="QWidget" name="cw_tab">
not1mm/data/donors.html CHANGED
@@ -1,4 +1,8 @@
1
1
  <p>
2
+ <h4><center>To donate visit:</center></h4>
3
+ <center>https://paypal.me/k6gte</center>
4
+ </p>
5
+ <p>
2
6
  <h2>
3
7
  <center>Donors</center>
4
8
  </h2>
@@ -217,6 +217,11 @@
217
217
  <string>ARRL 10M</string>
218
218
  </property>
219
219
  </item>
220
+ <item>
221
+ <property name="text">
222
+ <string>ARRL 160M</string>
223
+ </property>
224
+ </item>
220
225
  <item>
221
226
  <property name="text">
222
227
  <string>ARRL DX CW</string>