#!/usr/bin/python """ Written by Igor Pashev The author has placed this work in the Public Domain, thereby relinquishing all copyrights. Everyone is free to use, modify, republish, sell or give away this work without prior consent from anybody. """ from snack import * import math class ProgressMessage(object): _text = None @property def text(self): return self._text @text.setter def text(self, text): self._text = text self._textbox.setText(self._text) self._refresh() def _refresh(self): self._form.draw() self._screen.refresh() def __init__(self, screen, width=60, title=' ', text=' '): self._screen = screen self._textbox = TextboxReflowed(width, text) self._grid = Grid(1, 1) self._grid.setField(self._textbox, 0, 0) self._screen.gridWrappedWindow(self._grid, title) self._form = Form() self._form.add(self._textbox) self._refresh() def __del__(self): self._screen.popWindow() class ProgressBar(object): _progress = 0 _top = 0 _text = None _textbox = None _screen = None _form = None _scale = None _grid = None _allow_back = False @property def text(self): return self._text @text.setter def text(self, text): self._text = text self._textbox.setText(self._text) self._refresh() @property def progress(self): return self._progress @text.setter def progress(self, i): if type(i) == 'str': i = float(i) if type(i) == 'float': i = math.ceil(i) if i > self._top: i = self._top i = int(i) if i > self._progress or self._allow_back: self._progress = int(i) self._scale.set(self._progress) self._refresh() def advance(self, i=1): self.progress = self._progress + i def _refresh(self): self._form.draw() self._screen.refresh() def __init__(self, screen, width=60, title='', text=' ', top=100, allow_back=False): self._allow_back = allow_back self._screen = screen self._top = top self._textbox = TextboxReflowed(width, text) self._scale = Scale(width, self._top) self._scale.set(0) self._grid = Grid(1, 2) self._grid.setField(self._textbox, 0, 0) self._grid.setField(self._scale, 0, 1) self._screen.gridWrappedWindow(self._grid, title) self._form = Form() self._form.add(self._textbox) self._form.add(self._scale) self._refresh() def __del__(self): self._screen.popWindow()