Beispiel #1
0
 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()
Beispiel #2
0
 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
Beispiel #3
0
    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()