1#!/usr/bin/env python
2"""
3A very simple progress bar which keep track of the progress as we consume an
4iterator.
5"""
6from __future__ import unicode_literals
7
8import time
9
10from prompt_toolkit.formatted_text import HTML
11from prompt_toolkit.shortcuts import ProgressBar
12from prompt_toolkit.shortcuts.progress_bar import formatters
13from prompt_toolkit.styles import Style
14
15style = Style.from_dict({
16    'progressbar title': '#0000ff',
17    'item-title': '#ff4400 underline',
18    'percentage': '#00ff00',
19    'bar-a': 'bg:#00ff00 #004400',
20    'bar-b': 'bg:#00ff00 #000000',
21    'bar-c': 'bg:#000000 #000000',
22    'tildes': '#444488',
23    'time-left': 'bg:#88ff88 #ffffff',
24    'spinning-wheel': 'bg:#ffff00 #000000',
25})
26
27
28def main():
29    custom_formatters = [
30        formatters.Label(),
31        formatters.Text(' '),
32        formatters.SpinningWheel(),
33        formatters.Text(' '),
34        formatters.Text(HTML('<tildes>~~~</tildes>')),
35        formatters.Bar(sym_a='#', sym_b='#', sym_c='.'),
36        formatters.Text(' left: '),
37        formatters.TimeLeft(),
38    ]
39    with ProgressBar(title='Progress bar example with custom formatter.',
40                     formatters=custom_formatters, style=style) as pb:
41
42        for i in pb(range(20), label='Downloading...'):
43            time.sleep(1)
44
45
46if __name__ == '__main__':
47    main()
48