def populate_sfw_menu(self): try: self.rating_items = [] sfw_ratings = Smart.get_all_sfw_ratings() def _gui_update(sfw_ratings): try: def _add_menuitem(rating): menuitem = Gtk.ImageMenuItem(_(rating['label_long'])) menuitem.set_visible(True) def _rate(*args, **kwargs): self.parent.report_sfw_rating(file=None, rating=rating['rating']) menuitem.connect("activate", _rate) try: menuitem.set_always_show_image(True) image = Gtk.Image() image.set_from_file(varietyconfig.get_data_file("media", "sfw-%s.svg" % rating['rating'])) menuitem.set_image(image) except: logger.exception(lambda: "Could not set image to NSFW menuitem:") self.sfw_menu.append(menuitem) self.rating_items.append(menuitem) map(_add_menuitem, reversed(sfw_ratings)) separator = Gtk.SeparatorMenuItem.new() separator.set_visible(True) self.sfw_menu.append(separator) self.safe_mode = Gtk.CheckMenuItem(_("_Safe mode")) self.safe_mode.set_visible(True) self.safe_mode.set_active(self.parent.options.safe_mode) self.safe_mode.set_use_underline(True) self.safe_mode_handler_id = self.safe_mode.connect("toggled", self.parent.on_safe_mode_toggled) self.sfw_menu.append(self.safe_mode) self.sfw_menu_item.set_sensitive(True) self.parent.update_indicator() except Exception: logger.exception(lambda: 'Oops, could not populate NSFW menu:') Util.add_mainloop_task(_gui_update, sfw_ratings) except Exception: logger.exception(lambda: 'Oops, could not populate NSFW menu:')