not1mm 24.7.25.1__py3-none-any.whl → 24.7.29__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
@@ -564,6 +564,8 @@ class MainWindow(QtWidgets.QMainWindow):
564
564
  if self.actionVFO.isChecked():
565
565
  self.vfo_window.show()
566
566
 
567
+ self.cwspeed_spinbox_changed()
568
+
567
569
  if not DEBUG_ENABLED:
568
570
  if VersionTest(__version__).test():
569
571
  self.show_message_box(
@@ -1264,6 +1266,12 @@ class MainWindow(QtWidgets.QMainWindow):
1264
1266
  else:
1265
1267
  self.cw_speed.hide()
1266
1268
 
1269
+ if hasattr(self.contest, "ft8_handler"):
1270
+ self.contest.set_self(self)
1271
+ self.ft8.set_callback(self.contest.ft8_handler)
1272
+ else:
1273
+ self.ft8.set_callback(None)
1274
+
1267
1275
  self.clearinputs()
1268
1276
  cmd = {}
1269
1277
  cmd["cmd"] = "NEWDB"
@@ -1582,6 +1590,10 @@ class MainWindow(QtWidgets.QMainWindow):
1582
1590
  self.cw.sendcw(f"\x1b2{self.cw.speed}")
1583
1591
  if self.cw.servertype == 2:
1584
1592
  self.cw.set_winkeyer_speed(self.cw_speed.value())
1593
+ if self.rig_control:
1594
+ if self.pref.get("cwtype") == 3 and self.rig_control is not None:
1595
+ if self.rig_control.interface == "flrig":
1596
+ self.rig_control.cat.set_flrig_cw_speed(self.cw_speed.value())
1585
1597
 
1586
1598
  def keyPressEvent(self, event) -> None: # pylint: disable=invalid-name
1587
1599
  """
@@ -1655,6 +1667,12 @@ class MainWindow(QtWidgets.QMainWindow):
1655
1667
  if self.cw.servertype == 1:
1656
1668
  self.cw.sendcw("\x1b4")
1657
1669
  return
1670
+ if self.rig_control:
1671
+ if self.rig_control.online:
1672
+ if self.pref.get("cwtype") == 3 and self.rig_control is not None:
1673
+ if self.rig_control.interface == "flrig":
1674
+ self.rig_control.cat.set_flrig_cw_send(False)
1675
+ self.rig_control.cat.set_flrig_cw_send(True)
1658
1676
  if event.key() == Qt.Key.Key_Up:
1659
1677
  cmd = {}
1660
1678
  cmd["cmd"] = "PREVSPOT"
@@ -2867,12 +2885,16 @@ class MainWindow(QtWidgets.QMainWindow):
2867
2885
  None
2868
2886
  """
2869
2887
 
2870
- if mode in ("CW", "CW-U", "CW-L"):
2888
+ if mode in ("CW", "CW-U", "CW-L", "CWR"):
2871
2889
  self.setmode("CW")
2872
2890
  self.radio_state["mode"] = "CW"
2873
2891
  if self.rig_control:
2874
2892
  if self.rig_control.online:
2875
2893
  self.rig_control.set_mode("CW")
2894
+ if self.pref.get("cwtype") == 3 and self.rig_control is not None:
2895
+ if self.rig_control.interface == "flrig":
2896
+ self.cwspeed_spinbox_changed()
2897
+ self.rig_control.cat.set_flrig_cw_send(True)
2876
2898
  band = getband(str(self.radio_state.get("vfoa", "0.0")))
2877
2899
  self.set_band_indicator(band)
2878
2900
  self.set_window_title()
@@ -3019,7 +3041,7 @@ class MainWindow(QtWidgets.QMainWindow):
3019
3041
 
3020
3042
  def setmode(self, mode: str) -> None:
3021
3043
  """Call when the mode changes."""
3022
- if mode in ("CW", "CW-U", "CW-L"):
3044
+ if mode in ("CW", "CW-U", "CW-L", "CWR"):
3023
3045
  if self.current_mode != "CW":
3024
3046
  self.current_mode = "CW"
3025
3047
  self.sent.setText("599")
@@ -3149,7 +3171,7 @@ class MainWindow(QtWidgets.QMainWindow):
3149
3171
  info_dirty = True
3150
3172
  self.radio_state["bw"] = bw
3151
3173
 
3152
- if mode in ("CW", "CW-U", "CW-L"):
3174
+ if mode in ("CW", "CW-U", "CW-L", "CWR"):
3153
3175
  self.setmode(mode)
3154
3176
  if mode == "LSB" or mode == "USB":
3155
3177
  self.setmode("SSB")
@@ -3379,7 +3401,6 @@ def run() -> None:
3379
3401
  f"Resolved OS file system paths: MODULE_PATH {fsutils.MODULE_PATH}, USER_DATA_PATH {fsutils.USER_DATA_PATH}, CONFIG_PATH {fsutils.CONFIG_PATH}"
3380
3402
  )
3381
3403
  install_icons()
3382
- # timer.start(250)
3383
3404
  sys.exit(app.exec())
3384
3405
 
3385
3406
 
@@ -3403,15 +3424,9 @@ app = QtWidgets.QApplication(sys.argv)
3403
3424
  families = load_fonts_from_dir(os.fspath(fsutils.APP_DATA_PATH))
3404
3425
  logger.info(f"font families {families}")
3405
3426
  window = MainWindow()
3406
- # height = window.pref.get("window_height", 300)
3407
- # width = window.pref.get("window_width", 700)
3408
- # x = window.pref.get("window_x", -1)
3409
- # y = window.pref.get("window_y", -1)
3410
- # window.setGeometry(x, y, width, height)
3411
3427
  window.callsign.setFocus()
3412
3428
  window.show()
3413
- # timer = QtCore.QTimer()
3414
- # timer.timeout.connect(window.poll_radio)
3429
+
3415
3430
 
3416
3431
  if __name__ == "__main__":
3417
3432
  run()
@@ -114,7 +114,7 @@ class CAT:
114
114
  self.sendcwrigctl(texttosend)
115
115
 
116
116
  def sendcwrigctl(self, texttosend):
117
- """..."""
117
+ """Send text via rigctld"""
118
118
  if self.rigctrlsocket:
119
119
  try:
120
120
  self.online = True
@@ -130,11 +130,10 @@ class CAT:
130
130
  return False
131
131
 
132
132
  def sendcwxmlrpc(self, texttosend):
133
- """..."""
134
- print(f"{texttosend=}")
133
+ """Add text to flrig's cw send buffer."""
134
+ logger.debug(f"{texttosend=}")
135
135
  try:
136
136
  self.online = True
137
- self.server.rig.cwio_send(1)
138
137
  self.server.rig.cwio_text(texttosend)
139
138
  return
140
139
  except (
@@ -145,10 +144,45 @@ class CAT:
145
144
  http.client.ResponseNotReady,
146
145
  ) as exception:
147
146
  self.online = False
148
- print("sendcwxmlrpc: %s", f"{exception}")
149
- # logger.debug("sendcwxmlrpc: %s", f"{exception}")
147
+ logger.debug("%s", f"{exception}")
150
148
  return False
151
149
 
150
+ def set_flrig_cw_send(self, send: bool) -> None:
151
+ """Turn on flrig cw keyer send flag."""
152
+ if self.interface == "rigctld":
153
+ return
154
+ try:
155
+ self.online = True
156
+ self.server.rig.cwio_send(int(send))
157
+ except (
158
+ ConnectionRefusedError,
159
+ xmlrpc.client.Fault,
160
+ http.client.BadStatusLine,
161
+ http.client.CannotSendRequest,
162
+ http.client.ResponseNotReady,
163
+ ValueError,
164
+ ) as exception:
165
+ self.online = False
166
+ logger.debug("%s", f"{exception}")
167
+
168
+ def set_flrig_cw_speed(self, speed):
169
+ """Set flrig's CW send speed"""
170
+ if self.interface == "rigctld":
171
+ return
172
+ try:
173
+ self.online = True
174
+ self.server.rig.cwio_set_wpm(int(speed))
175
+ except (
176
+ ConnectionRefusedError,
177
+ xmlrpc.client.Fault,
178
+ http.client.BadStatusLine,
179
+ http.client.CannotSendRequest,
180
+ http.client.ResponseNotReady,
181
+ ValueError,
182
+ ) as exception:
183
+ self.online = False
184
+ logger.debug("%s", f"{exception}")
185
+
152
186
  def get_vfo(self) -> str:
153
187
  """Poll the radio for current vfo using the interface"""
154
188
  vfo = ""
not1mm/lib/version.py CHANGED
@@ -1,3 +1,4 @@
1
1
  """It's the version"""
2
2
 
3
- __version__ = "24.7.25.1"
3
+ __version__ = "24.7.29"
4
+
@@ -13,6 +13,8 @@ from not1mm.lib.version import __version__
13
13
 
14
14
  logger = logging.getLogger(__name__)
15
15
 
16
+ ALTEREGO = None
17
+
16
18
  EXCHANGE_HINT = "1D ORG"
17
19
 
18
20
  name = "ARRL Field Day"
@@ -319,3 +321,48 @@ def cabrillo(self):
319
321
 
320
322
  def recalculate_mults(self):
321
323
  """Recalculates multipliers after change in logged qso."""
324
+
325
+
326
+ def set_self(the_outie):
327
+ """..."""
328
+ globals()["ALTEREGO"] = the_outie
329
+
330
+
331
+ def ft8_handler(the_packet: dict):
332
+ """Process FT8 QSO packets
333
+
334
+ {
335
+ 'CALL': 'KE0OG',
336
+ 'GRIDSQUARE': 'DM10AT',
337
+ 'MODE': 'FT8',
338
+ 'RST_SENT': '',
339
+ 'RST_RCVD': '',
340
+ 'QSO_DATE': '20210329',
341
+ 'TIME_ON': '183213',
342
+ 'QSO_DATE_OFF': '20210329',
343
+ 'TIME_OFF': '183213',
344
+ 'BAND': '20M',
345
+ 'FREQ': '14.074754',
346
+ 'STATION_CALLSIGN': 'K6GTE',
347
+ 'MY_GRIDSQUARE': 'DM13AT',
348
+ 'CONTEST_ID': 'ARRL-FIELD-DAY',
349
+ 'SRX_STRING': '1D UT',
350
+ 'CLASS': '1D',
351
+ 'ARRL_SECT': 'UT'
352
+ }
353
+
354
+ """
355
+ print(f"{the_packet=}")
356
+
357
+ if ALTEREGO is not None:
358
+
359
+ ALTEREGO.callsign.setText(the_packet.get("CALL"))
360
+ ALTEREGO.contact["Call"] = the_packet.get("CALL", "")
361
+ ALTEREGO.contact["SNT"] = ALTEREGO.sent.text()
362
+ ALTEREGO.contact["RCV"] = ALTEREGO.receive.text()
363
+ ALTEREGO.contact["Exchange1"] = the_packet.get("CLASS", "ERR")
364
+ ALTEREGO.contact["Sect"] = the_packet.get("ARRL_SECT", "ERR")
365
+ ALTEREGO.contact["Mode"] = "FT8"
366
+ ALTEREGO.other_1.setText(the_packet.get("CLASS", "ERR"))
367
+ ALTEREGO.other_2.setText(the_packet.get("ARRL_SECT", "ERR"))
368
+ print(f"\n{ALTEREGO.contact=}\n")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: not1mm
3
- Version: 24.7.25.1
3
+ Version: 24.7.29
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
@@ -223,6 +223,8 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
223
223
 
224
224
  ## Recent Changes
225
225
 
226
+ - [24-7-29] Add flrig cw speed change via onscreen widget.
227
+ - [24-7-28] Second try at flrig CW.
226
228
  - [24-7-25-1] Have VFO dock widget handle disconnect/reconnect events of the USB VFO knob more gracefully.
227
229
  - [24-7-25] Updated application categories for the desktop file.
228
230
  - [24-7-25] Maybe let flrig send CW... Probably not.
@@ -1,5 +1,5 @@
1
1
  not1mm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- not1mm/__main__.py,sha256=yVBck7JN7jIc49RvxkHhMI9QphC85pLufOH7Uul738o,120573
2
+ not1mm/__main__.py,sha256=-zzE1QUDpuVKwgWJeoEPJ7ceCCvx0YLBISw24xQJgs4,121481
3
3
  not1mm/bandmap.py,sha256=Ml5DDoybk_I56q2WLYDKE4lfmh6pb9XxW0qpl5nDFYY,32161
4
4
  not1mm/checkwindow.py,sha256=zHxkCQ4BJ-pN80dSTQdiKq8RqY4oWzJveXZhQ2bu3PY,10436
5
5
  not1mm/fsutils.py,sha256=ukHKxKTeNKxKwqRaJjtzRShL4X5Xl0jRBbADyy3Ifp8,1701
@@ -91,7 +91,7 @@ not1mm/data/phonetics/yourcall.wav,sha256=4kheHJmCiRDL2kjhlgXQ8_u_eEMgKxiNGu5UBk
91
91
  not1mm/data/phonetics/z.wav,sha256=arafCi7fwmBLdVDI-PRyaL4U-03PIQDhffwY5noJ_2c,51768
92
92
  not1mm/lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
93
93
  not1mm/lib/about.py,sha256=sWycfGcruN3SaEe4JmaJ61K6D8Itq0WxpUYT-lEcmYM,416
94
- not1mm/lib/cat_interface.py,sha256=-ri3woVU_Q7r7usf5y15lm_9CQVxTgBYn2CSXt48ihg,18390
94
+ not1mm/lib/cat_interface.py,sha256=aazvNTSeZAROq3KL8gPx-I95iVez2IiIOSk22qeqVCQ,19502
95
95
  not1mm/lib/cwinterface.py,sha256=Q8p3pScOHczZ8ptICfH1Yu6rCEwQJLgrNwYMN76B2i8,3389
96
96
  not1mm/lib/database.py,sha256=RQoj3JsTejMiiFIN42lY3N4jrj80htftdoFeRqVKnKs,42480
97
97
  not1mm/lib/edit_contact.py,sha256=Ki9bGPpqyQQBB1cU8VIBDCal3lbXeQ6qxhzklmhE2_w,353
@@ -109,7 +109,7 @@ not1mm/lib/plugin_common.py,sha256=AAKBPCXzTWZJb-h08uPNnHVG7bSCg7kwukc211gFivY,8
109
109
  not1mm/lib/select_contest.py,sha256=WsptLuwkouIHeocJL3oZ6-eUfEnhpwdc-x7eMZ_TIVM,359
110
110
  not1mm/lib/settings.py,sha256=MWiKXbasaFbzeHTjfzTaTqbCBrIijudP_-0a5jNmUAA,9265
111
111
  not1mm/lib/super_check_partial.py,sha256=p5l3u2ZOCBtlWgbvskC50FpuoaIpR07tfC6zTdRWbh4,2334
112
- not1mm/lib/version.py,sha256=vCCHd-NGTIRQF1HQqLA4TFjkjFR_ZtwCDpkOE8lTF1M,50
112
+ not1mm/lib/version.py,sha256=BMpTloYgDxnJAW_gTC-FRCBOqBhNTglZbFeS_OdpJiQ,49
113
113
  not1mm/lib/versiontest.py,sha256=8vDNptuBBunn-1IGkjNaquehqBYUJyjrPSF8Igmd4_Y,1286
114
114
  not1mm/plugins/10_10_fall_cw.py,sha256=IttjX1yy4nDdACGsiYlPteFG8eVseX_WtoFio6bqHE8,10953
115
115
  not1mm/plugins/10_10_spring_cw.py,sha256=ThCptdM3dX4ywhoy2JRcOEyHSqcJolFaT7O_PYzM1Mg,10958
@@ -119,7 +119,7 @@ not1mm/plugins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
119
119
  not1mm/plugins/arrl_10m.py,sha256=EyNRb3Sm0Qb-GVm0p05EnadlHisVh7y-sKTBP2ddMLo,13768
120
120
  not1mm/plugins/arrl_dx_cw.py,sha256=LVnYDNFEUiIpQ1TlhOCcRK7JNwH5XPO5WzUoApSUMTY,13802
121
121
  not1mm/plugins/arrl_dx_ssb.py,sha256=fUFzuNbCAfA5sQSYm8ISV3P9Z_2xnuKeOdO6E66zn1k,13805
122
- not1mm/plugins/arrl_field_day.py,sha256=OSro24LsSVW41yecKziWQMjflJbo62P8C53Q3M3-Lb0,10052
122
+ not1mm/plugins/arrl_field_day.py,sha256=bMBrww0-zBnkrLY3JsG1tXumeWGDWgLi1QZiPtriFqE,11387
123
123
  not1mm/plugins/arrl_rtty_ru.py,sha256=hKUS4isjdXo3EYxQrsqsDupPp2chW8fpoWj0T1pTgJ4,7994
124
124
  not1mm/plugins/arrl_ss_cw.py,sha256=4yN68xZMuJRaSUfdiY4hafC07A3lifl5q6DEUZ-oYPQ,13080
125
125
  not1mm/plugins/arrl_ss_phone.py,sha256=Yzc5sNjrY8TlnozbYF6k8hbEamyDuUAD_3-BNqHgXqY,13068
@@ -145,9 +145,9 @@ not1mm/plugins/naqp_ssb.py,sha256=VLWVrSzI0UP1AhSXYn61eZ7or1rz6a_pS_xCKfgS4Jw,11
145
145
  not1mm/plugins/phone_weekly_test.py,sha256=fLpMe03WB9_KgRl6vMgQQt_aktFdqfNt2Sw81CTRAUs,12325
146
146
  not1mm/plugins/stew_perry_topband.py,sha256=CKBQbYl4ETxhXJd2dma4fg_C5pag_s7Nf61SCztZtqE,10668
147
147
  not1mm/plugins/winter_field_day.py,sha256=4rcfRtobwjHO6BNL3WOTHzBmyyeuX79BNGBG8PfjrI8,10238
148
- not1mm-24.7.25.1.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
149
- not1mm-24.7.25.1.dist-info/METADATA,sha256=F72Ht3kFbVRg_dd4Y24UagfXACEBvjkEvrQO9ScxBRU,29413
150
- not1mm-24.7.25.1.dist-info/WHEEL,sha256=Wyh-_nZ0DJYolHNn1_hMa4lM7uDedD_RGVwbmTjyItk,91
151
- not1mm-24.7.25.1.dist-info/entry_points.txt,sha256=pMcZk_0dxFgLkcUkF0Q874ojpwOmF3OL6EKw9LgvocM,47
152
- not1mm-24.7.25.1.dist-info/top_level.txt,sha256=0YmTxEcDzQlzXub-lXASvoLpg_mt1c2thb5cVkDf5J4,7
153
- not1mm-24.7.25.1.dist-info/RECORD,,
148
+ not1mm-24.7.29.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
149
+ not1mm-24.7.29.dist-info/METADATA,sha256=gxO9nKYQuDwbFIRsySM-8YZydIx54Nn5gF8W8UUhUAY,29506
150
+ not1mm-24.7.29.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
151
+ not1mm-24.7.29.dist-info/entry_points.txt,sha256=pMcZk_0dxFgLkcUkF0Q874ojpwOmF3OL6EKw9LgvocM,47
152
+ not1mm-24.7.29.dist-info/top_level.txt,sha256=0YmTxEcDzQlzXub-lXASvoLpg_mt1c2thb5cVkDf5J4,7
153
+ not1mm-24.7.29.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (71.1.0)
2
+ Generator: setuptools (72.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5