diff options
Diffstat (limited to 'examples3/progress.py')
-rwxr-xr-x | examples3/progress.py | 281 |
1 files changed, 0 insertions, 281 deletions
diff --git a/examples3/progress.py b/examples3/progress.py deleted file mode 100755 index 3ebdd12..0000000 --- a/examples3/progress.py +++ /dev/null @@ -1,281 +0,0 @@ -#!/usr/bin/env python - -#/**************************************************************************** -#** $Id: progress.py 3.3.7 edited Aug 31 2005 $ -#** -#** Copyright (C) 1992-2005 Trolltech AS. All rights reserved. -#** -#** This file is part of an example program for TQt. This example -#** program may be used, distributed and modified without limitation. -#** -#** Converted to PyTQt3 by Hans-Peter Jansen <[email protected]> -#** -#*****************************************************************************/ - -import sys -from python_tqt.qt import * -from random import randint - -class AnimatedThingy(TQLabel): - def __init__(self, parent, s): - TQLabel.__init__(self, parent) - self.label = TQString(s) - self.setEraseColor(TQt.white) - self.label.append("\n... and wasting CPU\nwith this animation!\n") - self.step = 0 - self.nqix = 10 - self.stepoff = 2 - self.stepmax = 7 - self.lwidth = 2 - self.tdelay = 100 - self.ox, self.oy = [], [] - for i in range(self.nqix): - self.ox.append((0, 0)) - self.oy.append((0, 0)) - self.x0, self.y0, self.x1, self.y1 = 0, 0, 0, 0 - self.dx0 = randint(0, self.stepmax) + self.stepoff - self.dy0 = randint(0, self.stepmax) + self.stepoff - self.dx1 = randint(0, self.stepmax) + self.stepoff - self.dy1 = randint(0, self.stepmax) + self.stepoff - - def show(self): - if not self.isVisible(): - self.startTimer(self.tdelay) - TQWidget.show(self) - - def hide(self): - TQWidget.hide(self) - self.killTimers() - - def sizeHint(self): - return TQSize(120, 100) - - def timerEvent(self, e): - p, pn = self._painter() - pn.setColor(self.eraseColor()) - p.setPen(pn) - self.step = step = (self.step + 1) % self.nqix - # erase line - p.drawLine(self.ox[step][0], self.oy[step][0], - self.ox[step][1], self.oy[step][1]) - # calc new line coordinates - ww, wh = self.width(), self.height() - self.x0, self.dx0 = self._inc(self.x0, self.dx0, ww) - self.y0, self.dy0 = self._inc(self.y0, self.dy0, wh) - self.x1, self.dx1 = self._inc(self.x1, self.dx1, ww) - self.y1, self.dy1 = self._inc(self.y1, self.dy1, wh) - self.ox[step] = (self.x0, self.x1) - self.oy[step] = (self.y0, self.y1) - self._drawqix(p, pn, step) - self._drawtxt(p) - - def paintEvent(self, event): - p, pn = self._painter() - p.setClipRect(event.rect()) - for i in range(self.nqix): - self._drawqix(p, pn, i) - self._drawtxt(p) - - def _painter(self): - p = TQPainter(self) - # we need to create a new pen from p.pen() with TQPen() in order - # to make it fully functional (changes are discarded otherwise) - pn = TQPen(p.pen()) - pn.setWidth(self.lwidth) - p.setPen(pn) - return p, pn - - def _drawqix(self, p, pn, step): - # rainbow effect - pn.setColor(TQColor(int((step * 255)/self.nqix), 255, 255, TQColor.Hsv)) - p.setPen(pn) - p.drawLine(self.ox[step][0], self.oy[step][0], - self.ox[step][1], self.oy[step][1]) - - def _drawtxt(self, p): - p.setPen(self.colorGroup().text()) - p.drawText(self.rect(), TQt.AlignCenter, self.label) - - def _inc(self, x, dx, b): - x += dx - if x < 0: - x = 0 - dx = randint(0, self.stepmax) + self.stepoff; - elif x >= b: - x = b - 1 - dx = -(randint(0, self.stepmax) + self.stepoff) - return x, dx - - -class CPUWaster(TQWidget): - def __init__(self): - TQWidget.__init__(self) - self.first_draw_item = 1000 - self.last_draw_item = 1006 - self.rects = 0 - self.timer_driven = 0 - self.default_label = 0 - self.got_stop = False - self.pb = None # non modal progress dialog - self.menubar = menubar = TQMenuBar(self, "menu") - self.file_ = file_ = TQPopupMenu() - menubar.insertItem("&File", file_) - for i in range(self.first_draw_item, self.last_draw_item + 1): - file_.insertItem(self.drawItemText(i), i) - file_.setAccel(TQKeySequence( - "Ctrl+%s" % (i - self.first_draw_item)), i) - self.connect(menubar, SIGNAL("activated(int)"), self.doMenuItem) - file_.insertSeparator() - file_.insertItem("Quit", tqApp, SLOT("quit()"), TQKeySequence("Ctrl+Q")) - self.options = options = TQPopupMenu() - menubar.insertItem("&Options", options) - self.ld_id = options.insertItem("Loop driven", self.loopDriven, - TQKeySequence("Alt+L")) - self.td_id = options.insertItem("Timer driven", self.timerDriven, - TQKeySequence("Alt+T")) - options.insertSeparator() - self.dl_id = options.insertItem("Default label", self.defaultLabel, - TQKeySequence("Alt+D")) - self.cl_id = options.insertItem("Custom label", self.customLabel, - TQKeySequence("Alt+C")) - options.insertSeparator() - self.md_id = options.insertItem("No minimum duration", - self.toggleMinimumDuration, - TQKeySequence("Alt+M")) - options.setCheckable(True) - # default option settings - self.timerDriven() - self.customLabel() - self.toggleMinimumDuration() - self.resize(400, 300) - self.setEraseColor(TQt.black) - - def drawItemRects(self, id_): - r = 100 - for n in range(id_ - self.first_draw_item): - if not n % 3: - r *= 4 - else: - r *= 5 - return r - - def drawItemText(self, id_): - return TQString("%d Rectangles" % self.drawItemRects(id_)) - - def enableDrawingItems(self, yes): - for i in range(self.first_draw_item, self.last_draw_item + 1): - self.menubar.setItemEnabled(i, yes) - - # slots - def doMenuItem(self, id_): - if id_ >= self.first_draw_item and id_ <= self.last_draw_item: - self.draw(self.drawItemRects(id_)) - - def timerDriven(self): - self.timer_driven = True - self.options.setItemChecked(self.td_id, True) - self.options.setItemChecked(self.ld_id, False) - - def loopDriven(self): - self.timer_driven = False - self.options.setItemChecked(self.ld_id, True) - self.options.setItemChecked(self.td_id, False) - - def defaultLabel(self): - self.default_label = True - self.options.setItemChecked(self.dl_id, True) - self.options.setItemChecked(self.cl_id, False) - - def customLabel(self): - self.default_label = False - self.options.setItemChecked(self.dl_id, False) - self.options.setItemChecked(self.cl_id, True) - - def toggleMinimumDuration(self): - self.options.setItemChecked(self.md_id, - not self.options.isItemChecked(self.md_id)) - - def stopDrawing(self): - self.got_stop = True - - def newProgressDialog(self, label, steps, modal): - d = TQProgressDialog(label, "Cancel", steps, self, "progress", modal) - if self.options.isItemChecked(self.md_id): - d.setMinimumDuration(0) - if not self.default_label: - d.setLabel(AnimatedThingy(d, label)) - d.setCaption("Please Wait") - return d - - def draw(self, n): - if self.timer_driven: - if self.pb: - tqWarning("This cannot happen!") - return - - self.rects = n - self.pb = self.newProgressDialog("Drawing rectangles.\n" - "Using timer event.", n, False) - self.connect(self.pb, SIGNAL("cancelled()"), self.stopDrawing) - self.enableDrawingItems(False) - self.startTimer(0) - self.got_stop = False - else: # loop driven with modal progress dialog - lpb = self.newProgressDialog("Drawing rectangles.\n" - "Using loop.", n, True) - p = TQPainter(self) - for i in range(n): - lpb.setProgress(i) - if lpb.wasCancelled(): - break - self._draw(p) - self._clear(p) - lpb.cancel() - del lpb - - def timerEvent(self, e): - if not self.got_stop: - self.pb.setProgress(self.pb.totalSteps() - self.rects) - self.rects -= 1 - p = TQPainter(self) - self._draw(p) - - if not self.rects or self.got_stop: - if not self.got_stop: - self.pb.setProgress(self.pb.totalSteps()) - self._clear(p) - self.enableDrawingItems(True) - self.killTimers() - self.pb.cancel() - del self.pb - self.pb = None - - def _draw(self, p): - ww = self.width() - wh = self.height() - if ww > 8 and wh > 8: - c = TQColor(randint(0, 255), randint(0, 255), randint(0, 255)) - x = randint(0, ww - 8) - y = randint(0, wh - 8) - w = randint(0, ww - x) - h = randint(0, wh - y) - p.fillRect(x, y, w, h, TQBrush(c)) - - def _clear(self, p): - p.fillRect(0, 0, self.width(), self.height(), TQBrush(self.eraseColor())) - - -if __name__ == "__main__": - app = TQApplication(sys.argv) - try: - n = int(sys.argv[1]) - except: - n = 1 - wlst = [] # keep a ref around - for i in range(n): - cpuw = CPUWaster() - if i == 0: - app.setMainWidget(cpuw) - cpuw.show() - wlst.append(cpuw) - app.exec_loop() |