Mercurial > cpython-lru_cache-weakref
diff Lib/stdwin/StripChart.py @ 55:7a01dbcee9bc legacy-trunk
Initial revision
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Wed, 31 Oct 1990 11:24:22 +0000 |
| parents | |
| children | 61311506f2cd |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/stdwin/StripChart.py Wed Oct 31 11:24:22 1990 +0000 @@ -0,0 +1,67 @@ +# Module 'StripChart' + + +import rect +from Buttons import * +from Resize import * + + +class StripChart() = LabelAppearance(), NoReactivity(), NoResize(): + # + def define(self, (win, bounds, scale)): + self.init_appearance(win, bounds) + self.init_reactivity() + self.init_resize() + self.ydata = [] + self.scale = scale + self.resetbounds() + return self + # + def setbounds(self, bounds): + LabelAppearance.setbounds(self, bounds) + self.resetbounds() + # + def resetbounds(self): + (left, top), (right, bottom) = self.bounds + self.width = right-left + self.height = bottom-top + excess = len(self.ydata) - self.width + if excess > 0: + del self.ydata[:excess] + elif excess < 0: + while len(self.ydata) < self.width: + self.ydata.insert(0, 0) + # + def append(self, y): + self.ydata.append(y) + excess = len(self.ydata) - self.width + if excess > 0: + del self.ydata[:excess] + if not self.limbo: + self.win.scroll(self.bounds, (-excess, 0)) + if not self.limbo: + (left, top), (right, bottom) = self.bounds + i = len(self.ydata) + area = (left+i-1, top), (left+i, bottom) + self.draw(self.win.begindrawing(), area) + # + def draw(self, (d, area)): + self.limbo = 0 + area = rect.intersect(area, self.bounds) + if area = rect.empty: + return + d.cliprect(area) + d.erase(self.bounds) + (a_left, a_top), (a_right, a_bottom) = area + (left, top), (right, bottom) = self.bounds + height = bottom - top + i1 = a_left - left + i2 = a_right - left + for i in range(max(0, i1), min(len(self.ydata), i2)): + split = bottom-self.ydata[i]*height/self.scale + d.paint((left+i, split), (left+i+1, bottom)) + if not self.enabled: + self.flipenable(d) + if self.hilited: + self.fliphilite(d) + d.noclip()
