Ignore:
Timestamp:
07/02/13 16:20:17 (10 months ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Message:

Change canvas background when the signal propagation is paused.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Orange/OrangeCanvas/canvas/view.py

    r11238 r11616  
    44import logging 
    55 
    6 from PyQt4.QtGui import QGraphicsView, QCursor 
    7 from PyQt4.QtCore import Qt, QRect, QRectF, QTimer 
     6from PyQt4.QtGui import QGraphicsView, QCursor, QIcon 
     7from PyQt4.QtCore import Qt, QRect, QSize, QRectF, QPoint, QTimer 
    88 
    99log = logging.getLogger(__name__) 
     
    1111 
    1212class CanvasView(QGraphicsView): 
    13     """Canvas View handles the zooming and panning. 
     13    """Canvas View handles the zooming. 
    1414    """ 
    1515 
     
    1717        QGraphicsView.__init__(self, *args) 
    1818        self.setAlignment(Qt.AlignTop | Qt.AlignLeft) 
     19 
     20        self.__backgroundIcon = QIcon() 
    1921 
    2022        self.__autoScroll = False 
     
    113115 
    114116        log.debug("Auto scroll advance") 
     117 
     118    def setBackgroundIcon(self, icon): 
     119        if not isinstance(icon, QIcon): 
     120            raise TypeError("A QIcon expected.") 
     121 
     122        if self.__backgroundIcon != icon: 
     123            self.__backgroundIcon = icon 
     124            self.viewport().update() 
     125 
     126    def backgroundIcon(self): 
     127        return QIcon(self.__backgroundIcon) 
     128 
     129    def drawBackground(self, painter, rect): 
     130        QGraphicsView.drawBackground(self, painter, rect) 
     131 
     132        if not self.__backgroundIcon.isNull(): 
     133            painter.setClipRect(rect) 
     134            vrect = QRect(QPoint(0, 0), self.viewport().size()) 
     135            vrect = self.mapToScene(vrect).boundingRect() 
     136 
     137            pm = self.__backgroundIcon.pixmap( 
     138                vrect.size().toSize().boundedTo(QSize(200, 200)) 
     139            ) 
     140            pmrect = QRect(QPoint(0, 0), pm.size()) 
     141            pmrect.moveCenter(vrect.center().toPoint()) 
     142            if rect.toRect().intersects(pmrect): 
     143                painter.drawPixmap(pmrect, pm) 
Note: See TracChangeset for help on using the changeset viewer.