def add_outgoing(self, button, listw): d = inputdialog.FieldDialog(parent=self.window) d.add_field("Local", gtk.Entry()) d.add_field("Remote", gtk.Entry()) d.add_field("Station", gtk.Entry()) while d.run() == gtk.RESPONSE_OK: vals = [] for field, func in [("Local", int), ("Remote", int), ("Station", str)]: try: s = d.get_field(field).get_text() if not s: raise Exception("Empty") vals.append(func(s)) except: ed = gtk.MessageDialog(buttons=gtk.BUTTONS_OK, parent=d) ed.set_property("text", "Invalid value for '%s'" % field) ed.run() ed.destroy() break if len(vals) == 3: listw.add_item(*tuple(vals)) break d.destroy()
def do_dprs_calculator(initial=""): def ev_sym_changed(iconsel, oversel, icons): oversel.set_sensitive(icons[iconsel.get_active()][1][0] == "\\") d = inputdialog.FieldDialog(title=_("DPRS message")) msg = gtk.Entry(13) overlays = [chr(x) for x in range(ord(" "), ord("_"))] cur = initial if cur and cur[-3] == "*" and cur[3] == " ": msg.set_text(cur[4:-3]) dsym = cur[:2] deficn = gps.DPRS_TO_APRS.get(dsym, "/#") defovr = cur[2] if defovr not in overlays: print "Overlay %s not in list" % defovr defovr = " " else: deficn = "/#" defovr = " " icons = [] for sym in sorted(gps.DPRS_TO_APRS.values()): icon = get_icon(sym) if icon: icons.append((icon, sym)) iconsel = miscwidgets.make_pixbuf_choice(icons, deficn) oversel = miscwidgets.make_choice(overlays, False, defovr) iconsel.connect("changed", ev_sym_changed, oversel, icons) ev_sym_changed(iconsel, oversel, icons) d.add_field(_("Message"), msg) d.add_field(_("Icon"), iconsel) d.add_field(_("Overlay"), oversel) r = d.run() aicon = icons[iconsel.get_active()][1] mstr = msg.get_text().upper() over = oversel.get_active_text() d.destroy() if r != gtk.RESPONSE_OK: return dicon = gps.APRS_TO_DPRS[aicon] callsign = mainapp.get_mainapp().config.get("user", "callsign") string = "%s%s %s" % (dicon, over, mstr) check = gps.DPRS_checksum(callsign, string) return string + check
def build_image_dialog(filename, image, dlgParent=None): d = inputdialog.FieldDialog(title="Send Image", parent=dlgParent) def update(): update_image(filename, d) d.add_field(_("Filename"), gtk.Label(os.path.basename(filename))) d.sizelabel = gtk.Label("--") d.add_field(_("Size"), d.sizelabel) d.size = miscwidgets.make_choice(sizes, False, sizes[1]) d.size.connect("changed", lambda x: update()) d.add_field(_("Resize to"), d.size) quality = gtk.HScale(gtk.Adjustment(50, 1, 100, 10, 10)) quality.connect("format-value", lambda s,v: "%i" % v) quality.connect("change-value", set_quality, d) d.add_field(_("Quality"), quality) d.preview = gtk.Image() d.preview.show() sw = gtk.ScrolledWindow() sw.add_with_viewport(d.preview) sw.set_size_request(320,320) d.add_field(_("Preview"), sw, full=True) d.set_size_request(400, 450) d.image = image d.resized = None d.quality = 50 d.update = update d.update() return d