From ada0cc03f0c47bd9704ea7093f3471852a42581b Mon Sep 17 00:00:00 2001 From: Frank Sievertsen Date: Thu, 6 Dec 2012 08:45:24 +0100 Subject: [PATCH] ProgressBar -> generator --- progress.py | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/progress.py b/progress.py index ce7e1f0..1e561fc 100644 --- a/progress.py +++ b/progress.py @@ -3,7 +3,15 @@ class ProgressBar(object): """Just a Progress Bar""" - def __init__(self): + + def __init__(self, x_res=80, y_res=31): + self.pbar = self.draw_bar() + self.x_res = x_res + self.y_res = y_res + self.len = (x_res + 1) * y_res + self.pos = 0 + + def draw_bar(self): def m(c): z = c for i in xrange(200): @@ -11,28 +19,26 @@ def m(c): if abs(z.real) > 3: return i return 0 - c1 = complex(-2.2,-0.9) + c1 = complex(-2.2, -0.9) c2 = complex(0.6, 0.9) - out = [] - x_res, y_res = 80, 31 + x_res, y_res = self.x_res, self.y_res for i in xrange(y_res): y = c1.imag + i * (c2.imag - c1.imag) / float(y_res - 1) for j in xrange(x_res): x = c1.real + j * (c2.real - c1.real) / float(x_res - 1) - v = m(complex(x,y)) + v = m(complex(x, y)) if v: v = v % 20 - out.append(chr(ord("A")+v)) + yield chr(ord("A") + v) else: - out.append(".") - out.append(os.linesep) - self.bar = "".join(out) - self.pos = 0 + yield "." + yield os.linesep def progress(self, v): v = min(v, 1) - new_pos = int(len(self.bar) * v) - sys.stdout.write(self.bar[self.pos:new_pos]) + new_pos = int(self.len * v) + sys.stdout.write("".join(self.pbar.next() + for i in xrange(new_pos - self.pos))) sys.stdout.flush() self.pos = new_pos