[chirp_devel] [PATCH] [RFC] Offset calculator
# HG changeset patch # User Dan Smith dsmith@danplanet.com # Date 1337798425 25200 # Node ID de06d87191f171bd87cdd9d04693e0fdcd960728 # Parent 51a0d9490ced8d3b24ec13a0ed572233185c3560 [RFC] Offset calculator
This allows users of radios with only an offset field to calculate the required offset from a given TX frequency. This is accessed by right- clicking on the memory and choosing "Calculate Offset...". Probably need some better verbiage, but this shows the functionality enough for comments.
diff -r 51a0d9490ced -r de06d87191f1 chirpui/memedit.py --- a/chirpui/memedit.py Tue May 22 16:41:27 2012 -0700 +++ b/chirpui/memedit.py Wed May 23 11:40:25 2012 -0700 @@ -58,6 +58,34 @@ return None return store.get_iter((row - 1,))
+def prompt_for_tx_frequency(txfreq): + d = gtk.Dialog(title=_("Offset"), + buttons=(gtk.STOCK_OK, gtk.RESPONSE_OK, + gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)) + + l = gtk.Label(_("Desired TX frequency:")) + l.show() + d.vbox.pack_start(l, 0, 0, 0) + + f = gtk.Entry() + f.set_text(chirp_common.format_freq(txfreq)) + f.show() + d.vbox.pack_start(f, 0, 0, 0) + + freq = None + while True: + r = d.run() + if r != gtk.RESPONSE_OK: + break + try: + freq = chirp_common.parse_freq(f.get_text()) + break + except ValueError: + pass + + d.destroy() + return freq + class MemoryEditor(common.Editor): cols = [ (_("Loc") , TYPE_INT, gtk.CellRendererText, ), @@ -624,6 +652,28 @@ self.emit("changed") dlg.destroy()
+ def _calc_offset(self, iter): + mem = self._get_memory(iter) + rxfreq = mem.freq + if mem.duplex: + txfreq = mem.freq + (int("%s1" % mem.duplex) * mem.offset) + else: + txfreq = mem.freq + txfreq = prompt_for_tx_frequency(txfreq) + if txfreq is None: + return + + if rxfreq == txfreq: + mem.duplex = "" + mem.offset = 0 + else: + mem.duplex = txfreq < rxfreq and "-" or "+" + mem.offset = abs(txfreq - rxfreq) + + self._set_memory(iter, mem) + job = common.RadioJob(None, "set_memory", mem) + self.rthread.submit(job) + def mh(self, _action, store, paths): action = _action.get_name() iter = store.get_iter(paths[0]) @@ -663,7 +713,8 @@ elif action == "edit": job = common.RadioJob(self.edit_memory, "get_memory", cur_pos) self.rthread.submit(job) - + elif action == "calcoffset": + self._calc_offset(iter) if changed: self.emit("changed")
@@ -688,6 +739,7 @@ <ui> <popup name="Menu"> <menuitem action="edit"/> + <menuitem action="calcoffset"/> <menuitem action="insert_prev"/> <menuitem action="insert_next"/> <menuitem action="delete"/> @@ -711,6 +763,7 @@
actions = [ ("edit", _("Edit")), + ("calcoffset", _("Calculate offset for TX frequency")), ("insert_prev", _("Insert row above")), ("insert_next", _("Insert row below")), ("delete", issingle and _("Delete") or _("Delete all")),
participants (1)
-
Dan Smith