summaryrefslogtreecommitdiffstats
path: root/glances/outputs/glances_bars.py
diff options
context:
space:
mode:
Diffstat (limited to 'glances/outputs/glances_bars.py')
-rw-r--r--glances/outputs/glances_bars.py43
1 files changed, 29 insertions, 14 deletions
diff --git a/glances/outputs/glances_bars.py b/glances/outputs/glances_bars.py
index 75899480..171099bf 100644
--- a/glances/outputs/glances_bars.py
+++ b/glances/outputs/glances_bars.py
@@ -15,7 +15,6 @@ from math import modf
class Bar(object):
-
"""Manage bar (progression or status).
import sys
@@ -28,28 +27,36 @@ class Bar(object):
sys.stdout.flush()
"""
- def __init__(self, size, percentage_char='|', empty_char=' ', pre_char='[', post_char=']', with_text=True):
+ def __init__(self, size,
+ bar_char='|',
+ empty_char=' ',
+ pre_char='[', post_char=']',
+ unit_char='%',
+ display_value=True,
+ min_value=0, max_value=100):
# Build curses_bars
- self.__curses_bars = [empty_char] * 5 + [percentage_char] * 5
+ self.__curses_bars = [empty_char] * 5 + [bar_char] * 5
# Bar size
self.__size = size
# Bar current percent
self.__percent = 0
# Min and max value
- self.min_value = 0
- self.max_value = 100
+ self.min_value = min_value
+ self.max_value = max_value
# Char used for the decoration
self.__pre_char = pre_char
self.__post_char = post_char
self.__empty_char = empty_char
- self.__with_text = with_text
+ self.__unit_char = unit_char
+ # Value should be displayed ?
+ self.__display_value = display_value
@property
def size(self, with_decoration=False):
# Return the bar size, with or without decoration
if with_decoration:
return self.__size
- if self.__with_text:
+ if self.__display_value:
return self.__size - 6
@property
@@ -58,10 +65,8 @@ class Bar(object):
@percent.setter
def percent(self, value):
- if value <= self.min_value:
+ if value < self.min_value:
value = self.min_value
- if value >= self.max_value:
- value = self.max_value
self.__percent = value
@property
@@ -72,16 +77,26 @@ class Bar(object):
def post_char(self):
return self.__post_char
- def get(self):
+ def get(self, overwrite=''):
"""Return the bars."""
- frac, whole = modf(self.size * self.percent / 100.0)
+ value = self.max_value if self.percent > self.max_value else self.percent
+ frac, whole = modf(self.size * value / 100.0)
ret = self.__curses_bars[8] * int(whole)
if frac > 0:
ret += self.__curses_bars[int(frac * 8)]
whole += 1
ret += self.__empty_char * int(self.size - whole)
- if self.__with_text:
- ret = '{}{:5.1f}%'.format(ret, self.percent)
+ if self.__display_value:
+ if self.percent > self.max_value:
+ ret = '{}>{:4.0f}{}'.format(ret,
+ self.max_value,
+ self.__unit_char)
+ else:
+ ret = '{}{:5.1f}{}'.format(ret,
+ self.percent,
+ self.__unit_char)
+ if overwrite and len(overwrite) < len(ret) - 6:
+ ret = overwrite + ret[len(overwrite):]
return ret
def __str__(self):