not1mm 25.4.11.2__py3-none-any.whl → 25.4.12__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
@@ -189,6 +189,7 @@ class MainWindow(QtWidgets.QMainWindow):
189
189
  current_widget = None
190
190
 
191
191
  auto_cq = False
192
+ auto_cq_then = datetime.datetime.now()
192
193
  auto_cq_time = datetime.datetime.now()
193
194
  auto_cq_delay = 15000
194
195
 
@@ -226,6 +227,7 @@ class MainWindow(QtWidgets.QMainWindow):
226
227
  }
227
228
  self.cw_entry.hide()
228
229
  self.leftdot.hide()
230
+ self.cwprogressBar.hide()
229
231
  self.rightdot.hide()
230
232
  self.n1mm = N1MM()
231
233
  self.ft8 = FT8Watcher()
@@ -2107,6 +2109,7 @@ class MainWindow(QtWidgets.QMainWindow):
2107
2109
  """"""
2108
2110
  self.auto_cq = False
2109
2111
  self.leftdot.hide()
2112
+ self.cwprogressBar.hide()
2110
2113
  if self.cw is not None:
2111
2114
  if self.cw.servertype == 1:
2112
2115
  self.cw.sendcw("\x1b4")
@@ -2361,7 +2364,10 @@ class MainWindow(QtWidgets.QMainWindow):
2361
2364
  self.run_sp_buttons_clicked()
2362
2365
  # self.make_button_blue(self.F1)
2363
2366
  self.leftdot.show()
2367
+ self.cwprogressBar.setValue(100)
2368
+ self.cwprogressBar.show()
2364
2369
  self.auto_cq = True
2370
+ self.auto_cq_then = datetime.datetime.now()
2365
2371
  self.auto_cq_time = datetime.datetime.now() + datetime.timedelta(
2366
2372
  milliseconds=self.auto_cq_delay
2367
2373
  )
@@ -3813,7 +3819,18 @@ class MainWindow(QtWidgets.QMainWindow):
3813
3819
  # This section has nothing to do with polling the radio
3814
3820
  # It's here because it gets called often enough to be useful.
3815
3821
  if self.auto_cq is True:
3822
+ total_duration = self.auto_cq_time - self.auto_cq_then
3823
+ elapsed_duration = datetime.datetime.now() - self.auto_cq_then
3824
+ if total_duration.total_seconds() > 0:
3825
+ percentage_complete = int(
3826
+ (elapsed_duration.total_seconds() / total_duration.total_seconds())
3827
+ * 100
3828
+ )
3829
+ percentage_complete = min(100, percentage_complete)
3830
+ self.cwprogressBar.setValue(100 - percentage_complete)
3831
+
3816
3832
  if datetime.datetime.now() > self.auto_cq_time:
3833
+ self.auto_cq_then = datetime.datetime.now()
3817
3834
  self.auto_cq_time = datetime.datetime.now() + datetime.timedelta(
3818
3835
  milliseconds=self.auto_cq_delay
3819
3836
  )
not1mm/data/main.ui CHANGED
@@ -935,6 +935,40 @@
935
935
  </property>
936
936
  </widget>
937
937
  </item>
938
+ <item>
939
+ <widget class="QProgressBar" name="cwprogressBar">
940
+ <property name="sizePolicy">
941
+ <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
942
+ <horstretch>0</horstretch>
943
+ <verstretch>0</verstretch>
944
+ </sizepolicy>
945
+ </property>
946
+ <property name="minimumSize">
947
+ <size>
948
+ <width>0</width>
949
+ <height>0</height>
950
+ </size>
951
+ </property>
952
+ <property name="maximumSize">
953
+ <size>
954
+ <width>5</width>
955
+ <height>29</height>
956
+ </size>
957
+ </property>
958
+ <property name="value">
959
+ <number>50</number>
960
+ </property>
961
+ <property name="textVisible">
962
+ <bool>false</bool>
963
+ </property>
964
+ <property name="orientation">
965
+ <enum>Qt::Vertical</enum>
966
+ </property>
967
+ <property name="invertedAppearance">
968
+ <bool>false</bool>
969
+ </property>
970
+ </widget>
971
+ </item>
938
972
  <item>
939
973
  <widget class="QLabel" name="rightdot">
940
974
  <property name="text">
not1mm/lib/cwinterface.py CHANGED
@@ -66,9 +66,9 @@ class CW:
66
66
  if texttosend:
67
67
  if self.servertype == 2:
68
68
  self._sendcw_xmlrpc(texttosend)
69
- if self.servertype == 1:
69
+ elif self.servertype == 1:
70
70
  self._sendcw_udp(texttosend)
71
- if self.servertype == 3:
71
+ elif self.servertype == 3:
72
72
  self._sendcwcat(texttosend)
73
73
 
74
74
  def _sendcw_xmlrpc(self, texttosend):
not1mm/lib/version.py CHANGED
@@ -1,3 +1,3 @@
1
1
  """It's the version"""
2
2
 
3
- __version__ = "25.4.11.2"
3
+ __version__ = "25.4.12"
@@ -38,7 +38,7 @@
38
38
 
39
39
  import datetime
40
40
  import logging
41
-
41
+ import time
42
42
  from pathlib import Path
43
43
 
44
44
  from PyQt6 import QtWidgets
@@ -496,6 +496,7 @@ def process_esm(self, new_focused_widget=None, with_enter=False):
496
496
  self.save_contact()
497
497
  continue
498
498
  self.process_function_key(button)
499
+ time.sleep(0.2)
499
500
  else:
500
501
  if self.current_widget == "callsign":
501
502
  if len(self.callsign.text()) > 2:
@@ -521,6 +522,7 @@ def process_esm(self, new_focused_widget=None, with_enter=False):
521
522
  self.save_contact()
522
523
  continue
523
524
  self.process_function_key(button)
525
+ time.sleep(0.2)
524
526
 
525
527
 
526
528
  def populate_history_info_line(self):
not1mm/test.py CHANGED
@@ -1,8 +1,37 @@
1
- def testfunc():
2
- """"""
3
- ...
1
+ import datetime
4
2
 
5
3
 
6
- pointer = testfunc
4
+ # Assume self.auto_cq_delay is defined (e.g., in milliseconds)
5
+ class SomeClass:
6
+ def __init__(self, auto_cq_delay_ms):
7
+ self.auto_cq_delay = auto_cq_delay_ms
7
8
 
8
- print(f"{type(pointer)=} {type(testfunc)=})
9
+
10
+ # Example instantiation
11
+ instance = SomeClass(auto_cq_delay_ms=5000) # 5 seconds delay
12
+
13
+
14
+ then = datetime.datetime.now()
15
+ future = datetime.datetime.now() + datetime.timedelta(milliseconds=15000)
16
+
17
+
18
+ # Calculate the total duration between 'then' and 'future'
19
+ total_duration = future - then
20
+
21
+ while datetime.datetime.now() < future:
22
+
23
+ now = datetime.datetime.now()
24
+ # Calculate the elapsed duration between 'then' and 'now'
25
+ elapsed_duration = now - then
26
+
27
+ # Avoid division by zero if total_duration is zero (though unlikely in this scenario)
28
+ if total_duration.total_seconds() > 0:
29
+ # Calculate the percentage of the way 'now' is to 'future'
30
+ percentage_complete = (
31
+ elapsed_duration.total_seconds() / total_duration.total_seconds()
32
+ ) * 100
33
+ print(f"Current time is {percentage_complete:.2f}% of the way to 'future'.")
34
+ else:
35
+ print(
36
+ "'future' is the same as or before 'then', so percentage cannot be calculated meaningfully."
37
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: not1mm
3
- Version: 25.4.11.2
3
+ Version: 25.4.12
4
4
  Summary: NOT1MM Logger
5
5
  Author-email: Michael Bridak <michael.bridak@gmail.com>
6
6
  License: GPL-3.0-or-later
@@ -251,6 +251,8 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
251
251
 
252
252
  ## Recent Changes
253
253
 
254
+ - [25-4-12] Added an Auto CQ time to fire progress bar.
255
+ - [25-4-11-3] Fixed issue with winkeyer not sending multiple macros in ESM mode.
254
256
  - [25-4-11-2] Fixed a crash.
255
257
  - [25-4-11-1] Add clear buffer to winkeyer interface to stop sending.
256
258
  - [25-4-11] Add Scandinavian Activity Contest
@@ -1,5 +1,5 @@
1
1
  not1mm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- not1mm/__main__.py,sha256=v5YuW_LITw4KeZZ8WBHQJGEftnlvBuT_JQTlBumfUZo,152801
2
+ not1mm/__main__.py,sha256=_sobv7fOxQw5gIM1Q2-fLSMn2EXSdOgki0PnZ2xTFGo,153631
3
3
  not1mm/bandmap.py,sha256=-zu5slsuAm2GmeW8g3yvURzsuQxemwIQfw1HEq8xKHM,29920
4
4
  not1mm/checkwindow.py,sha256=zEHlw40j6Wr3rvKbCQf2lcezCoiZqaBqEvBjQU5aKW0,7630
5
5
  not1mm/fsutils.py,sha256=ukHKxKTeNKxKwqRaJjtzRShL4X5Xl0jRBbADyy3Ifp8,1701
@@ -9,7 +9,7 @@ not1mm/radio.py,sha256=_b-tSFuDLoBKnABxrsafGQu2p33U-KOubY7-qgLV2yg,5408
9
9
  not1mm/ratewindow.py,sha256=PeFmmXYKA6ikR8AzWB6n5TS_1NoaHLocw4pSdySq_7A,6995
10
10
  not1mm/rtc_service.py,sha256=axAwnCBuTr-QL0YwXtWvg9tjwhcFsiiEZFgFjOofX6k,2816
11
11
  not1mm/statistics.py,sha256=YbXBCr8wtmXlF21ojgsh0jY_G-dnCApUFe87JZclZAI,7712
12
- not1mm/test.py,sha256=RN71m2S9MPIOJMaoCi0wZhwEhpEZunvtosZxaKahRB4,101
12
+ not1mm/test.py,sha256=BNhsSvLnNG5hN4pywIWnj4pUBI-wQYY4Ejfbl97knmw,1198
13
13
  not1mm/vfo.py,sha256=3kdSfLHLHAGgSE8b8H9n-jFUg_5L7tvrZt_7YCkdsLo,8945
14
14
  not1mm/voice_keying.py,sha256=HZImqC5NgnyW2nknNYQ3b7I8-6S_hxpq5G4RcIRXn_k,3005
15
15
  not1mm/data/JetBrainsMono-ExtraLight.ttf,sha256=g5Hn7BPounWMGDj1a8zZcyKMz03HSqW__pUluRR7Evg,274144
@@ -33,7 +33,7 @@ not1mm/data/k6gte.not1mm-32.png,sha256=XdTsCa3xqwTfn26Ga7RwO_Vlbg_77RKkSc8bMxVcC
33
33
  not1mm/data/k6gte.not1mm-64.png,sha256=6ku45Gq1g5ezh04F07osoKRtanb3e4kbx5XdIEh3N90,2925
34
34
  not1mm/data/logwindow.ui,sha256=f7vULj96tHIQuR1nJMyvPHHcmVgzkhv9D1isyojsnFU,1458
35
35
  not1mm/data/logwindowx.ui,sha256=CwpI-h7cI1yqyldH9quKftsdHL5lTyL9ABOcf80nfqc,1632
36
- not1mm/data/main.ui,sha256=DNJ7jK_1Dd9SDiiGbdwvXDA0WEKjApdRKqBPYFt7S3c,63737
36
+ not1mm/data/main.ui,sha256=-JDQXOaxj8_7Wda9KT2rEM4YUjBs31CiT1Rjc_DBobM,64907
37
37
  not1mm/data/new_contest.ui,sha256=Q8ZORq_9iRls5AJTroh1HAhEkTCOu02nBv9e9xXMOCU,25119
38
38
  not1mm/data/not1mm.html,sha256=c9-mfjMwDt4f5pySUruz2gREW33CQ2_rCddM2z5CZQo,23273
39
39
  not1mm/data/opon.ui,sha256=QDicqAk2lORG2UWsHa6jHlsGn6uzrrI2R4HSAocpPes,2258
@@ -101,7 +101,7 @@ not1mm/data/phonetics/z.wav,sha256=arafCi7fwmBLdVDI-PRyaL4U-03PIQDhffwY5noJ_2c,5
101
101
  not1mm/lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
102
102
  not1mm/lib/about.py,sha256=sWycfGcruN3SaEe4JmaJ61K6D8Itq0WxpUYT-lEcmYM,416
103
103
  not1mm/lib/cat_interface.py,sha256=BJvy-34ZyiN73kKNQcCzE4w6ll2O6Ue0uz01T_3sf1E,25204
104
- not1mm/lib/cwinterface.py,sha256=o9u46THFzyx_e16oQ03nh9cHoeBiha9xSAB7-vx1Xqc,5173
104
+ not1mm/lib/cwinterface.py,sha256=rKUnqljHQC_Iljq4TCmAgSPe49lWbKcfxg58cE8YX5Y,5177
105
105
  not1mm/lib/database.py,sha256=-9iAPTXDGVUc3OfnZNZCaWRxg3u-qdJyO5jvSvrJQSk,49203
106
106
  not1mm/lib/edit_contact.py,sha256=Ki9bGPpqyQQBB1cU8VIBDCal3lbXeQ6qxhzklmhE2_w,353
107
107
  not1mm/lib/edit_macro.py,sha256=raKWBwsHInj5EUKmvyLQ6gqc3ZFDlstsD3xqoM4PC8E,517
@@ -118,7 +118,7 @@ not1mm/lib/plugin_common.py,sha256=D1OBjyLmX7zuSPqgTCmHwXzAKA12J_zTQItvyIem-4Y,1
118
118
  not1mm/lib/select_contest.py,sha256=WsptLuwkouIHeocJL3oZ6-eUfEnhpwdc-x7eMZ_TIVM,359
119
119
  not1mm/lib/settings.py,sha256=mXffn8Xaj5KATPQinNBR0V5DbHWQPsRfh24_axWGYuk,15254
120
120
  not1mm/lib/super_check_partial.py,sha256=hwT2NRwobu0PLDyw6ltmbmcAtGBD02CKGFbgGWjXMqA,2334
121
- not1mm/lib/version.py,sha256=tuZzyNZEcCw-eTdnV8oWJWnLx4F6nvNygsl2fyOYu-Q,50
121
+ not1mm/lib/version.py,sha256=atqnAZN-9H5r7AsrRXx2wU6Jo8y4lw4ILqxIBpKnWYk,48
122
122
  not1mm/lib/versiontest.py,sha256=8vDNptuBBunn-1IGkjNaquehqBYUJyjrPSF8Igmd4_Y,1286
123
123
  not1mm/plugins/10_10_fall_cw.py,sha256=oJh3JKqjOpnWElSlZpiQ631UnaOd8qra5s9bl_QoInk,14783
124
124
  not1mm/plugins/10_10_spring_cw.py,sha256=p7dSDtbFK0e6Xouw2V6swYn3VFVgHKyx4IfRWyBjMZY,14786
@@ -143,7 +143,7 @@ not1mm/plugins/cq_160_ssb.py,sha256=9KKDmmapETEebm1azfEzUWk1NyW3TBnYtBlFIPZYHBs,
143
143
  not1mm/plugins/cq_wpx_cw.py,sha256=F5lLuXumrviNHnNEk377OKeEJCnv_j9vnjHEcV70gFc,18249
144
144
  not1mm/plugins/cq_wpx_rtty.py,sha256=WohxnrCIC2EF7hqLLcixJFAK505X-Z766L3DMVUf4sA,21068
145
145
  not1mm/plugins/cq_wpx_ssb.py,sha256=mtUD0tQnraDHoCHIeuWpOD64my3Kni9mXVH5IF2QPL0,16816
146
- not1mm/plugins/cq_ww_cw.py,sha256=YBlP4Nzp5X-cg4ZEnlrW1CnNpN0GAQqn30S-bYMM-aQ,18041
146
+ not1mm/plugins/cq_ww_cw.py,sha256=DQW6NtDGTaUWXmrXLn1nGAXnVGuCjzUddCnRNLmNZuw,18124
147
147
  not1mm/plugins/cq_ww_rtty.py,sha256=2u3k4ofPh3S4B-BVlQtis-X4rwdx221WRf3hjHWPEyg,22549
148
148
  not1mm/plugins/cq_ww_ssb.py,sha256=txeBfJ8rZCrAG2BWY-UmTH81ufRYbkeJJ6NpnV1eKKg,18055
149
149
  not1mm/plugins/cwt.py,sha256=_bYlv6AMhfNVI7pChkSfEZ9amaIYhxu71qdmwgPTrKw,17594
@@ -178,9 +178,9 @@ not1mm/plugins/stew_perry_topband.py,sha256=3U-Dr28haBTqTaZWLiC1qHQBmLsLENDL-ihy
178
178
  not1mm/plugins/ukeidx.py,sha256=0ABGW7_9Ui0Rgr8mkPBxOJokAIerM1a4-HWnl6VsnV8,19105
179
179
  not1mm/plugins/weekly_rtty.py,sha256=C8Xs3Q5UgSYx-mFFar8BVARWtmqlyrbeC98Ubzb4UN8,20128
180
180
  not1mm/plugins/winter_field_day.py,sha256=hmAMgkdqIXtnCNyUp8J9Bb8liN8wj10wps6ROuG-Bok,15284
181
- not1mm-25.4.11.2.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
182
- not1mm-25.4.11.2.dist-info/METADATA,sha256=NyLYQ7S0_znPT9Okdy_a4knjJu7vSsaLKdGE_NzzB2k,38141
183
- not1mm-25.4.11.2.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
184
- not1mm-25.4.11.2.dist-info/entry_points.txt,sha256=pMcZk_0dxFgLkcUkF0Q874ojpwOmF3OL6EKw9LgvocM,47
185
- not1mm-25.4.11.2.dist-info/top_level.txt,sha256=0YmTxEcDzQlzXub-lXASvoLpg_mt1c2thb5cVkDf5J4,7
186
- not1mm-25.4.11.2.dist-info/RECORD,,
181
+ not1mm-25.4.12.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
182
+ not1mm-25.4.12.dist-info/METADATA,sha256=2CaR_uTiFmy3n94pB5vwG4eRTjCO0iTgLAkVBU9C3rA,38276
183
+ not1mm-25.4.12.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
184
+ not1mm-25.4.12.dist-info/entry_points.txt,sha256=pMcZk_0dxFgLkcUkF0Q874ojpwOmF3OL6EKw9LgvocM,47
185
+ not1mm-25.4.12.dist-info/top_level.txt,sha256=0YmTxEcDzQlzXub-lXASvoLpg_mt1c2thb5cVkDf5J4,7
186
+ not1mm-25.4.12.dist-info/RECORD,,