# HG changeset patch # User Marco Filippi iz3gme.marco@gmail.com # Date 1337797175 -7200 # Node ID bb14698be7638c9c6ac535581db52bde8d425ba0 # Parent e7cbbe3465f1994d64463b1405eaa7edd8f7b834 Add rx_dtcs and additional tone/dtcs modes support in UI needed for Feature #100
diff -r e7cbbe3465f1 -r bb14698be763 chirp/chirp_common.py --- a/chirp/chirp_common.py mer mag 23 16:14:31 2012 -0700 +++ b/chirp/chirp_common.py mer mag 23 20:19:35 2012 +0200 @@ -56,6 +56,7 @@ "DTCS->", "->Tone", "->DTCS", + "DTCS->DTCS", ]
MODES = ["WFM", "FM", "NFM", "AM", "NAM", "DV", "USB", "LSB", "CW", "RTTY", @@ -213,6 +214,7 @@ rtone = 88.5 ctone = 88.5 dtcs = 23 + rx_dtcs = 23 tmode = "" cross_mode = "Tone->Tone" dtcs_polarity = "NN" @@ -242,6 +244,7 @@ self.rtone = 88.5 self.ctone = 88.5 self.dtcs = 23 + self.rx_dtcs = 23 self.tmode = "" self.cross_mode = "Tone->Tone" self.dtcs_polarity = "NN" @@ -262,6 +265,7 @@ "rtone" : TONES, "ctone" : TONES, "dtcs" : DTCS_CODES + DTCS_EXTRA_CODES, + "rx_dtcs" : DTCS_CODES + DTCS_EXTRA_CODES, "tmode" : TONE_MODES, "dtcs_polarity" : ["NN", "NR", "RN", "RR"], "cross_mode" : CROSS_MODES, @@ -444,6 +448,13 @@ if self.dtcs not in DTCS_CODES: raise errors.InvalidDataError("DTCS code is not valid")
+ try: + self.rx_dtcs = int(vals[8], 10) + except: + raise errors.InvalidDataError("DTCS Rx code is not a valid number") + if self.rx_dtcs not in DTCS_CODES: + raise errors.InvalidDataError("DTCS Rx code is not valid") + if vals[9] in ["NN", "NR", "RN", "RR"]: self.dtcs_polarity = vals[9] else: @@ -614,6 +625,7 @@ # General "has_bank_index" : BOOLEAN, "has_dtcs" : BOOLEAN, + "has_rx_dtcs" : BOOLEAN, "has_dtcs_polarity" : BOOLEAN, "has_mode" : BOOLEAN, "has_offset" : BOOLEAN, @@ -702,6 +714,8 @@ "an order other than in main memory") self.init("has_dtcs", True, "Indicates that DTCS tone mode is available") + self.init("has_rx_dtcs", False, + "Indicates that radio can use two different DTCS codes for rx and tx") self.init("has_dtcs_polarity", True, "Indicates that the DTCS polarity can be changed") self.init("has_mode", True, diff -r e7cbbe3465f1 -r bb14698be763 chirpui/memedit.py --- a/chirpui/memedit.py mer mag 23 16:14:31 2012 -0700 +++ b/chirpui/memedit.py mer mag 23 20:19:35 2012 +0200 @@ -60,56 +60,59 @@
class MemoryEditor(common.Editor): cols = [ - (_("Loc") , TYPE_INT, gtk.CellRendererText, ), - (_("Frequency") , TYPE_INT64, gtk.CellRendererText, ), - (_("Name") , TYPE_STRING, gtk.CellRendererText, ), - (_("Tone Mode") , TYPE_STRING, gtk.CellRendererCombo, ), - (_("Tone") , TYPE_FLOAT, gtk.CellRendererCombo, ), - (_("ToneSql") , TYPE_FLOAT, gtk.CellRendererCombo, ), - (_("DTCS Code") , TYPE_INT, gtk.CellRendererCombo, ), - (_("DTCS Pol") , TYPE_STRING, gtk.CellRendererCombo, ), - (_("Cross Mode"), TYPE_STRING, gtk.CellRendererCombo, ), - (_("Duplex") , TYPE_STRING, gtk.CellRendererCombo, ), - (_("Offset") , TYPE_INT64, gtk.CellRendererText, ), - (_("Mode") , TYPE_STRING, gtk.CellRendererCombo, ), - (_("Power") , TYPE_STRING, gtk.CellRendererCombo, ), - (_("Tune Step") , TYPE_FLOAT, gtk.CellRendererCombo, ), - (_("Skip") , TYPE_STRING, gtk.CellRendererCombo, ), - (_("Comment") , TYPE_STRING, gtk.CellRendererText, ), - ("_filled" , TYPE_BOOLEAN, None, ), - ("_hide_cols" , TYPE_PYOBJECT,None, ), - ("_extd" , TYPE_STRING, None, ), + (_("Loc") , TYPE_INT, gtk.CellRendererText, ), + (_("Frequency") , TYPE_INT64, gtk.CellRendererText, ), + (_("Name") , TYPE_STRING, gtk.CellRendererText, ), + (_("Tone Mode") , TYPE_STRING, gtk.CellRendererCombo, ), + (_("Tone") , TYPE_FLOAT, gtk.CellRendererCombo, ), + (_("ToneSql") , TYPE_FLOAT, gtk.CellRendererCombo, ), + (_("DTCS Code") , TYPE_INT, gtk.CellRendererCombo, ), + (_("DTCS Rx Code") , TYPE_INT, gtk.CellRendererCombo, ), + (_("DTCS Pol") , TYPE_STRING, gtk.CellRendererCombo, ), + (_("Cross Mode") , TYPE_STRING, gtk.CellRendererCombo, ), + (_("Duplex") , TYPE_STRING, gtk.CellRendererCombo, ), + (_("Offset") , TYPE_INT64, gtk.CellRendererText, ), + (_("Mode") , TYPE_STRING, gtk.CellRendererCombo, ), + (_("Power") , TYPE_STRING, gtk.CellRendererCombo, ), + (_("Tune Step") , TYPE_FLOAT, gtk.CellRendererCombo, ), + (_("Skip") , TYPE_STRING, gtk.CellRendererCombo, ), + (_("Comment") , TYPE_STRING, gtk.CellRendererText, ), + ("_filled" , TYPE_BOOLEAN, None, ), + ("_hide_cols" , TYPE_PYOBJECT,None, ), + ("_extd" , TYPE_STRING, None, ), ]
defaults = { - _("Name") : "", - _("Frequency") : 146010000, - _("Tone") : 88.5, - _("ToneSql") : 88.5, - _("DTCS Code") : 23, - _("DTCS Pol") : "NN", - _("Cross Mode"): "Tone->Tone", - _("Duplex") : "", - _("Offset") : 0, - _("Mode") : "FM", - _("Power") : "", - _("Tune Step") : 5.0, - _("Tone Mode") : "", - _("Skip") : "", - _("Comment") : "", + _("Name") : "", + _("Frequency") : 146010000, + _("Tone") : 88.5, + _("ToneSql") : 88.5, + _("DTCS Code") : 23, + _("DTCS Rx Code") : 23, + _("DTCS Pol") : "NN", + _("Cross Mode") : "Tone->Tone", + _("Duplex") : "", + _("Offset") : 0, + _("Mode") : "FM", + _("Power") : "", + _("Tune Step") : 5.0, + _("Tone Mode") : "", + _("Skip") : "", + _("Comment") : "", }
choices = { - _("Tone") : chirp_common.TONES, - _("ToneSql") : chirp_common.TONES, - _("DTCS Code") : chirp_common.DTCS_CODES, - _("DTCS Pol") : ["NN", "NR", "RN", "RR"], - _("Mode") : chirp_common.MODES, - _("Power") : [], - _("Duplex") : ["", "-", "+", "split"], - _("Tune Step") : chirp_common.TUNING_STEPS, - _("Tone Mode") : ["", "Tone", "TSQL", "DTCS"], - _("Cross Mode") : chirp_common.CROSS_MODES, + _("Tone") : chirp_common.TONES, + _("ToneSql") : chirp_common.TONES, + _("DTCS Code") : chirp_common.DTCS_CODES, + _("DTCS Rx Code") : chirp_common.DTCS_CODES, + _("DTCS Pol") : ["NN", "NR", "RN", "RR"], + _("Mode") : chirp_common.MODES, + _("Power") : [], + _("Duplex") : ["", "-", "+", "split"], + _("Tune Step") : chirp_common.TUNING_STEPS, + _("Tone Mode") : ["", "Tone", "TSQL", "DTCS"], + _("Cross Mode") : chirp_common.CROSS_MODES, }
def ed_name(self, _, __, new, ___): @@ -206,19 +209,24 @@ if tmode == "Tone": hide += [self.col(_("ToneSql")), self.col(_("DTCS Code")), + self.col(_("DTCS Rx Code")), self.col(_("DTCS Pol"))] elif tmode == "TSQL": if self._features.has_ctone: hide += [self.col(_("Tone"))]
hide += [self.col(_("DTCS Code")), + self.col(_("DTCS Rx Code")), self.col(_("DTCS Pol"))] elif tmode == "DTCS": - hide += [self.col(_("Tone")), self.col(_("ToneSql"))] + hide += [self.col(_("Tone")), + self.col(_("DTCS Rx Code")), + self.col(_("ToneSql"))] elif tmode == "" or tmode == "(None)": hide += [self.col(_("Tone")), self.col(_("ToneSql")), self.col(_("DTCS Code")), + self.col(_("DTCS Rx Code")), self.col(_("DTCS Pol"))]
if duplex == "" or duplex == "(None)": @@ -303,7 +311,7 @@
if colnum == self.col(_("Frequency")): val = chirp_common.format_freq(val) - elif colnum == self.col(_("DTCS Code")): + elif colnum in [self.col(_("DTCS Code")), self.col(_("DTCS Rx Code"))]: val = "%03i" % int(val) elif colnum == self.col(_("Offset")): val = chirp_common.format_freq(val) @@ -890,6 +898,7 @@ self.col(_("Tone")), memory.rtone, self.col(_("ToneSql")), memory.ctone, self.col(_("DTCS Code")), memory.dtcs, + self.col(_("DTCS Rx Code")), memory.rx_dtcs, self.col(_("DTCS Pol")), memory.dtcs_polarity, self.col(_("Cross Mode")), memory.cross_mode, self.col(_("Duplex")), memory.duplex, @@ -944,6 +953,7 @@ mem.rtone = vals[self.col(_("Tone"))] mem.ctone = vals[self.col(_("ToneSql"))] mem.dtcs = vals[self.col(_("DTCS Code"))] + mem.rx_dtcs = vals[self.col(_("DTCS Rx Code"))] mem.tmode = vals[self.col(_("Tone Mode"))] mem.cross_mode = vals[self.col(_("Cross Mode"))] mem.dtcs_polarity = vals[self.col(_("DTCS Pol"))] @@ -1076,6 +1086,7 @@ def get_unsupported_columns(self): maybe_hide = [ ("has_dtcs", _("DTCS Code")), + ("has_rx_dtcs", _("DTCS Rx Code")), ("has_dtcs_polarity", _("DTCS Pol")), ("has_mode", _("Mode")), ("has_offset", _("Offset")),