diff options
author | Anton Khirnov <anton@khirnov.net> | 2021-01-26 18:18:21 +0100 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2021-01-26 18:18:21 +0100 |
commit | 8c7d464d1e31e5994623d0e3d4ad4f8216b6696e (patch) | |
tree | 760461872ab2a897a4fe97c13418adf0cbdfa99c | |
parent | fe1450cba0cc808dd843f327c4383930a78effca (diff) |
widgets/global: move HeadersList to the only place where it is used
-rw-r--r-- | alot/buffers/envelope.py | 45 | ||||
-rw-r--r-- | alot/widgets/globals.py | 43 |
2 files changed, 43 insertions, 45 deletions
diff --git a/alot/buffers/envelope.py b/alot/buffers/envelope.py index 55745ed0..ae13d74f 100644 --- a/alot/buffers/envelope.py +++ b/alot/buffers/envelope.py @@ -6,7 +6,6 @@ import os from .buffer import Buffer from ..settings.const import settings -from ..widgets.globals import HeadersList from ..widgets.globals import AttachmentWidget from ..helper import shorten_author_string @@ -49,6 +48,48 @@ def string_sanitize(string, tab_width=8): return '\n'.join(lines) +class _HeadersList(urwid.WidgetWrap): + """ renders a pile of header values as key/value list """ + + def __init__(self, headerslist, key_attr, value_attr, gaps_attr=None): + """ + :param headerslist: list of key/value pairs to display + :type headerslist: list of (str, str) + :param key_attr: theming attribute to use for keys + :type key_attr: urwid.AttrSpec + :param value_attr: theming attribute to use for values + :type value_attr: urwid.AttrSpec + :param gaps_attr: theming attribute to wrap lines in + :type gaps_attr: urwid.AttrSpec + """ + self.headers = headerslist + self.key_attr = key_attr + self.value_attr = value_attr + pile = urwid.Pile(self._build_lines(headerslist)) + if gaps_attr is None: + gaps_attr = key_attr + pile = urwid.AttrMap(pile, gaps_attr) + urwid.WidgetWrap.__init__(self, pile) + + def __str__(self): + return str(self.headers) + + def _build_lines(self, lines): + max_key_len = 1 + headerlines = [] + # calc max length of key-string + for key, value in lines: + if len(key) > max_key_len: + max_key_len = len(key) + for key, value in lines: + # todo : even/odd + keyw = ('fixed', max_key_len + 1, + urwid.Text((self.key_attr, key))) + valuew = urwid.Text((self.value_attr, value)) + line = urwid.Columns([keyw, valuew]) + headerlines.append(line) + return headerlines + class EnvelopeBuffer(Buffer): """message composition mode""" @@ -115,7 +156,7 @@ class EnvelopeBuffer(Buffer): value_att = settings.get_theming_attribute('envelope', 'header_value') gaps_att = settings.get_theming_attribute('envelope', 'header') - self.header_wgt = HeadersList(lines, key_att, value_att, gaps_att) + self.header_wgt = _HeadersList(lines, key_att, value_att, gaps_att) displayed_widgets.append(self.header_wgt) # display attachments diff --git a/alot/widgets/globals.py b/alot/widgets/globals.py index 387797af..8b9b3065 100644 --- a/alot/widgets/globals.py +++ b/alot/widgets/globals.py @@ -226,49 +226,6 @@ class CompleteEdit(urwid.Edit): return pos -class HeadersList(urwid.WidgetWrap): - """ renders a pile of header values as key/value list """ - - def __init__(self, headerslist, key_attr, value_attr, gaps_attr=None): - """ - :param headerslist: list of key/value pairs to display - :type headerslist: list of (str, str) - :param key_attr: theming attribute to use for keys - :type key_attr: urwid.AttrSpec - :param value_attr: theming attribute to use for values - :type value_attr: urwid.AttrSpec - :param gaps_attr: theming attribute to wrap lines in - :type gaps_attr: urwid.AttrSpec - """ - self.headers = headerslist - self.key_attr = key_attr - self.value_attr = value_attr - pile = urwid.Pile(self._build_lines(headerslist)) - if gaps_attr is None: - gaps_attr = key_attr - pile = urwid.AttrMap(pile, gaps_attr) - urwid.WidgetWrap.__init__(self, pile) - - def __str__(self): - return str(self.headers) - - def _build_lines(self, lines): - max_key_len = 1 - headerlines = [] - # calc max length of key-string - for key, value in lines: - if len(key) > max_key_len: - max_key_len = len(key) - for key, value in lines: - # todo : even/odd - keyw = ('fixed', max_key_len + 1, - urwid.Text((self.key_attr, key))) - valuew = urwid.Text((self.value_attr, value)) - line = urwid.Columns([keyw, valuew]) - headerlines.append(line) - return headerlines - - class TagWidget(urwid.AttrMap): """ text widget that renders a tagstring. |