Esempio n. 1
0
    def test_controlpointrect(self):
        control = ControlPointRect()
        rect = QGraphicsRectItem(QRectF(10, 10, 100, 200))
        self.scene.addItem(rect)
        self.scene.addItem(control)

        control.setRect(rect.rect())
        control.setFocus()
        control.rectChanged.connect(rect.setRect)

        control.setRect(QRectF(20, 20, 100, 200))
        self.assertEqual(control.rect(), rect.rect())
        self.assertEqual(control.rect(), QRectF(20, 20, 100, 200))

        control.setControlMargins(5)
        self.assertEqual(control.controlMargins(), QMargins(5, 5, 5, 5))
        control.rectEdited.connect(rect.setRect)

        self.view.show()
        self.app.exec_()

        self.assertEqual(rect.rect(), control.rect())
Esempio n. 2
0
class GraphicsView(QGraphicsView):
    
    rubber_band = None
    selection = None
    
    def __init__(self, scene, parent=None):
        super(GraphicsView, self).__init__(parent)
        self.setScene(scene)
        self.setRenderHint(QPainter.Antialiasing)
        self.setRenderHint(QPainter.TextAntialiasing)
        
    def wheelEvent(self, event):
        factor = 1.41 ** (-event.delta() / 240.0)
        self.scale(factor, factor)
        
    def __mousePressEvent(self,event):
        self.drag_start = event.pos()
    def __mouseReleaseEvent(self,event):
        global PIX
        self.drag_stop = event.pos()
        im = PIX.pixmap().toImage()
        
        start, stop = self.mapToScene(self.drag_start),self.mapToScene(self.drag_stop)
        logging.debug((start,stop))

        augmented = QGraphicsPixmapItem(QPixmap(tempfile))
        
        augmented.setOffset(rect.topLeft())
        augmented.setMatrix(QMatrix())
        if None != self.selectbox: self.scene().removeItem(self.selectbox)
        self.selectbox = augmented
        self.scene().addItem(self.selectbox)
        
    def mousePressEvent(self, event):
        self.start = event.pos()
        if not self.rubber_band:
            self.rubber_band = QGraphicsRectItem(None, self.scene())
        self.rubber_band.setRect(self.mapToScene(QRect(self.start,QSize())).boundingRect())
        self.scene().addItem(self.rubber_band)
        logging.info(self.__class__.__name__+' press')
    def mouseMoveEvent(self, event):
        if self.rubber_band:
            self.rubber_band.setRect(self.mapToScene(QRect(self.start,event.pos()).normalized()).boundingRect())
            logging.info(self.__class__.__name__+' move')
    def mouseReleaseEvent(self, event):
        if self.rubber_band:
            self.doIt(self.rubber_band.rect())
            self.scene().removeItem(self.rubber_band)
            self.rubber_band = None
        logging.info(self.__class__.__name__+' release')
        
    def doIt(self, rect):
        global PIX
        pix_rect = PIX.mapToItem(PIX,rect).toPolygon().boundingRect()
        logging.debug(pix_rect)
        
        im = PIX.pixmap().toImage()
        im = im.copy(pix_rect)
        tempfile = os.path.join(os.getenv('TMP'),str(uuid.uuid4())+'.jpg')
        im.save(tempfile, 'JPEG')
        try:
            coords = pil.process(tempfile)
            rect = QRect(QPoint(*coords[0]),QPoint(*coords[1])).normalized()
            logging.debug(rect)
            zone = QGraphicsEllipseItem(QRectF(rect))
            zone = self.rubber_band.mapFromItem()
            self.mapFrom()
            self.scene().addItem(zone)
        except Exception, err:
            logging.error(err)
        finally: