summaryrefslogtreecommitdiffstats
path: root/python/pyqt/examples3/qmag.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/pyqt/examples3/qmag.py')
-rwxr-xr-xpython/pyqt/examples3/qmag.py233
1 files changed, 0 insertions, 233 deletions
diff --git a/python/pyqt/examples3/qmag.py b/python/pyqt/examples3/qmag.py
deleted file mode 100755
index 6a136481..00000000
--- a/python/pyqt/examples3/qmag.py
+++ /dev/null
@@ -1,233 +0,0 @@
-#!/usr/bin/env python
-
-#****************************************************************************
-#** $Id$
-#**
-#** Copyright (C) 1992-1998 Troll Tech AS. All rights reserved.
-#**
-#** This file is part of an example program for PyQt. This example
-#** program may be used, distributed and modified without limitation.
-#**
-#*****************************************************************************/
-
-import sys
-from qt import *
-
-TRUE = 1
-FALSE = 0
-
-zoomfactors = ["100%","200%","300%","400%","500%","600%","700%","800%","1600%"]
-
-refreshrates = [
- "No autorefresh", "50 per second", "4 per second", "3 per second",
- "2 per second", "Every second", "Every two seconds", "Every three seconds",
- "Every five seconds", "Every ten seconds"]
-
-timer = (0, 20, 250, 333, 500, 1000, 2000, 3000, 5000, 10000)
-
-class MagWidget(QWidget):
- def __init__(self, qApp, parent = None, name = None):
- self.qApp = qApp
- QWidget.__init__(self, parent, name)
- self.pm = QPixmap() # pixmap magnified
- self.p = QPixmap() # pixmap
- self.image = QImage() # image of pixmap (for RGB)
- self.z = 0 # zoom factor
- self.r = 0 # autorefresh rate (index into refreshrates)
- self.grabbing = FALSE # TRUE if currently grabbing
- self.grabx = -1
- self.graby = -1
-
- self.zoom = QComboBox(FALSE, self)
- self.zoom.insertStrList(zoomfactors, len(zoomfactors))
- self.connect(self.zoom, SIGNAL("activated(int)"),
- self.setZoom)
-
- self.refresh = QComboBox(FALSE, self)
- self.refresh.insertStrList(refreshrates, len(refreshrates))
- self.connect(self.refresh, SIGNAL("activated(int)"),
- self.setRefresh)
-
- x = 0
- w = 0
- h = 20
- for s in zoomfactors:
- cw = self.zoom.fontMetrics().width(s)
- w = max(cw, w)
- self.zoom.setGeometry(x, 2, w + 30, h)
-
- x = w + 34
- w = 0
- for s in refreshrates:
- cw = self.refresh.fontMetrics().width(s)
- w = max(cw, w)
- self.refresh.setGeometry(x, 2, w + 30, h)
-
- self.saveButton = QPushButton(self)
- self.connect(self.saveButton, SIGNAL("clicked()"), self.save)
- self.saveButton.setText("Save")
- self.saveButton.setGeometry(x + w + 30 + 2, 2,
- 10 + self.saveButton.fontMetrics().width("Save"), h)
-
- self.quitButton = QPushButton(self)
- self.connect(self.quitButton, SIGNAL("clicked()"), self.qApp, SLOT("quit()"))
- self.quitButton.setText("Quit")
- self.quitButton.setGeometry(self.saveButton.geometry().right() + 2, 2,
- 10 + self.quitButton.fontMetrics().width("Quit"), h)
-
- self.rgb = QLabel(self)
- self.rgb.setText("")
- self.rgb.setAlignment(Qt.AlignVCenter)
- self.rgb.resize(self.width(), self.rgb.fontMetrics().height() + 4)
-
- self.yoffset = self.zoom.height() + 4 + self.rgb.height()
- self.setMinimumSize(self.quitButton.geometry().topRight().x() + 2,
- self.yoffset + 20)
- w = self.quitButton.geometry().topRight().x() + 2
- self.resize(w, w)
-
- self.setMouseTracking(TRUE)
- self.grabx = self.qApp.desktop().width() / 2
- self.graby = self.qApp.desktop().height() / 2
- self.grabAround(QPoint(self.grabx, self.graby))
-
- #self.zoom.setCurrentItem(1) # grabAround sets zoom factor
- #self.setZoom(1)
- self.refresh.setCurrentItem(5)
- self.setRefresh(5)
-
- def setZoom(self, index):
- if index == 8:
- self.z = 16
- else:
- self.z = index + 1
- self.grab()
-
- def setRefresh(self, index):
- self.r = index
- self.killTimers()
- if index and not self.grabbing:
- #print "st:", timer[index]
- self.startTimer(timer[index])
-
- def save(self):
- if not self.p.isNull():
- self.killTimers()
- fn = QFileDialog.getSaveFileName()
- if not fn.isEmpty():
- self.p.save(fn, "BMP")
- if self.r:
- self.startTimer(timer[self.r])
-
- def grab(self):
- if not self.isVisible() or self.grabx < 0 or self.graby < 0:
- return
-
- w = (self.width() + self.z - 1) / self.z
- h = (self.height() + self.z - 1 - self.yoffset) / self.z
-
- if w < 1 or h < 1:
- return
-
- x = self.grabx - w / 2
- y = self.graby - h / 2
-
- if x + w > QApplication.desktop().width():
- x = QApplication.desktop().width() - w
- elif x < 0:
- x = 0
-
- if y + h > QApplication.desktop().height():
- y = QApplication.desktop().height() - h
- elif y < 0:
- y = 0
-
- self.p = QPixmap.grabWindow(QApplication.desktop().winId(), x, y, w, h)
- self.image = self.p.convertToImage()
- m = QWMatrix()
- #print "z:", self.z
- m.scale(float(self.z), float(self.z))
- self.pm = self.p.xForm(m)
- self.repaint(FALSE)
-
- def paintEvent(self, e):
- if not self.pm.isNull():
- paint = QPainter(self)
- paint.drawPixmap(0, self.zoom.height() + 4, self.pm,
- 0, 0, self.width(), self.height() - self.yoffset)
-
- def mousePressEvent(self, e):
- if not self.grabbing:
- self.grabbing = TRUE
- self.killTimers()
- self.grabMouse(Qt.crossCursor)
- self.grabx = -1
- self.graby = -1
- else:
- self.grabx = self.mapToGlobal(e.pos()).x()
- self.graby = self.mapToGlobal(e.pos()).y()
-
- def mouseReleaseEvent(self, e):
- if self.grabbing and self.grabx >= 0 and self.graby >= 0:
- self.grabbing = FALSE
- self.grabAround(e.pos())
- self.releaseMouse()
-
- def grabAround(self, pos):
- rx = self.mapToGlobal(pos).x()
- ry = self.mapToGlobal(pos).y()
- w = abs(rx - self.grabx)
- h = abs(ry - self.graby)
- if w > 10 and h > 10:
- pz = 1
- while w*pz*h*pz < self.width()*(self.height()-self.yoffset) and \
- w*pz < QApplication.desktop().width() and \
- h*pz < QApplication.desktop().height():
- pz += 1
- if (w*pz*h*pz - self.width()*(self.height()-self.yoffset)) > \
- (self.width()*(self.height()-self.yoffset) - w*(pz-1)*h*(pz-1)):
- pz -= 1
- if pz < 1:
- pz = 1
- elif pz > 8:
- pz = 8
- self.zoom.setCurrentItem(pz-1)
- self.z = pz
- self.grabx = min(rx, self.grabx) + w / 2
- self.graby = min(ry, self.graby) + h / 2
- #self.resize(w*self.z, h*self.z*self.yoffset)
- self.grab()
-
- def mouseMoveEvent(self, e):
- if self.grabbing or self.pm.isNull() or \
- e.pos().y() > self.height() - self.zoom.fontMetrics().height() - 4 or \
- e.pos().y() < self.zoom.height() + 4:
- self.rgb.setText("")
- else:
- x = e.pos().x() / self.z
- y = (e.pos().y() - self.zoom.height() - 4) / self.z
- pixelinfo = ""
- if self.image.valid(x, y):
- px = self.image.pixel(x, y)
- pixelinfo = "%3d,%3d,%3d #%02x%02x%02x" % (
- qRed(px), qGreen(px), qBlue(px),
- qRed(px), qGreen(px), qBlue(px))
- self.rgb.setText("x=%d, y=%d %s" % \
- (x + self.grabx, y + self.graby, pixelinfo))
-
- def focusOutEvent(self, e):
- self.rgb.setText("")
-
- def timerEvent(self, e):
- self.grab()
-
- def resizeEvent(self, e):
- self.rgb.setGeometry(0, self.height() - self.rgb.height(),
- self.width(), self.rgb.height())
-
-if __name__=='__main__':
- app = QApplication( sys.argv )
- m = MagWidget(app)
- app.setMainWidget(m)
- m.show()
- app.exec_loop()