diff options
author | pazz <patricktotzke@gmail.com> | 2011-07-31 18:32:59 +0100 |
---|---|---|
committer | pazz <patricktotzke@gmail.com> | 2011-07-31 18:32:59 +0100 |
commit | f6bc488a197709d476b057ace3b1149d79b5a873 (patch) | |
tree | 7f5afc7e4d4d64025dd19172c4bf4995d94221f3 | |
parent | 506a3ce7d782a177b9946235555f877cbd915e74 (diff) |
notification priorities. issue #39
-rw-r--r-- | alot/settings.py | 60 | ||||
-rw-r--r-- | alot/ui.py | 39 |
2 files changed, 57 insertions, 42 deletions
diff --git a/alot/settings.py b/alot/settings.py index 7542b075..65e4a3a1 100644 --- a/alot/settings.py +++ b/alot/settings.py @@ -56,16 +56,20 @@ DEFAULTS = { 'message_body_fg': 'light gray', 'message_header_bg': 'dark gray', 'message_header_fg': 'white', - 'message_header_key_fg': 'white', 'message_header_key_bg': 'dark gray', - 'message_header_value_fg': 'light gray', + 'message_header_key_fg': 'white', 'message_header_value_bg': 'dark gray', + 'message_header_value_fg': 'light gray', 'messagesummary_even_bg': 'light blue', 'messagesummary_even_fg': 'white', 'messagesummary_focus_bg': 'dark cyan', 'messagesummary_focus_fg': 'white', 'messagesummary_odd_bg': 'dark blue', 'messagesummary_odd_fg': 'white', + 'notify_error_bg': 'dark red', + 'notify_error_fg': 'white', + 'notify_normal_bg': 'default', + 'notify_normal_fg': 'default', 'prompt_bg': 'black', 'prompt_fg': 'light gray', 'taglist_focus_bg': 'dark gray', @@ -100,35 +104,37 @@ DEFAULTS = { 'threadline_tags_focus_fg': 'yellow,bold', }, 'mono-theme': { - 'header': 'standout', + 'bufferlist_focus': 'standout', + 'bufferlist_results_even': 'default', + 'bufferlist_results_odd': 'default', 'footer': 'standout', + 'header': 'standout', + 'message_attachment': 'default', + 'message_body': 'default', + 'message_header': 'default', + 'message_header_key': 'default', + 'message_header_value': 'default', + 'messagesummary_even': '', + 'messagesummary_focus': 'standout', + 'messagesummary_odd': '', + 'notify_error': 'standout', + 'notify_normal': 'default', 'prompt': '', + 'taglist_focus': 'standout', + 'taglist_tag': 'default', 'threadline': 'default', - 'threadline_date': 'default', - 'threadline_mailcount': 'default', - 'threadline_tags': 'bold', 'threadline_authors': 'default,underline', - 'threadline_subject': 'default', + 'threadline_authors_focus': 'standout', 'threadline_content': 'default', - 'threadline_focus': 'standout', + 'threadline_date': 'default', 'threadline_date_focus': 'standout', + 'threadline_focus': 'standout', + 'threadline_mailcount': 'default', 'threadline_mailcount_focus': 'standout', - 'threadline_tags_focus': 'standout', - 'threadline_authors_focus': 'standout', + 'threadline_subject': 'default', 'threadline_subject_focus': 'standout', - 'messagesummary_even': '', - 'messagesummary_odd': '', - 'messagesummary_focus': 'standout', - 'message_attachment': 'default', - 'message_header': 'default', - 'message_header_key': 'default', - 'message_header_value': 'default', - 'message_body': 'default', - 'bufferlist_results_even': 'default', - 'bufferlist_results_odd': 'default', - 'bufferlist_focus': 'standout', - 'taglist_tag': 'default', - 'taglist_focus': 'standout', + 'threadline_tags': 'bold', + 'threadline_tags_focus': 'standout', }, 'highcolour-theme': { 'bufferlist_focus_bg': 'g38', @@ -147,16 +153,20 @@ DEFAULTS = { 'message_body_fg': 'light gray', 'message_header_bg': 'dark gray', 'message_header_fg': 'white', - 'message_header_key_fg': 'white', 'message_header_key_bg': 'dark gray', - 'message_header_value_fg': 'light gray', + 'message_header_key_fg': 'white', 'message_header_value_bg': 'dark gray', + 'message_header_value_fg': 'light gray', 'messagesummary_even_bg': '#068', 'messagesummary_even_fg': 'white', 'messagesummary_focus_bg': 'g58', 'messagesummary_focus_fg': '#ff8', 'messagesummary_odd_bg': '#006', 'messagesummary_odd_fg': 'white', + 'notify_error_bg': 'dark red', + 'notify_error_fg': 'white', + 'notify_normal_bg': 'default', + 'notify_normal_fg': 'default', 'prompt_bg': 'default', 'prompt_fg': 'light gray', 'taglist_focus_bg': 'g38', @@ -51,7 +51,7 @@ class UI: self.show_statusbar = config.getboolean('general', 'show_statusbar') self.show_notificationbar = config.getboolean('general', 'show_notificationbar') - self.notificationbar = urwid.Text(' ') + self.notificationbar = None # urwid.Text(' ') self.mode = '' self.logger.debug('setup bindings') @@ -163,21 +163,28 @@ class UI: def get_buffers_of_type(self, t): return filter(lambda x: isinstance(x, t), self.buffers) - def notify(self, statusmessage): - self.notificationbar.set_text(statusmessage) - if not self.show_notificationbar: - if not self.show_statusbar: - self.mainframe.set_footer(self.notificationbar) - else: - pile = self.mainframe.get_footer() - pile.widget_list.append(self.notificationbar) - self.mainframe.set_footer(urwid.Pile(pile.widget_list)) + def notify(self, message, priority='normal', timeout=0): + myline = urwid.Text(('notify_' + priority, message)) + footer = self.mainframe.get_footer() + if not self.notificationbar: + self.notificationbar = urwid.Pile([myline]) + else: + newpile = self.notificationbar.widget_list + [myline] + self.notificationbar = urwid.Pile(newpile) def clear_notify(*args): - self.notificationbar.set_text(' ') + footer = self.mainframe.get_footer() + if len(self.notificationbar.widget_list) == 1: + self.notificationbar = None + else: + newpile = self.notificationbar.widget_list + newpile.remove(myline) + self.notificationbar = urwid.Pile(newpile) self.update() - secs = config.getint('general', 'notify_timeout') - self.mainloop.set_alarm_in(secs, clear_notify) + if not timeout: + timeout = config.getint('general', 'notify_timeout') + self.mainloop.set_alarm_in(timeout, clear_notify) + self.update() def update(self): """ @@ -193,12 +200,10 @@ class UI: #footer lines = [] + if self.notificationbar: # .get_text()[0] != ' ': + lines.append(self.notificationbar) if self.show_statusbar: lines.append(self.build_statusbar()) - if self.notificationbar.get_text()[0] != ' ': - lines.append(self.notificationbar) - elif self.show_notificationbar: - lines.append(urwid.Text(' ')) if lines: self.mainframe.set_footer(urwid.Pile(lines)) |