not1mm 24.10.8__py3-none-any.whl → 24.10.10__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
@@ -37,7 +37,7 @@ except OSError as exception:
37
37
  from PyQt6 import QtCore, QtGui, QtWidgets, uic
38
38
  from PyQt6.QtCore import QDir, Qt, QThread, QSettings, QCoreApplication
39
39
  from PyQt6.QtGui import QFontDatabase, QColorConstants, QPalette, QColor, QPixmap
40
- from PyQt6.QtWidgets import QFileDialog, QSplashScreen
40
+ from PyQt6.QtWidgets import QFileDialog, QSplashScreen, QApplication
41
41
 
42
42
  from not1mm.lib.about import About
43
43
  from not1mm.lib.cwinterface import CW
@@ -162,6 +162,8 @@ class MainWindow(QtWidgets.QMainWindow):
162
162
  oldtext = ""
163
163
  text_color = QColorConstants.Black
164
164
  current_palette = None
165
+ use_esm = False
166
+ esm_dict = {}
165
167
 
166
168
  radio_thread = QThread()
167
169
  voice_thread = QThread()
@@ -176,6 +178,8 @@ class MainWindow(QtWidgets.QMainWindow):
176
178
  lookup_service = None
177
179
  fldigi_util = None
178
180
 
181
+ current_widget = None
182
+
179
183
  def __init__(self, splash):
180
184
  super().__init__()
181
185
  logger.info("MainWindow: __init__")
@@ -194,6 +198,7 @@ class MainWindow(QtWidgets.QMainWindow):
194
198
  self.setCorner(Qt.Corner.TopLeftCorner, Qt.DockWidgetArea.LeftDockWidgetArea)
195
199
  self.setCorner(Qt.Corner.BottomLeftCorner, Qt.DockWidgetArea.LeftDockWidgetArea)
196
200
  uic.loadUi(fsutils.APP_DATA_PATH / "main.ui", self)
201
+ QApplication.instance().focusObjectChanged.connect(self.on_focus_changed)
197
202
  self.cw_entry.hide()
198
203
  self.leftdot.hide()
199
204
  self.rightdot.hide()
@@ -246,13 +251,18 @@ class MainWindow(QtWidgets.QMainWindow):
246
251
  self.radioButton_sp.clicked.connect(self.run_sp_buttons_clicked)
247
252
  self.score.setText("0")
248
253
  self.callsign.textEdited.connect(self.callsign_changed)
249
- self.callsign.returnPressed.connect(self.save_contact)
250
- self.sent.returnPressed.connect(self.save_contact)
251
- self.receive.returnPressed.connect(self.save_contact)
252
- self.other_1.returnPressed.connect(self.save_contact)
254
+ self.callsign.returnPressed.connect(self.check_esm_with_enter)
255
+ self.callsign.cursorPositionChanged.connect(self.check_esm)
256
+ self.sent.returnPressed.connect(self.check_esm_with_enter)
257
+ self.sent.cursorPositionChanged.connect(self.check_esm)
258
+ self.receive.returnPressed.connect(self.check_esm_with_enter)
259
+ self.receive.cursorPositionChanged.connect(self.check_esm)
260
+ self.other_1.returnPressed.connect(self.check_esm_with_enter)
253
261
  self.other_1.textEdited.connect(self.other_1_changed)
254
- self.other_2.returnPressed.connect(self.save_contact)
262
+ self.other_1.cursorPositionChanged.connect(self.check_esm)
263
+ self.other_2.returnPressed.connect(self.check_esm_with_enter)
255
264
  self.other_2.textEdited.connect(self.other_2_changed)
265
+ self.other_2.cursorPositionChanged.connect(self.check_esm)
256
266
 
257
267
  self.sent.setText("59")
258
268
  self.receive.setText("59")
@@ -651,6 +661,47 @@ class MainWindow(QtWidgets.QMainWindow):
651
661
  "You can udate to the current version by using:\npip install -U not1mm"
652
662
  )
653
663
 
664
+ def on_focus_changed(self, new):
665
+ """"""
666
+ if self.use_esm:
667
+ if hasattr(self.contest, "process_esm"):
668
+ self.contest.process_esm(self, new_focused_widget=new)
669
+
670
+ def make_button_green(self, the_button: QtWidgets.QPushButton) -> None:
671
+ """Turn the_button green."""
672
+ if the_button is not None:
673
+ pal = QPalette()
674
+ pal.isCopyOf(self.current_palette)
675
+ greenColor = QColor(0, 128, 0)
676
+ pal.setBrush(QPalette.ColorRole.Button, greenColor)
677
+ the_button.setPalette(pal)
678
+
679
+ def restore_button_color(self, the_button: QtWidgets.QPushButton) -> None:
680
+ """Restores the color of the button"""
681
+ the_button.setPalette(self.current_palette)
682
+
683
+ def check_esm_with_enter(self):
684
+ """Check for ESM, otherwise save contact."""
685
+ if self.use_esm:
686
+ if hasattr(self.contest, "process_esm"):
687
+ self.contest.process_esm(self, with_enter=True)
688
+ else:
689
+ self.save_contact()
690
+ else:
691
+ self.save_contact()
692
+
693
+ def check_esm(self):
694
+ """Check for ESM, otherwise save contact."""
695
+ if self.use_esm:
696
+ if hasattr(self.contest, "process_esm"):
697
+ self.contest.process_esm(self)
698
+ else:
699
+ ...
700
+ # self.save_contact()
701
+ else:
702
+ ...
703
+ # self.save_contact()
704
+
654
705
  def show_splash_msg(self, msg: str) -> None:
655
706
  """Show text message in the splash window."""
656
707
  self.splash.showMessage(
@@ -1719,7 +1770,6 @@ class MainWindow(QtWidgets.QMainWindow):
1719
1770
  -------
1720
1771
  None
1721
1772
  """
1722
-
1723
1773
  modifier = event.modifiers()
1724
1774
  if event.key() == Qt.Key.Key_K:
1725
1775
  self.toggle_cw_entry()
@@ -2027,7 +2077,7 @@ class MainWindow(QtWidgets.QMainWindow):
2027
2077
 
2028
2078
  logger.debug("saving contact")
2029
2079
  if self.contest is None:
2030
- self.show_message_box("You have no contest defined.")
2080
+ self.show_message_box("You have no contest defined...")
2031
2081
  return
2032
2082
  if len(self.callsign.text()) < 3:
2033
2083
  return
@@ -2666,7 +2716,33 @@ class MainWindow(QtWidgets.QMainWindow):
2666
2716
  for band_to_show in self.pref.get("bands", []):
2667
2717
  if band_to_show in _indicator:
2668
2718
  _indicator[band_to_show].show()
2669
- # self.show_band_mode()
2719
+
2720
+ fkey_dict = {
2721
+ "F1": self.F1,
2722
+ "F2": self.F2,
2723
+ "F3": self.F3,
2724
+ "F4": self.F4,
2725
+ "F5": self.F5,
2726
+ "F6": self.F6,
2727
+ "F7": self.F7,
2728
+ "F8": self.F8,
2729
+ "F9": self.F9,
2730
+ "F10": self.F10,
2731
+ "F11": self.F11,
2732
+ "F12": self.F12,
2733
+ "DISABLED": None,
2734
+ }
2735
+
2736
+ self.use_esm = self.pref.get("use_esm", False)
2737
+ self.esm_dict["CQ"] = fkey_dict.get(self.pref.get("esm_cq", "DISABLED"))
2738
+ self.esm_dict["EXCH"] = fkey_dict.get(self.pref.get("esm_exch", "DISABLED"))
2739
+ self.esm_dict["QRZ"] = fkey_dict.get(self.pref.get("esm_qrz", "DISABLED"))
2740
+ self.esm_dict["AGN"] = fkey_dict.get(self.pref.get("esm_agn", "DISABLED"))
2741
+ self.esm_dict["HISCALL"] = fkey_dict.get(
2742
+ self.pref.get("esm_hiscall", "DISABLED")
2743
+ )
2744
+ self.esm_dict["MYCALL"] = fkey_dict.get(self.pref.get("esm_mycall", "DISABLED"))
2745
+ self.esm_dict["QSOB4"] = fkey_dict.get(self.pref.get("esm_qsob4", "DISABLED"))
2670
2746
 
2671
2747
  def watch_udp(self) -> None:
2672
2748
  """
@@ -1620,6 +1620,591 @@
1620
1620
  </item>
1621
1621
  </layout>
1622
1622
  </widget>
1623
+ <widget class="QWidget" name="options_tab">
1624
+ <attribute name="title">
1625
+ <string>Options</string>
1626
+ </attribute>
1627
+ <layout class="QGridLayout" name="gridLayout_10">
1628
+ <item row="6" column="2">
1629
+ <widget class="QComboBox" name="esm_mycall">
1630
+ <item>
1631
+ <property name="text">
1632
+ <string>F1</string>
1633
+ </property>
1634
+ </item>
1635
+ <item>
1636
+ <property name="text">
1637
+ <string>F2</string>
1638
+ </property>
1639
+ </item>
1640
+ <item>
1641
+ <property name="text">
1642
+ <string>F3</string>
1643
+ </property>
1644
+ </item>
1645
+ <item>
1646
+ <property name="text">
1647
+ <string>F4</string>
1648
+ </property>
1649
+ </item>
1650
+ <item>
1651
+ <property name="text">
1652
+ <string>F5</string>
1653
+ </property>
1654
+ </item>
1655
+ <item>
1656
+ <property name="text">
1657
+ <string>F6</string>
1658
+ </property>
1659
+ </item>
1660
+ <item>
1661
+ <property name="text">
1662
+ <string>F7</string>
1663
+ </property>
1664
+ </item>
1665
+ <item>
1666
+ <property name="text">
1667
+ <string>F8</string>
1668
+ </property>
1669
+ </item>
1670
+ <item>
1671
+ <property name="text">
1672
+ <string>F9</string>
1673
+ </property>
1674
+ </item>
1675
+ <item>
1676
+ <property name="text">
1677
+ <string>F10</string>
1678
+ </property>
1679
+ </item>
1680
+ <item>
1681
+ <property name="text">
1682
+ <string>F11</string>
1683
+ </property>
1684
+ </item>
1685
+ <item>
1686
+ <property name="text">
1687
+ <string>F12</string>
1688
+ </property>
1689
+ </item>
1690
+ <item>
1691
+ <property name="text">
1692
+ <string>DISABLED</string>
1693
+ </property>
1694
+ </item>
1695
+ </widget>
1696
+ </item>
1697
+ <item row="0" column="1">
1698
+ <widget class="QCheckBox" name="use_esm">
1699
+ <property name="text">
1700
+ <string>Enable ESM</string>
1701
+ </property>
1702
+ </widget>
1703
+ </item>
1704
+ <item row="4" column="1">
1705
+ <widget class="QLabel" name="label_24">
1706
+ <property name="text">
1707
+ <string>AGN</string>
1708
+ </property>
1709
+ </widget>
1710
+ </item>
1711
+ <item row="3" column="2">
1712
+ <widget class="QComboBox" name="esm_qrz">
1713
+ <item>
1714
+ <property name="text">
1715
+ <string>F1</string>
1716
+ </property>
1717
+ </item>
1718
+ <item>
1719
+ <property name="text">
1720
+ <string>F2</string>
1721
+ </property>
1722
+ </item>
1723
+ <item>
1724
+ <property name="text">
1725
+ <string>F3</string>
1726
+ </property>
1727
+ </item>
1728
+ <item>
1729
+ <property name="text">
1730
+ <string>F4</string>
1731
+ </property>
1732
+ </item>
1733
+ <item>
1734
+ <property name="text">
1735
+ <string>F5</string>
1736
+ </property>
1737
+ </item>
1738
+ <item>
1739
+ <property name="text">
1740
+ <string>F6</string>
1741
+ </property>
1742
+ </item>
1743
+ <item>
1744
+ <property name="text">
1745
+ <string>F7</string>
1746
+ </property>
1747
+ </item>
1748
+ <item>
1749
+ <property name="text">
1750
+ <string>F8</string>
1751
+ </property>
1752
+ </item>
1753
+ <item>
1754
+ <property name="text">
1755
+ <string>F9</string>
1756
+ </property>
1757
+ </item>
1758
+ <item>
1759
+ <property name="text">
1760
+ <string>F10</string>
1761
+ </property>
1762
+ </item>
1763
+ <item>
1764
+ <property name="text">
1765
+ <string>F11</string>
1766
+ </property>
1767
+ </item>
1768
+ <item>
1769
+ <property name="text">
1770
+ <string>F12</string>
1771
+ </property>
1772
+ </item>
1773
+ <item>
1774
+ <property name="text">
1775
+ <string>DISABLED</string>
1776
+ </property>
1777
+ </item>
1778
+ </widget>
1779
+ </item>
1780
+ <item row="0" column="0">
1781
+ <spacer name="horizontalSpacer_14">
1782
+ <property name="orientation">
1783
+ <enum>Qt::Horizontal</enum>
1784
+ </property>
1785
+ <property name="sizeHint" stdset="0">
1786
+ <size>
1787
+ <width>40</width>
1788
+ <height>20</height>
1789
+ </size>
1790
+ </property>
1791
+ </spacer>
1792
+ </item>
1793
+ <item row="5" column="2">
1794
+ <widget class="QComboBox" name="esm_hiscall">
1795
+ <item>
1796
+ <property name="text">
1797
+ <string>F1</string>
1798
+ </property>
1799
+ </item>
1800
+ <item>
1801
+ <property name="text">
1802
+ <string>F2</string>
1803
+ </property>
1804
+ </item>
1805
+ <item>
1806
+ <property name="text">
1807
+ <string>F3</string>
1808
+ </property>
1809
+ </item>
1810
+ <item>
1811
+ <property name="text">
1812
+ <string>F4</string>
1813
+ </property>
1814
+ </item>
1815
+ <item>
1816
+ <property name="text">
1817
+ <string>F5</string>
1818
+ </property>
1819
+ </item>
1820
+ <item>
1821
+ <property name="text">
1822
+ <string>F6</string>
1823
+ </property>
1824
+ </item>
1825
+ <item>
1826
+ <property name="text">
1827
+ <string>F7</string>
1828
+ </property>
1829
+ </item>
1830
+ <item>
1831
+ <property name="text">
1832
+ <string>F8</string>
1833
+ </property>
1834
+ </item>
1835
+ <item>
1836
+ <property name="text">
1837
+ <string>F9</string>
1838
+ </property>
1839
+ </item>
1840
+ <item>
1841
+ <property name="text">
1842
+ <string>F10</string>
1843
+ </property>
1844
+ </item>
1845
+ <item>
1846
+ <property name="text">
1847
+ <string>F11</string>
1848
+ </property>
1849
+ </item>
1850
+ <item>
1851
+ <property name="text">
1852
+ <string>F12</string>
1853
+ </property>
1854
+ </item>
1855
+ <item>
1856
+ <property name="text">
1857
+ <string>DISABLED</string>
1858
+ </property>
1859
+ </item>
1860
+ </widget>
1861
+ </item>
1862
+ <item row="3" column="1">
1863
+ <widget class="QLabel" name="label_23">
1864
+ <property name="text">
1865
+ <string>QRZ</string>
1866
+ </property>
1867
+ </widget>
1868
+ </item>
1869
+ <item row="4" column="2">
1870
+ <widget class="QComboBox" name="esm_agn">
1871
+ <item>
1872
+ <property name="text">
1873
+ <string>F1</string>
1874
+ </property>
1875
+ </item>
1876
+ <item>
1877
+ <property name="text">
1878
+ <string>F2</string>
1879
+ </property>
1880
+ </item>
1881
+ <item>
1882
+ <property name="text">
1883
+ <string>F3</string>
1884
+ </property>
1885
+ </item>
1886
+ <item>
1887
+ <property name="text">
1888
+ <string>F4</string>
1889
+ </property>
1890
+ </item>
1891
+ <item>
1892
+ <property name="text">
1893
+ <string>F5</string>
1894
+ </property>
1895
+ </item>
1896
+ <item>
1897
+ <property name="text">
1898
+ <string>F6</string>
1899
+ </property>
1900
+ </item>
1901
+ <item>
1902
+ <property name="text">
1903
+ <string>F7</string>
1904
+ </property>
1905
+ </item>
1906
+ <item>
1907
+ <property name="text">
1908
+ <string>F8</string>
1909
+ </property>
1910
+ </item>
1911
+ <item>
1912
+ <property name="text">
1913
+ <string>F9</string>
1914
+ </property>
1915
+ </item>
1916
+ <item>
1917
+ <property name="text">
1918
+ <string>F10</string>
1919
+ </property>
1920
+ </item>
1921
+ <item>
1922
+ <property name="text">
1923
+ <string>F11</string>
1924
+ </property>
1925
+ </item>
1926
+ <item>
1927
+ <property name="text">
1928
+ <string>F12</string>
1929
+ </property>
1930
+ </item>
1931
+ <item>
1932
+ <property name="text">
1933
+ <string>DISABLED</string>
1934
+ </property>
1935
+ </item>
1936
+ </widget>
1937
+ </item>
1938
+ <item row="0" column="2">
1939
+ <spacer name="horizontalSpacer_12">
1940
+ <property name="orientation">
1941
+ <enum>Qt::Horizontal</enum>
1942
+ </property>
1943
+ <property name="sizeHint" stdset="0">
1944
+ <size>
1945
+ <width>40</width>
1946
+ <height>20</height>
1947
+ </size>
1948
+ </property>
1949
+ </spacer>
1950
+ </item>
1951
+ <item row="2" column="1">
1952
+ <widget class="QLabel" name="label_22">
1953
+ <property name="text">
1954
+ <string>Exchange</string>
1955
+ </property>
1956
+ </widget>
1957
+ </item>
1958
+ <item row="5" column="1">
1959
+ <widget class="QLabel" name="label_25">
1960
+ <property name="text">
1961
+ <string>His Call</string>
1962
+ </property>
1963
+ </widget>
1964
+ </item>
1965
+ <item row="1" column="2">
1966
+ <widget class="QComboBox" name="esm_cq">
1967
+ <item>
1968
+ <property name="text">
1969
+ <string>F1</string>
1970
+ </property>
1971
+ </item>
1972
+ <item>
1973
+ <property name="text">
1974
+ <string>F2</string>
1975
+ </property>
1976
+ </item>
1977
+ <item>
1978
+ <property name="text">
1979
+ <string>F3</string>
1980
+ </property>
1981
+ </item>
1982
+ <item>
1983
+ <property name="text">
1984
+ <string>F4</string>
1985
+ </property>
1986
+ </item>
1987
+ <item>
1988
+ <property name="text">
1989
+ <string>F5</string>
1990
+ </property>
1991
+ </item>
1992
+ <item>
1993
+ <property name="text">
1994
+ <string>F6</string>
1995
+ </property>
1996
+ </item>
1997
+ <item>
1998
+ <property name="text">
1999
+ <string>F7</string>
2000
+ </property>
2001
+ </item>
2002
+ <item>
2003
+ <property name="text">
2004
+ <string>F8</string>
2005
+ </property>
2006
+ </item>
2007
+ <item>
2008
+ <property name="text">
2009
+ <string>F9</string>
2010
+ </property>
2011
+ </item>
2012
+ <item>
2013
+ <property name="text">
2014
+ <string>F10</string>
2015
+ </property>
2016
+ </item>
2017
+ <item>
2018
+ <property name="text">
2019
+ <string>F11</string>
2020
+ </property>
2021
+ </item>
2022
+ <item>
2023
+ <property name="text">
2024
+ <string>F12</string>
2025
+ </property>
2026
+ </item>
2027
+ <item>
2028
+ <property name="text">
2029
+ <string>DISABLED</string>
2030
+ </property>
2031
+ </item>
2032
+ </widget>
2033
+ </item>
2034
+ <item row="1" column="1">
2035
+ <widget class="QLabel" name="label_2l">
2036
+ <property name="text">
2037
+ <string>CQ</string>
2038
+ </property>
2039
+ </widget>
2040
+ </item>
2041
+ <item row="1" column="3">
2042
+ <spacer name="horizontalSpacer_13">
2043
+ <property name="orientation">
2044
+ <enum>Qt::Horizontal</enum>
2045
+ </property>
2046
+ <property name="sizeHint" stdset="0">
2047
+ <size>
2048
+ <width>40</width>
2049
+ <height>20</height>
2050
+ </size>
2051
+ </property>
2052
+ </spacer>
2053
+ </item>
2054
+ <item row="2" column="2">
2055
+ <widget class="QComboBox" name="esm_exch">
2056
+ <item>
2057
+ <property name="text">
2058
+ <string>F1</string>
2059
+ </property>
2060
+ </item>
2061
+ <item>
2062
+ <property name="text">
2063
+ <string>F2</string>
2064
+ </property>
2065
+ </item>
2066
+ <item>
2067
+ <property name="text">
2068
+ <string>F3</string>
2069
+ </property>
2070
+ </item>
2071
+ <item>
2072
+ <property name="text">
2073
+ <string>F4</string>
2074
+ </property>
2075
+ </item>
2076
+ <item>
2077
+ <property name="text">
2078
+ <string>F5</string>
2079
+ </property>
2080
+ </item>
2081
+ <item>
2082
+ <property name="text">
2083
+ <string>F6</string>
2084
+ </property>
2085
+ </item>
2086
+ <item>
2087
+ <property name="text">
2088
+ <string>F7</string>
2089
+ </property>
2090
+ </item>
2091
+ <item>
2092
+ <property name="text">
2093
+ <string>F8</string>
2094
+ </property>
2095
+ </item>
2096
+ <item>
2097
+ <property name="text">
2098
+ <string>F9</string>
2099
+ </property>
2100
+ </item>
2101
+ <item>
2102
+ <property name="text">
2103
+ <string>F10</string>
2104
+ </property>
2105
+ </item>
2106
+ <item>
2107
+ <property name="text">
2108
+ <string>F11</string>
2109
+ </property>
2110
+ </item>
2111
+ <item>
2112
+ <property name="text">
2113
+ <string>F12</string>
2114
+ </property>
2115
+ </item>
2116
+ <item>
2117
+ <property name="text">
2118
+ <string>DISABLED</string>
2119
+ </property>
2120
+ </item>
2121
+ </widget>
2122
+ </item>
2123
+ <item row="6" column="1">
2124
+ <widget class="QLabel" name="label_26">
2125
+ <property name="text">
2126
+ <string>My Call</string>
2127
+ </property>
2128
+ </widget>
2129
+ </item>
2130
+ <item row="7" column="1">
2131
+ <widget class="QLabel" name="label_15">
2132
+ <property name="text">
2133
+ <string>QSO B4</string>
2134
+ </property>
2135
+ </widget>
2136
+ </item>
2137
+ <item row="7" column="2">
2138
+ <widget class="QComboBox" name="esm_qsob4">
2139
+ <item>
2140
+ <property name="text">
2141
+ <string>F1</string>
2142
+ </property>
2143
+ </item>
2144
+ <item>
2145
+ <property name="text">
2146
+ <string>F2</string>
2147
+ </property>
2148
+ </item>
2149
+ <item>
2150
+ <property name="text">
2151
+ <string>F3</string>
2152
+ </property>
2153
+ </item>
2154
+ <item>
2155
+ <property name="text">
2156
+ <string>F4</string>
2157
+ </property>
2158
+ </item>
2159
+ <item>
2160
+ <property name="text">
2161
+ <string>F5</string>
2162
+ </property>
2163
+ </item>
2164
+ <item>
2165
+ <property name="text">
2166
+ <string>F6</string>
2167
+ </property>
2168
+ </item>
2169
+ <item>
2170
+ <property name="text">
2171
+ <string>F7</string>
2172
+ </property>
2173
+ </item>
2174
+ <item>
2175
+ <property name="text">
2176
+ <string>F8</string>
2177
+ </property>
2178
+ </item>
2179
+ <item>
2180
+ <property name="text">
2181
+ <string>F9</string>
2182
+ </property>
2183
+ </item>
2184
+ <item>
2185
+ <property name="text">
2186
+ <string>F10</string>
2187
+ </property>
2188
+ </item>
2189
+ <item>
2190
+ <property name="text">
2191
+ <string>F11</string>
2192
+ </property>
2193
+ </item>
2194
+ <item>
2195
+ <property name="text">
2196
+ <string>F12</string>
2197
+ </property>
2198
+ </item>
2199
+ <item>
2200
+ <property name="text">
2201
+ <string>DISABLED</string>
2202
+ </property>
2203
+ </item>
2204
+ </widget>
2205
+ </item>
2206
+ </layout>
2207
+ </widget>
1623
2208
  </widget>
1624
2209
  </item>
1625
2210
  </layout>
not1mm/lib/settings.py CHANGED
@@ -23,6 +23,12 @@ class Settings(QtWidgets.QDialog):
23
23
  self.usecwdaemon_radioButton.clicked.connect(self.set_cwdaemon_port_hint)
24
24
  self.usepywinkeyer_radioButton.clicked.connect(self.set_winkeyer_port_hint)
25
25
  self.usecwviacat_radioButton.clicked.connect(self.set_catforcw_port_hint)
26
+ self.cwport_field.setToolTip(
27
+ "Usually 6789 for cwdaemon and 8000 for pywinkeyer."
28
+ )
29
+ self.rigcontrolport_field.setToolTip(
30
+ "Usually 4532 for rigctld and 12345 for flrig."
31
+ )
26
32
  self.preference = pref
27
33
  if sd:
28
34
  self.devices = sd.query_devices()
@@ -32,6 +38,44 @@ class Settings(QtWidgets.QDialog):
32
38
 
33
39
  def setup(self):
34
40
  """setup dialog"""
41
+
42
+ self.use_esm.setChecked(bool(self.preference.get("use_esm")))
43
+
44
+ value = self.preference.get("esm_agn", "DISABLED")
45
+ index = self.esm_agn.findText(value)
46
+ if index != -1:
47
+ self.esm_agn.setCurrentIndex(index)
48
+
49
+ value = self.preference.get("esm_cq", "DISABLED")
50
+ index = self.esm_cq.findText(value)
51
+ if index != -1:
52
+ self.esm_cq.setCurrentIndex(index)
53
+
54
+ value = self.preference.get("esm_exch", "DISABLED")
55
+ index = self.esm_exch.findText(value)
56
+ if index != -1:
57
+ self.esm_exch.setCurrentIndex(index)
58
+
59
+ value = self.preference.get("esm_hiscall", "DISABLED")
60
+ index = self.esm_hiscall.findText(value)
61
+ if index != -1:
62
+ self.esm_hiscall.setCurrentIndex(index)
63
+
64
+ value = self.preference.get("esm_mycall", "DISABLED")
65
+ index = self.esm_mycall.findText(value)
66
+ if index != -1:
67
+ self.esm_mycall.setCurrentIndex(index)
68
+
69
+ value = self.preference.get("esm_qrz", "DISABLED")
70
+ index = self.esm_qrz.findText(value)
71
+ if index != -1:
72
+ self.esm_qrz.setCurrentIndex(index)
73
+
74
+ value = self.preference.get("esm_qsob4", "DISABLED")
75
+ index = self.esm_qsob4.findText(value)
76
+ if index != -1:
77
+ self.esm_qsob4.setCurrentIndex(index)
78
+
35
79
  for device in self.devices:
36
80
  if device.get("max_output_channels"):
37
81
  self.sounddevice.addItem(device.get("name"))
@@ -144,6 +188,15 @@ class Settings(QtWidgets.QDialog):
144
188
  """
145
189
  Write preferences to json file.
146
190
  """
191
+ self.preference["use_esm"] = self.use_esm.isChecked()
192
+ self.preference["esm_cq"] = self.esm_cq.currentText()
193
+ self.preference["esm_agn"] = self.esm_agn.currentText()
194
+ self.preference["esm_exch"] = self.esm_exch.currentText()
195
+ self.preference["esm_hiscall"] = self.esm_hiscall.currentText()
196
+ self.preference["esm_mycall"] = self.esm_mycall.currentText()
197
+ self.preference["esm_qrz"] = self.esm_qrz.currentText()
198
+ self.preference["esm_qsob4"] = self.esm_qsob4.currentText()
199
+
147
200
  self.preference["sounddevice"] = self.sounddevice.currentText()
148
201
  self.preference["useqrz"] = self.useqrz_radioButton.isChecked()
149
202
  # self.preference["usehamdb"] = self.usehamdb_radioButton.isChecked()
not1mm/lib/version.py CHANGED
@@ -1,3 +1,3 @@
1
1
  """It's the version"""
2
2
 
3
- __version__ = "24.10.8"
3
+ __version__ = "24.10.10"
@@ -380,3 +380,111 @@ def cabrillo(self):
380
380
 
381
381
  def recalculate_mults(self):
382
382
  """Recalculates multipliers after change in logged qso."""
383
+
384
+
385
+ def process_esm(self, new_focused_widget=None, with_enter=False):
386
+ """ESM State Machine"""
387
+
388
+ # self.pref["run_state"]
389
+
390
+ # -----===== Assigned F-Keys =====-----
391
+ # self.esm_dict["CQ"]
392
+ # self.esm_dict["EXCH"]
393
+ # self.esm_dict["QRZ"]
394
+ # self.esm_dict["AGN"]
395
+ # self.esm_dict["HISCALL"]
396
+ # self.esm_dict["MYCALL"]
397
+ # self.esm_dict["QSOB4"]
398
+
399
+ # ----==== text fields ====----
400
+ # self.callsign
401
+ # self.sent
402
+ # self.receive
403
+ # self.other_1
404
+ # self.other_2
405
+
406
+ inputs = {
407
+ self.callsign: "callsign",
408
+ self.sent: "sent",
409
+ self.receive: "receive",
410
+ self.other_1: "other_1",
411
+ self.other_2: "other_2",
412
+ }
413
+ if new_focused_widget is not None:
414
+ self.current_widget = inputs.get(new_focused_widget)
415
+
416
+ # print(f"checking esm {self.current_widget=} {with_enter=} {self.pref.get("run_state")=}")
417
+
418
+ for a_button in [
419
+ self.F1,
420
+ self.F2,
421
+ self.F3,
422
+ self.F4,
423
+ self.F5,
424
+ self.F6,
425
+ self.F7,
426
+ self.F8,
427
+ self.F9,
428
+ self.F10,
429
+ self.F11,
430
+ self.F12,
431
+ ]:
432
+ self.restore_button_color(a_button)
433
+
434
+ buttons_to_send = []
435
+
436
+ if self.pref.get("run_state"):
437
+ if self.current_widget == "callsign":
438
+ if len(self.callsign.text()) < 3:
439
+ self.make_button_green(self.esm_dict["CQ"])
440
+ buttons_to_send.append(self.esm_dict["CQ"])
441
+ elif len(self.callsign.text()) > 2 and self.callsign.text().isalnum():
442
+ self.make_button_green(self.esm_dict["HISCALL"])
443
+ self.make_button_green(self.esm_dict["EXCH"])
444
+ buttons_to_send.append(self.esm_dict["HISCALL"])
445
+ buttons_to_send.append(self.esm_dict["EXCH"])
446
+
447
+ if self.current_widget == "other_2":
448
+ if self.other_2.text() == "":
449
+ self.make_button_green(self.esm_dict["AGN"])
450
+ buttons_to_send.append(self.esm_dict["AGN"])
451
+ elif self.other_2.text().isnumeric():
452
+ self.make_button_green(self.esm_dict["QRZ"])
453
+ buttons_to_send.append(self.esm_dict["QRZ"])
454
+ buttons_to_send.append("LOGIT")
455
+ else:
456
+ self.make_button_green(self.esm_dict["AGN"])
457
+ buttons_to_send.append(self.esm_dict["AGN"])
458
+
459
+ if with_enter is True and bool(len(buttons_to_send)):
460
+ for button in buttons_to_send:
461
+ if button:
462
+ if button == "LOGIT":
463
+ self.save_contact()
464
+ continue
465
+ self.process_function_key(button)
466
+ else:
467
+ if self.current_widget == "callsign":
468
+ if len(self.callsign.text()) > 2 and self.callsign.text().isalnum():
469
+ self.make_button_green(self.esm_dict["MYCALL"])
470
+ buttons_to_send.append(self.esm_dict["MYCALL"])
471
+
472
+ if self.current_widget == "other_2":
473
+ if self.other_2.text() == "":
474
+ self.make_button_green(self.esm_dict["AGN"])
475
+ buttons_to_send.append(self.esm_dict["AGN"])
476
+ elif self.other_2.text().isnumeric():
477
+ self.make_button_green(self.esm_dict["EXCH"])
478
+ buttons_to_send.append(self.esm_dict["EXCH"])
479
+ buttons_to_send.append("LOGIT")
480
+ else:
481
+ self.make_button_green(self.esm_dict["AGN"])
482
+ buttons_to_send.append(self.esm_dict["AGN"])
483
+
484
+ if with_enter is True and bool(len(buttons_to_send)):
485
+ for button in buttons_to_send:
486
+ if button:
487
+ if button == "LOGIT":
488
+ self.save_contact()
489
+ continue
490
+ self.process_function_key(button)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: not1mm
3
- Version: 24.10.8
3
+ Version: 24.10.10
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
@@ -118,6 +118,16 @@ Requires-Dist: Levenshtein
118
118
  - [Cabrillo](#cabrillo)
119
119
  - [ADIF](#adif)
120
120
  - [Recalulate Mults](#recalulate-mults)
121
+ - [Testing Out ESM Currently only in CQ WW CW](#testing-out-esm-currently-only-in-cq-ww-cw)
122
+ - [Run States](#run-states)
123
+ - [CQ](#cq)
124
+ - [Call Entered send His Call and the Exchange](#call-entered-send-his-call-and-the-exchange)
125
+ - [Empty exchange field send AGN till you get it](#empty-exchange-field-send-agn-till-you-get-it)
126
+ - [Exchange field filled, send TU QRZ and logs it](#exchange-field-filled-send-tu-qrz-and-logs-it)
127
+ - [S\&P States](#sp-states)
128
+ - [With his call entered, Send your call](#with-his-call-entered-send-your-call)
129
+ - [If no exchange entered send AGN](#if-no-exchange-entered-send-agn)
130
+ - [With exchange entered, send your exchange and log it](#with-exchange-entered-send-your-exchange-and-log-it)
121
131
  - [Contest specific notes](#contest-specific-notes)
122
132
  - [ARRL Sweekstakes](#arrl-sweekstakes)
123
133
  - [The exchange parser](#the-exchange-parser)
@@ -219,6 +229,7 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
219
229
 
220
230
  ## Recent Changes
221
231
 
232
+ - [24-10-10] Add ESM to CQ WW CW to test it out.
222
233
  - [24-10-8] Fix crash on Tune to spot. Change placeholder text for the CW port for those unable to read documentation.
223
234
  - [24-10-6] Removed 60, 30, 17 and 12M from the default list of bands.
224
235
  - [24-10-5-1] Store the bandmap spots age timer in the preferences.
@@ -828,6 +839,55 @@ After editing a contact and before generating a Cabrillo file. There is a Misc
828
839
  menu option that will recalculate the multipliers incase an edit had caused a
829
840
  change.
830
841
 
842
+ ## Testing Out ESM Currently only in CQ WW CW
843
+
844
+ I caved and started working on ESM or Enter Sends Message. Currently it is only
845
+ working in the CQ WW CW. To test it out you can go to `FILE -> Configuration Settings`
846
+
847
+ ![Config Screen](https://private-user-images.githubusercontent.com/49108421/375571913-1fbb1da1-5b81-45f8-8b6d-412702add200.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mjg2MDU2MjUsIm5iZiI6MTcyODYwNTMyNSwicGF0aCI6Ii80OTEwODQyMS8zNzU1NzE5MTMtMWZiYjFkYTEtNWI4MS00NWY4LThiNmQtNDEyNzAyYWRkMjAwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDEwMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQxMDExVDAwMDg0NVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTU2NDBlZTliMTFlYzc1NjE1MzA4MjE1YTVkMzlhNmIwNzYzYjVlMzM5MDdjNTlkODVlODY1MzBlZWJmZWEzMWImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.DITQPUAHkFLk1ezFxvQYLCJVaq8vrUDm_5EbfDLJbsE)
848
+
849
+
850
+ Check the mark to Use ESM and tell it which function keys do what. The keys will need
851
+ to have the same function in both Run and S&P modes. The function keys will highlight
852
+ green depending on the state of the input fields. The green keys will be sent if you
853
+ press the Enter key. You should use the Space bar to move to another field.
854
+
855
+ The contact will be automatically logged once all the needed info is collected and the
856
+ QRZ (for Run) or Exchange (for S&P) is sent.
857
+
858
+ ## Run States
859
+
860
+ ### CQ
861
+
862
+ ![CQ](https://private-user-images.githubusercontent.com/49108421/375572433-a156588d-83b5-4edd-b9f6-4ab4291c258c.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mjg2MDU2MjUsIm5iZiI6MTcyODYwNTMyNSwicGF0aCI6Ii80OTEwODQyMS8zNzU1NzI0MzMtYTE1NjU4OGQtODNiNS00ZWRkLWI5ZjYtNGFiNDI5MWMyNThjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDEwMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQxMDExVDAwMDg0NVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTVjYTdjZDhhMmJiZTA5NTdmNDIxNTgxMmY5NmJmNDBiZmZjZTk2MTAyODM4NjYxYWQzY2Q3NGNkN2ZiYzZmNTImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.44q-Ns0aWBLBFARF8Oyb2wxF0olZx28eddPyp_p_T3s)
863
+
864
+ ### Call Entered send His Call and the Exchange
865
+
866
+ ![Call Entered send His Call and the Exchange.](https://private-user-images.githubusercontent.com/49108421/375572785-1d9f6a33-1cd1-4e08-82d5-b11851e279c7.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mjg2MDYyNjAsIm5iZiI6MTcyODYwNTk2MCwicGF0aCI6Ii80OTEwODQyMS8zNzU1NzI3ODUtMWQ5ZjZhMzMtMWNkMS00ZTA4LTgyZDUtYjExODUxZTI3OWM3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDEwMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQxMDExVDAwMTkyMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWEyZmEzOGM4ZmQ4MTNlZmM5ZDA2N2FmNDBkNTYzOTVmYTM3NzFiY2Q4NDE1ZTlkYzhmMjhiNGI4NGJiMmMzY2EmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.KcEd-CBbY2MHKrApqmXkr06Pcb0kvYyxK8tdQH3doc4)
867
+
868
+ ### Empty exchange field send AGN till you get it
869
+
870
+ ![Empty exchange field send AGN till you get it](https://private-user-images.githubusercontent.com/49108421/375573288-3fa5f231-0648-412a-94d7-06ab38e1334f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mjg2MDYyNjAsIm5iZiI6MTcyODYwNTk2MCwicGF0aCI6Ii80OTEwODQyMS8zNzU1NzMyODgtM2ZhNWYyMzEtMDY0OC00MTJhLTk0ZDctMDZhYjM4ZTEzMzRmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDEwMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQxMDExVDAwMTkyMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWIxNjA5NWM0MWI2ZmU0ODNmYjY2N2M5YTdjNzQ5ZDdkZWZkZmE3MDI2NjBlNzc4YmNhNTNjYjMzOTI4MjIwMzcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.VycMnaYPKW08YmCQmeGpQWToDpNNaEmNZ3LAnEQUifM)
871
+
872
+ ### Exchange field filled, send TU QRZ and logs it
873
+
874
+ ![Exchange field filled, send TU QRZ and logs it](https://private-user-images.githubusercontent.com/49108421/375573434-b6ee0617-60ac-4937-82cc-e1b1428899d5.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mjg2MDYyNjAsIm5iZiI6MTcyODYwNTk2MCwicGF0aCI6Ii80OTEwODQyMS8zNzU1NzM0MzQtYjZlZTA2MTctNjBhYy00OTM3LTgyY2MtZTFiMTQyODg5OWQ1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDEwMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQxMDExVDAwMTkyMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQxNzM4ODY2NWViNzNhZjI2OWRiYzQ0ZTBmMWIxOTRhODRiZDI1ZjQ3OWI0YjY5OGM4OGYxYmRjYWVjYjYzNjYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.yCx8NWkE9Ep-NKv2oxEjWWDMraBZsov59GzHspC3jmk)
875
+
876
+ ## S&P States
877
+
878
+ ### With his call entered, Send your call
879
+
880
+ ![With his call entered, Send your call](https://private-user-images.githubusercontent.com/49108421/375573821-67dd35c7-8563-4ad6-bee6-7f7514e7d3a6.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mjg2MDYyNjAsIm5iZiI6MTcyODYwNTk2MCwicGF0aCI6Ii80OTEwODQyMS8zNzU1NzM4MjEtNjdkZDM1YzctODU2My00YWQ2LWJlZTYtN2Y3NTE0ZTdkM2E2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDEwMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQxMDExVDAwMTkyMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTdkNDRmYmI2MThlYjg2ZjU5NjY3OWY2YTEyMGU2YWQ5YjIyM2NhY2QzODVhY2U3ZGZhMDI3ZDQzMmY1MTU5MWMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.p8JisS0D5noIDRUAjwkOyxpzR10MhIYmW-y8h2ngnZo)
881
+
882
+ ### If no exchange entered send AGN
883
+
884
+ ![If no exchange entered send AGN](https://private-user-images.githubusercontent.com/49108421/375573957-9753786b-3018-4821-b07a-42bdf50b4468.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mjg2MDYyNjAsIm5iZiI6MTcyODYwNTk2MCwicGF0aCI6Ii80OTEwODQyMS8zNzU1NzM5NTctOTc1Mzc4NmItMzAxOC00ODIxLWIwN2EtNDJiZGY1MGI0NDY4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDEwMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQxMDExVDAwMTkyMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWY5M2E1MzllOTc3YmEwNDZkOWFlYmEyMmQzNDc0YTUwYThmNzk1ODQ4M2IzMGExNjQyMTdlMzkyYzdmZjgyODkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.We-bPqprJ24HQW7eCjxFKuUxWJwawRZWab74INuSyyA)
885
+
886
+ ### With exchange entered, send your exchange and log it
887
+
888
+ ![With exchange entered, send your exchange and log it](https://private-user-images.githubusercontent.com/49108421/375574075-9857287e-ce11-44c8-a7de-417912988f08.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mjg2MDYyNjAsIm5iZiI6MTcyODYwNTk2MCwicGF0aCI6Ii80OTEwODQyMS8zNzU1NzQwNzUtOTg1NzI4N2UtY2UxMS00NGM4LWE3ZGUtNDE3OTEyOTg4ZjA4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDEwMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQxMDExVDAwMTkyMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPThmNzZiOTRkMzQyOGIxMWUzMjM4ZWVjMzI3ZTkzZjc3OThkZjI5NWYxYTNkYTQ0ZDYyNzJkMTA5ZjQwNDBmMzEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.YtD5IoXhSmSUs53ofWJUmuJZqca2Uhe6dYk8JyOHBgM)
889
+
890
+
831
891
  ## Contest specific notes
832
892
 
833
893
  I found it might be beneficial to have a section devoted to wierd quirky things
@@ -869,4 +929,4 @@ The best thing you can do is play around with it to see how it behaves.
869
929
  In the `Sent Exchange` field of the New Contest dialog put in the Precidence,
870
930
  Call, Check and Section. Example: `A K6GTE 17 ORG`.
871
931
 
872
- For the Run Exchange macro I'd put `{HISCALL} # A K6GTE 17 ORG`.
932
+ For the Run Exchange macro I'd put `{HISCALL} {SENTNR} {EXCH}`.
@@ -1,5 +1,5 @@
1
1
  not1mm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- not1mm/__main__.py,sha256=IjYrGDuq8T-Noe8gJ736-Mo7pyVepAHDGcMUigUGb-Y,131546
2
+ not1mm/__main__.py,sha256=m9GEvmOqtLldHG6w_gk8j2oSzGXi6RqBnxnVjGvlwpQ,134547
3
3
  not1mm/bandmap.py,sha256=P91rYGmd8r5K6TRNZt7kqqW6zCBVlFA1_n9-V7as1WE,31672
4
4
  not1mm/checkwindow.py,sha256=aI-nr8OF90IWV7R_XRdmitvBJ9M85evCs72HoU3Jnvc,10374
5
5
  not1mm/fsutils.py,sha256=ukHKxKTeNKxKwqRaJjtzRShL4X5Xl0jRBbADyy3Ifp8,1701
@@ -16,7 +16,7 @@ not1mm/data/alpha bravo charlie delta.txt,sha256=d5QMmSWEUAe4Rj1XbNjTPLa_5Be4Se6
16
16
  not1mm/data/bandmap.ui,sha256=hvovf1YKyfUVVbKl6Ib2zU4RdUrFsQwm-255wVeKXZE,7180
17
17
  not1mm/data/check.png,sha256=UvFOLr8V-79qnjW8wUaGItXk_OSP8m8hqPevs8NDlFY,387
18
18
  not1mm/data/checkwindow.ui,sha256=Ux5EgO-JalGB9qx3M6tmMpGHO0RmuuY1w0XEbuwd1xk,4658
19
- not1mm/data/configuration.ui,sha256=L3gZPd_qaAntVIojUktJXSj6dAAs9NNWLgzxdaWEZBE,53488
19
+ not1mm/data/configuration.ui,sha256=VGJYL14XPuJkJVKk0FWyZWFXK5ibZ3_0_VUBXyzKnOk,68141
20
20
  not1mm/data/contests.sql,sha256=4hmJCDvrbxnA_Y5S4T5o52TZieeFk6QUwFerwlFePNA,89307
21
21
  not1mm/data/cty.json,sha256=sBIN1raQOKeVIO5dRaWn0Yqq8XZKpM_VCzS3kMlcwp4,4871545
22
22
  not1mm/data/cwmacros.txt,sha256=PvJ7TxGILq-ErHb6Gbrm-08x76BbCdXb8AY8a7st5mg,451
@@ -112,9 +112,9 @@ not1mm/lib/new_contest.py,sha256=IznTDMq7yXHB6zBoGUEC_WDYPCPpsSZW4wwMJi16zK0,816
112
112
  not1mm/lib/playsound.py,sha256=kxkcitBFbZCXJ2wxQ1lxg4rBwfxiSpuNpJSXHOPCoXA,9241
113
113
  not1mm/lib/plugin_common.py,sha256=TbFUbftjELFt4QRdsjSHbqnXSngZOlSwlCTClqosDXA,9727
114
114
  not1mm/lib/select_contest.py,sha256=WsptLuwkouIHeocJL3oZ6-eUfEnhpwdc-x7eMZ_TIVM,359
115
- not1mm/lib/settings.py,sha256=YYAAdvhqlQ6y4GOJSxNmE4eDlgsIt2MvLxxOAbcpscY,11184
115
+ not1mm/lib/settings.py,sha256=7_JFDSKPOd35Gwzqhrbed4EfrlYUm7AEnz2xBRioc-g,13280
116
116
  not1mm/lib/super_check_partial.py,sha256=p5l3u2ZOCBtlWgbvskC50FpuoaIpR07tfC6zTdRWbh4,2334
117
- not1mm/lib/version.py,sha256=UYQ03Ct1PZCaboAlM47NoWvd3H9bDtVzUrLc-mKQ5h8,48
117
+ not1mm/lib/version.py,sha256=_D_ukQUdYbZSA6fI-cZ2OwXpNOQ_nr5d5rAAmQskuEQ,49
118
118
  not1mm/lib/versiontest.py,sha256=8vDNptuBBunn-1IGkjNaquehqBYUJyjrPSF8Igmd4_Y,1286
119
119
  not1mm/plugins/10_10_fall_cw.py,sha256=IttjX1yy4nDdACGsiYlPteFG8eVseX_WtoFio6bqHE8,10953
120
120
  not1mm/plugins/10_10_spring_cw.py,sha256=ThCptdM3dX4ywhoy2JRcOEyHSqcJolFaT7O_PYzM1Mg,10958
@@ -137,7 +137,7 @@ not1mm/plugins/cq_160_ssb.py,sha256=zIwSMAjHSt6W2edrDzVbyTf860JowHoFkU9BKO8Enag,
137
137
  not1mm/plugins/cq_wpx_cw.py,sha256=9aNzAR-KhznIwUlxUFjAi_hbiw_6RrCMwUBk9I2f6Hs,14037
138
138
  not1mm/plugins/cq_wpx_rtty.py,sha256=PpU_PxjQGeMjzbofYNsl-No37s7IgkPyW2bKFRkN9jU,16473
139
139
  not1mm/plugins/cq_wpx_ssb.py,sha256=-hGRovqHR9rfOUnG4LPOoABTb4heH8VAX6rYdJbCqsw,12687
140
- not1mm/plugins/cq_ww_cw.py,sha256=m4Xkqb_qFyXWEgkxqbanvtiCTvI8NNPKNXzHgFZzhnE,12340
140
+ not1mm/plugins/cq_ww_cw.py,sha256=rtJynxy4RAYXwGOk76k6DbVN1lo-Zl9voFH5t2OgplA,16130
141
141
  not1mm/plugins/cq_ww_rtty.py,sha256=WnqSfCNX6ieLZlUg_P_vx-Z2iY0lxdwEgPuT9aax1JU,16772
142
142
  not1mm/plugins/cq_ww_ssb.py,sha256=hZwG88-hPLmwIGXHX_S_ty8Nhn1kIuPjSuTRpCWoN9g,12631
143
143
  not1mm/plugins/cwt.py,sha256=KvvkEfQrYSra0y8qE4yThvZNLrZcslt0IqYEomDpf-M,12774
@@ -157,9 +157,9 @@ not1mm/plugins/ref_cw.py,sha256=aWjHHkqIKutjRUtzh09y5haFfnZK9poRQDWRQMDRxxU,1632
157
157
  not1mm/plugins/stew_perry_topband.py,sha256=CKBQbYl4ETxhXJd2dma4fg_C5pag_s7Nf61SCztZtqE,10668
158
158
  not1mm/plugins/weekly_rtty.py,sha256=DQcy3SY0Zn56EdlYGf3NxrRhTnkNa5IqRQPRQdKDSPs,14255
159
159
  not1mm/plugins/winter_field_day.py,sha256=4rcfRtobwjHO6BNL3WOTHzBmyyeuX79BNGBG8PfjrI8,10238
160
- not1mm-24.10.8.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
161
- not1mm-24.10.8.dist-info/METADATA,sha256=Fkd1pSMlrrpa3X5I6LYhg_L0Ul2ZI1ntz1WJAjqCDJ8,30857
162
- not1mm-24.10.8.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
163
- not1mm-24.10.8.dist-info/entry_points.txt,sha256=pMcZk_0dxFgLkcUkF0Q874ojpwOmF3OL6EKw9LgvocM,47
164
- not1mm-24.10.8.dist-info/top_level.txt,sha256=0YmTxEcDzQlzXub-lXASvoLpg_mt1c2thb5cVkDf5J4,7
165
- not1mm-24.10.8.dist-info/RECORD,,
160
+ not1mm-24.10.10.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
161
+ not1mm-24.10.10.dist-info/METADATA,sha256=LAq5jcblrc5PwviH6M4bpuKNRuMiBrJA47vV93OUT5o,39215
162
+ not1mm-24.10.10.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
163
+ not1mm-24.10.10.dist-info/entry_points.txt,sha256=pMcZk_0dxFgLkcUkF0Q874ojpwOmF3OL6EKw9LgvocM,47
164
+ not1mm-24.10.10.dist-info/top_level.txt,sha256=0YmTxEcDzQlzXub-lXASvoLpg_mt1c2thb5cVkDf5J4,7
165
+ not1mm-24.10.10.dist-info/RECORD,,