Exemple #1
0
 def test_only_display_initial_letter_for_maxlength_1(self):
     short = helper.shorten_author_string(self.authors, 1)
     self.assertEqual(short, u"K")
Exemple #2
0
 def test_replace_all_but_first_name_with_ellipses(self):
     short = helper.shorten_author_string(self.authors, 10)
     self.assertEqual(short, u"King, …")
Exemple #3
0
 def test_shorten_first_name_with_ellipses(self):
     short = helper.shorten_author_string(self.authors, 2)
     self.assertEqual(short, u"K…")
Exemple #4
0
 def test_shows_only_first_names_if_they_fit(self):
     short = helper.shorten_author_string(self.authors, 40)
     self.assertEqual(short, u"King, Mucho, Jaime, Flash")
Exemple #5
0
 def test_adds_ellipses_to_long_first_names(self):
     short = helper.shorten_author_string(self.authors, 20)
     self.assertEqual(short, u"King, …, Jai…, Flash")
Exemple #6
0
 def test_only_display_initial_letter_for_maxlength_1(self):
     short = helper.shorten_author_string(self.authors, 1)
     self.assertEqual(short, u"K")
Exemple #7
0
 def test_high_maxlength_keeps_string_intact(self):
     short = helper.shorten_author_string(self.authors, 60)
     self.assertEqual(short, self.authors)
Exemple #8
0
 def test_replace_all_but_first_name_with_ellipses(self):
     short = helper.shorten_author_string(self.authors, 10)
     self.assertEqual(short, u"King, …")
Exemple #9
0
 def test_shorten_first_name_with_ellipses(self):
     short = helper.shorten_author_string(self.authors, 2)
     self.assertEqual(short, u"K…")
Exemple #10
0
 def test_adds_ellipses_to_long_first_names(self):
     short = helper.shorten_author_string(self.authors, 20)
     self.assertEqual(short, u"King, …, Jai…, Flash")
Exemple #11
0
 def test_shows_only_first_names_if_they_fit(self):
     short = helper.shorten_author_string(self.authors, 40)
     self.assertEqual(short, u"King, Mucho, Jaime, Flash")
Exemple #12
0
 def test_high_maxlength_keeps_string_intact(self):
     short = helper.shorten_author_string(self.authors, 60)
     self.assertEqual(short, self.authors)
Exemple #13
0
    def rebuild(self):
        cols = []
        if self.thread:
            newest = self.thread.get_newest_date()
        else:
            newest = None
        if newest == None:
            datestring = ''
        else:
            datestring = settings.represent_datetime(newest)
        datestring = datestring.rjust(self.pretty_datetime_len)
        self.date_w = urwid.AttrMap(urwid.Text(datestring),
                                    self._get_theme('date'))
        cols.append(('fixed', len(datestring), self.date_w))

        if self.thread:
            mailcountstring = "(%d)" % self.thread.get_total_messages()
        else:
            mailcountstring = "(?)"
        self.mailcount_w = urwid.AttrMap(urwid.Text(mailcountstring),
                                         self._get_theme('mailcount'))
        cols.append(('fixed', len(mailcountstring), self.mailcount_w))

        if self.thread:
            self.tag_widgets = [TagWidget(t) for t in self.thread.get_tags()]
        else:
            self.tag_widgets = []
        self.tag_widgets.sort(tag_cmp,
                              lambda tag_widget: tag_widget.translated)
        for tag_widget in self.tag_widgets:
            if not tag_widget.hidden:
                cols.append(('fixed', tag_widget.width(), tag_widget))

        if self.thread:
            authors = self.thread.get_authors_string() or '(None)'
        else:
            authors = '(None)'
        maxlength = settings.get('authors_maxlength')
        authorsstring = shorten_author_string(authors, maxlength)
        self.authors_w = urwid.AttrMap(urwid.Text(authorsstring),
                                       self._get_theme('authors'))
        cols.append(('fixed', len(authorsstring), self.authors_w))

        if self.thread:
            subjectstring = self.thread.get_subject() or ''
        else:
            subjectstring = ''
        # sanitize subject string:
        subjectstring = subjectstring.replace('\n', ' ')
        subjectstring = subjectstring.replace('\r', '')
        subjectstring = subjectstring.strip()

        self.subject_w = urwid.AttrMap(urwid.Text(subjectstring, wrap='clip'),
                                       self._get_theme('subject'))
        if subjectstring:
            cols.append(('weight', 2, self.subject_w))

        if self.display_content:
            if self.thread:
                msgs = self.thread.get_messages().keys()
            else:
                msgs = []
            # sort the most recent messages first
            msgs.sort(key=lambda msg: msg.get_date(), reverse=True)
            lastcontent = ' '.join([m.get_text_content() for m in msgs])
            contentstring = lastcontent.replace('\n', ' ').strip()
            self.content_w = urwid.AttrMap(
                urwid.Text(contentstring, wrap='clip'),
                self._get_theme('content'))
            cols.append(self.content_w)

        self.columns = urwid.Columns(cols, dividechars=1)
        self.original_widget = self.columns
Exemple #14
0
    def rebuild(self):
        cols = []
        if self.thread:
            newest = self.thread.get_newest_date()
        else:
            newest = None
        if newest == None:
            datestring = ''
        else:
            formatstring = settings.get('timestamp_format')
            if formatstring is None:
                datestring = pretty_datetime(newest)
            else:
                datestring = newest.strftime(formatstring)
        datestring = datestring.rjust(self.pretty_datetime_len)
        self.date_w = urwid.AttrMap(urwid.Text(datestring),
                                    self._get_theme('date'))
        cols.append(('fixed', len(datestring), self.date_w))

        if self.thread:
            mailcountstring = "(%d)" % self.thread.get_total_messages()
        else:
            mailcountstring = "(?)"
        self.mailcount_w = urwid.AttrMap(urwid.Text(mailcountstring),
                                         self._get_theme('mailcount'))
        cols.append(('fixed', len(mailcountstring), self.mailcount_w))

        if self.thread:
            self.tag_widgets = [TagWidget(t)
                                for t in self.thread.get_tags()]
        else:
            self.tag_widgets = []
        self.tag_widgets.sort(tag_cmp,
                              lambda tag_widget: tag_widget.translated)
        for tag_widget in self.tag_widgets:
            if not tag_widget.hidden:
                cols.append(('fixed', tag_widget.width(), tag_widget))

        if self.thread:
            authors = self.thread.get_authors_string() or '(None)'
        else:
            authors = '(None)'
        maxlength = settings.get('authors_maxlength')
        authorsstring = shorten_author_string(authors, maxlength)
        self.authors_w = urwid.AttrMap(urwid.Text(authorsstring),
                                       self._get_theme('authors'))
        cols.append(('fixed', len(authorsstring), self.authors_w))

        if self.thread:
            subjectstring = self.thread.get_subject() or ''
        else:
            subjectstring = ''
        # sanitize subject string:
        subjectstring = subjectstring.replace('\n', ' ')
        subjectstring = subjectstring.replace('\r', '')
        subjectstring = subjectstring.strip()

        self.subject_w = urwid.AttrMap(urwid.Text(subjectstring, wrap='clip'),
                                       self._get_theme('subject'))
        if subjectstring:
            cols.append(('weight', 2, self.subject_w))

        if self.display_content:
            if self.thread:
                msgs = self.thread.get_messages().keys()
            else:
                msgs = []
            msgs.sort()
            lastcontent = ' '.join([m.get_text_content() for m in msgs])
            contentstring = lastcontent.replace('\n', ' ').strip()
            self.content_w = urwid.AttrMap(urwid.Text(
                                                   contentstring,
                                                   wrap='clip'),
                                                   self._get_theme('content'))
            cols.append(self.content_w)

        self.columns = urwid.Columns(cols, dividechars=1)
        self.original_widget = self.columns