Add gradient to email_imap_alert segment

Colors probably need to be revised

Fixes #301
This commit is contained in:
ZyX 2013-03-24 01:43:37 +04:00
parent 83517f65b9
commit 004e6a8b46
3 changed files with 22 additions and 5 deletions

View File

@ -7,6 +7,7 @@
"time": { "fg": "gray10", "bg": "gray2", "attr": ["bold"] },
"time:divider": { "fg": "gray5", "bg": "gray2" },
"email_alert": { "fg": "white", "bg": "brightred", "attr": ["bold"] },
"email_alert_gradient": { "fg": "white", "bg": "yellow_orange_red", "attr": ["bold"] },
"hostname": { "fg": "black", "bg": "gray10", "attr": ["bold"] },
"weather": { "fg": "gray8", "bg": "gray0" },
"weather_temp_gradient": { "fg": "blue_red", "bg": "gray0" },

View File

@ -7,6 +7,7 @@
"time": { "fg": "gray10", "bg": "gray2", "attr": ["bold"] },
"time:divider": { "fg": "gray5", "bg": "gray2" },
"email_alert": { "fg": "white", "bg": "brightred", "attr": ["bold"] },
"email_alert_gradient": { "fg": "white", "bg": "yellow_orange_red", "attr": ["bold"] },
"hostname": { "fg": "black", "bg": "gray10", "attr": ["bold"] },
"weather": { "fg": "gray8", "bg": "gray0" },
"weather_temp_gradient": { "fg": "blue_red", "bg": "gray0" },

View File

@ -693,11 +693,22 @@ class EmailIMAPSegment(KwThreadedSegment):
return None
except imaplib.IMAP4.error as e:
unread_count = str(e)
return unread_count
@staticmethod
def render_one(unread_count, max_msgs=None, **kwargs):
if not unread_count:
return None
elif type(unread_count) != int or not max_msgs:
return [{
'highlight_group': 'email_alert',
'contents': str(unread_count),
'highlight_group': 'email_alert',
}]
else:
return [{
'contents': str(unread_count),
'highlight_group': ['email_alert_gradient', 'email_alert'],
'gradient_level': unread_count * 100.0 / max_msgs,
}]
@ -714,8 +725,12 @@ email_imap_alert = with_docstring(EmailIMAPSegment(),
e-mail server port
:param str folder:
folder to check for e-mails
:param int max_msgs:
Maximum number of messages. If there are more messages then max_msgs then it
will use gradient level equal to 100, otherwise gradient level is equal to
``100 * msgs_num / max_msgs``. If not present gradient is not computed.
Highlight groups used: ``email_alert``.
Highlight groups used: ``email_alert_gradient`` (gradient), ``email_alert``.
''')