def _build_delete_flag_ui(self, current_user_reviewer, delete_error=False, modify_error=False): if delete_error: self._delete_ui_update('error', current_user_reviewer, 'deleting') elif modify_error: self._delete_ui_update('error', current_user_reviewer, 'modifying') else: m = '<small>%s</small>' if current_user_reviewer: self.edit = Link(m % _('Edit')) self.edit.set_name("subtle-label") self.delete = Link(m % _('Delete')) self.delete.set_name("subtle-label") self.flagbox.pack_start(self.edit, False, False, 0) self.flagbox.pack_start(self.delete, False, False, 0) self.edit.connect('clicked', self._on_modify_clicked) self.delete.connect('clicked', self._on_delete_clicked) else: # Translators: This link is for flagging a review as # inappropriate. To minimize repetition, if at all possible, # keep it to a single word. If your language has an obvious # verb, it won't need a question mark. self.complain = Link(m % _('Inappropriate?')) self.complain.set_name("subtle-label") self.flagbox.pack_start(self.complain, False, False, 0) self.complain.connect('clicked', self._on_report_abuse_clicked) self.flagbox.show_all()
def _build_usefulness_ui(self, current_user_reviewer, useful_total, useful_favorable, useful_votes, usefulness_submit_error=False): if usefulness_submit_error: self._usefulness_ui_update('error', current_user_reviewer, useful_total, useful_favorable) else: already_voted = useful_votes.check_for_usefulness(self.id) #get correct label based on retrieved usefulness totals and # if user is reviewer self.useful = self._get_usefulness_label(current_user_reviewer, useful_total, useful_favorable, already_voted) self.useful.set_use_markup(True) #vertically centre so it lines up with the Yes and No buttons self.useful.set_alignment(0, 0.5) self.useful.show() self.footer.pack_start(self.useful, False, False, 3) # add here, but only populate if its not the own review self.likebox = Gtk.HBox() if already_voted == None and not current_user_reviewer: m = '<small>%s</small>' self.yes_like = Link(m % _('Yes')) self.yes_like.set_name("subtle-label") self.no_like = Link(m % _('No')) self.no_like.set_name("subtle-label") self.yes_like.connect('clicked', self._on_useful_clicked, True) self.no_like.connect('clicked', self._on_useful_clicked, False) self.yes_no_separator = Gtk.Label() self.yes_no_separator.set_name("subtle-label") self.yes_no_separator.set_markup(m % _('/')) self.yes_like.show() self.no_like.show() self.yes_no_separator.show() self.likebox.set_spacing(4) self.likebox.pack_start(self.yes_like, False, False, 0) self.likebox.pack_start(self.yes_no_separator, False, False, 0) self.likebox.pack_start(self.no_like, False, False, 0) self.footer.pack_start(self.likebox, False, False, 0) return
def __init__(self, parent): Gtk.VBox.__init__(self) self.set_spacing(12) self.logged_in_person = get_person_from_config() self._parent = parent # this is a list of review data (softwarecenter.backend.reviews.Review) self.reviews = [] # global review stats, this includes ratings in different languages self.global_review_stats = None # usefulness stuff self.useful_votes = UsefulnessCache() self.logged_in_person = None # add header label label = Gtk.Label() label.set_markup('<big><b>%s</b></big>' % _("Reviews")) label.set_padding(6, 6) label.set_use_markup(True) label.set_alignment(0, 0.5) self.header = Gtk.HBox() self.header.pack_start(label, False, False, 0) # header self.header.set_spacing(StockEms.MEDIUM) # review sort method self.sort_combo = Gtk.ComboBoxText() self._current_sort = 0 for sort_method in ReviewSortMethods.REVIEW_SORT_LIST_ENTRIES: self.sort_combo.append_text(_(sort_method)) self.sort_combo.set_active(self._current_sort) self.sort_combo.connect('changed', self._on_sort_method_changed) self.header.pack_end(self.sort_combo, False, False, 3) # change language self.review_language = Gtk.ComboBox() cell = Gtk.CellRendererText() self.review_language.pack_start(cell, True) self.review_language.add_attribute(cell, "text", COL_LANGNAME) self.review_language_model = Gtk.ListStore(str, str) for lang in get_languages(): self.review_language_model.append((langcode_to_name(lang), lang)) self.review_language_model.append((_('Any language'), 'any')) self.review_language.set_model(self.review_language_model) self.review_language.set_active(0) self.review_language.connect( "changed", self._on_different_review_language_clicked) self.header.pack_end(self.review_language, False, True, 0) self.pack_start(self.header, False, False, 0) self.reviews_info_hbox = Gtk.HBox() self.new_review = Link(_('Write your own review')) self.new_review.connect('clicked', lambda w: self.emit('new-review')) self.reviews_info_hbox.pack_start(self.new_review, False, False, StockEms.SMALL) self.pack_start(self.reviews_info_hbox, True, True, 0) # this is where the reviews end up self.vbox = Gtk.VBox() self.vbox.set_spacing(24) self.pack_end(self.vbox, True, True, 0) # ensure network state updates self.no_network_msg = None watcher = get_network_watcher() watcher.connect("changed", lambda w, s: self._on_network_state_change()) self.show_all()