def populate_encodingsmenu(encodings_submenu, get_current_encoding, set_encoding, encodings, server_encodings): encodings_submenu.get_current_encoding = get_current_encoding encodings_submenu.set_encoding = set_encoding encodings_submenu.encodings = encodings encodings_submenu.server_encodings = server_encodings encodings_submenu.index_to_encoding = {} encodings_submenu.encoding_to_index = {} NAME_TO_ENCODING = {} for i, encoding in enumerate(encodings): name = ENCODINGS_TO_NAME.get(encoding, encoding) descr = ENCODINGS_HELP.get(encoding) NAME_TO_ENCODING[name] = encoding encoding_item = CheckMenuItem(name) if descr: if encoding not in server_encodings: descr += "\n(not available on this server)" encoding_item.set_tooltip_text(descr) def encoding_changed(item): ensure_item_selected(encodings_submenu, item) enc = NAME_TO_ENCODING.get(item.get_label()) log("encoding_changed(%s) enc=%s, current=%s", item, enc, encodings_submenu.get_current_encoding()) if enc is not None and encodings_submenu.get_current_encoding()!=enc: encodings_submenu.set_encoding(enc) log("make_encodingsmenu(..) encoding=%s, current=%s, active=%s", encoding, get_current_encoding(), encoding==get_current_encoding()) encoding_item.set_active(encoding==get_current_encoding()) sensitive = encoding in server_encodings if not sensitive and HIDE_DISABLED_MENU_ENTRIES: continue set_sensitive(encoding_item, encoding in server_encodings) encoding_item.set_draw_as_radio(True) encoding_item.connect("toggled", encoding_changed) encodings_submenu.append(encoding_item) encodings_submenu.index_to_encoding[i] = encoding encodings_submenu.encoding_to_index[encoding] = i encodings_submenu.show_all()
def populate_menu(options, value, set_fn): found_match = False items = {} if value and value>0 and value not in options: options[value] = "%s%%" % value for s in sorted(options.keys()): t = options.get(s) qi = CheckMenuItem(t) qi.set_draw_as_radio(True) candidate_match = s>=max(0, value) qi.set_active(not found_match and candidate_match) found_match |= candidate_match qi.connect('activate', set_fn, submenu) if s>0: qi.set_tooltip_text("%s%%" % s) submenu.append(qi) items[s] = qi return items