summaryrefslogtreecommitdiffstats
path: root/python/pyqt/examples3/progress.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/pyqt/examples3/progress.py')
-rwxr-xr-xpython/pyqt/examples3/progress.py287
1 files changed, 0 insertions, 287 deletions
diff --git a/python/pyqt/examples3/progress.py b/python/pyqt/examples3/progress.py
deleted file mode 100755
index acdbd5aa..00000000
--- a/python/pyqt/examples3/progress.py
+++ /dev/null
@@ -1,287 +0,0 @@
-#!/usr/bin/env python
-
-#/****************************************************************************
-#** $Id$
-#**
-#** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
-#**
-#** This file is part of an example program for Qt. This example
-#** program may be used, distributed and modified without limitation.
-#**
-#** Converted to PyQt3: Hans-Peter Jansen <hpj@urpla.net>
-#**
-#*****************************************************************************/
-
-from qt import *
-import sys
-from random import random
-
-TRUE = 1
-FALSE = 0
-
-class AnimatedThingy(QLabel):
- def __init__(self, parent, s):
- QLabel.__init__(self, parent)
- self.nqix = 40
- self.step = 0
- self.ox = []
- self.oy = []
- self.px = []
- self.py = []
- for i in range(self.nqix):
- self.ox.append(0)
- self.oy.append(0)
- self.px.append(0)
- self.py.append(0)
- self.x0, self.y0, self.x1, self.y1 = 0, 0, 0, 0
- self.dx0 = 2 + int(random() * 8)
- self.dy0 = 2 + int(random() * 8)
- self.dx1 = 2 + int(random() * 8)
- self.dy1 = 2 + int(random() * 8)
- self.label = QString(s)
- self.setEraseColor(Qt.black)
- self.label.append("\n... and wasting CPU\nwith this animation!\n")
-
- def XXXshow(self):
- if not self.isVisible():
- print "bla"
- self.startTimer(100)
- QWidget.show(self)
-
- def hide(self):
- QWidget.hide(self)
- self.killTimers()
-
- def sizeHint(self):
- return QSize(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], self.oy[step], self.px[step], self.py[step])
- # calc new line coordinates
- self.x0, self.dx0 = self._inc(self.x0, self.dx0, self.width())
- self.y0, self.dy0 = self._inc(self.y0, self.dy0, self.height())
- self.x1, self.dx1 = self._inc(self.x1, self.dx1, self.width())
- self.y1, self.dy1 = self._inc(self.y1, self.dy1, self.height())
- self.ox[step] = self.x0
- self.oy[step] = self.y0
- self.px[step] = self.x1
- self.py[step] = self.y1
- self._drawqix(p, pn, step)
- self._drawtxt(p)
-
- def paintEvent(self, e):
- p, pn = self._painter()
- p.setClipRect(e.rect())
- for i in range(self.nqix):
- self._drawqix(p, pn, i)
- self._drawtxt(p)
-
- def _painter(self):
- p = QPainter(self)
- pn = p.pen()
- pn.setWidth(2)
- p.setPen(pn)
- return p, pn
-
- def _drawqix(self, p, pn, step):
- c = QColor()
- # enhanced rainbow effect
- i = (step * 511)/self.nqix
- if i > 255:
- i = 511 - i
- c.setHsv(i, 255, 255)
- pn.setColor(c)
- p.setPen(pn)
- p.drawLine(self.ox[step], self.oy[step], self.px[step], self.py[step])
-
- def _drawtxt(self, p):
- #p.setPen(self.colorGroup().text())
- p.setPen(Qt.white)
- p.drawText(self.rect(), Qt.AlignCenter, self.label)
-
- def _inc(self, x, dx, b):
- x += dx
- if x < 0:
- x = 0
- dx = 2 + int(random() * 8)
- elif x >= b:
- x = b-1
- dx = -(2 + int(random() * 8))
- return x, dx
-
-
-class CPUWaster(QWidget):
- def __init__(self):
- QWidget.__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 = 0
- self.pb = None
- menubar = QMenuBar(self, "menu")
- file = QPopupMenu()
- menubar.insertItem("&File", file)
- for i in range(self.first_draw_item, self.last_draw_item + 1):
- file.insertItem(self.drawItemText(i), i)
- self.connect(menubar, SIGNAL("activated(int)"), self.doMenuItem)
- file.insertSeparator()
- file.insertItem("Quit", qApp, SLOT("quit()"))
- options = QPopupMenu()
- menubar.insertItem("&Options", options)
- self.td_id = options.insertItem("Timer driven", self.timerDriven)
- self.ld_id = options.insertItem("Loop driven", self.loopDriven)
- options.insertSeparator()
- self.dl_id = options.insertItem("Default label", self.defaultLabel)
- self.cl_id = options.insertItem("Custom label", self.customLabel)
- options.insertSeparator()
- self.md_id = options.insertItem("No minimum duration", self.toggleMinimumDuration)
- options.setCheckable(TRUE)
- self.options = options
- self.menubar = menubar
- self.file = file
- #self.loopDriven()
- self.timerDriven()
- #self.defaultLabel()
- self.customLabel()
- self.setFixedSize(400, 300)
- self.setEraseColor(Qt.black)
-
- def drawItemRects(self, id):
- n = id - self.first_draw_item
- r = 100
- while n:
- n -= 1
- f = 5
- if not n % 3:
- f = 4
- r *= f
- return r
-
- def drawItemText(self, id):
- return QString("%d Rectangles" % self.drawItemRects(id))
-
- # slots
- def doMenuItem(self, id):
- if id >= self.first_draw_item and id <= self.last_draw_item:
- self._draw(self.drawItemRects(id))
-
- def stopDrawing(self):
- self.got_stop = TRUE
-
- 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 timerEvent(self, e):
- self.pb.setProgress(self.pb.totalSteps() - self.rects)
- self.rects -= 1
- p = QPainter(self)
- ww = self.width()
- wh = self.height()
-
- if ww > 8 and wh > 8:
- c = QColor(int(random() * 255), int(random() * 255), int(random() * 255))
- x = int(random() * (ww-8))
- y = int(random() * (wh-8))
- w = int(random() * (ww-x))
- h = int(random() * (wh-y))
- p.fillRect(x, y, w, h, QBrush(c))
-
- if not self.rects or self.got_stop:
- self.pb.setProgress(self.pb.totalSteps())
- p = QPainter(self)
- p.fillRect(0, 0, self.width(), self.height(), QBrush(self.eraseColor()))
- self.enableDrawingItems(TRUE)
- self.killTimers()
- if not self.default_label:
- self.pb.killTimers()
- self.l.killTimers()
- del self.pb
- self.pb = None
-
- def newProgressDialog(self, label, steps, modal):
- d = QProgressDialog(label, "Cancel", steps, self, "progress", modal)
- if self.options.isItemChecked(self.md_id):
- d.setMinimumDuration(0)
- if not self.default_label:
- self.l = AnimatedThingy(d, label)
- d.setLabel(self.l)
- self.l.startTimer(100)
- return d
-
- def enableDrawingItems(self, yes):
- for i in range(self.first_draw_item, self.last_draw_item):
- self.menubar.setItemEnabled(i, yes)
-
- def _draw(self, n):
- if self.timer_driven:
- if self.pb:
- qWarning("This cannot happen!")
- return
-
- self.rects = n
- self.pb = self.newProgressDialog("Drawing rectangles.\nUsing timer event.", n, FALSE)
- self.pb.setCaption("Please Wait")
- self.connect(self.pb, SIGNAL("cancelled()"), self.stopDrawing)
- self.enableDrawingItems(FALSE)
- self.startTimer(10)
- self.got_stop = FALSE
- else:
- lpb = self.newProgressDialog("Drawing rectangles.\nUsing loop.", n, TRUE)
- lpb.setCaption("Please Wait")
-
- p = QPainter(self)
- for i in range(n):
- lpb.setProgress(i)
- if lpb.wasCancelled():
- break
- c = QColor(int(random() * 255), int(random() * 255), int(random() * 255))
- x = int(random() * (self.width()-8))
- y = int(random() * (self.height()-8))
- w = int(random() * (self.width()-x))
- h = int(random() * (self.height()-y))
- p.fillRect(x, y, w, h, QBrush(c))
-
- lpb.cancel()
- del lpb
- p.fillRect(0, 0, self.width(), self.height(), QBrush(self.eraseColor()))
-
-
-if __name__ == "__main__":
- app = QApplication(sys.argv)
- try:
- n = int(sys.argv[1])
- except:
- n = 1
- for i in range(n):
- cpuw = CPUWaster()
- if i == 0:
- app.setMainWidget(cpuw)
- cpuw.show()
- app.exec_loop()