Example #1
0
class SingleLinkPage(QFrame):
    """
    An simple (overly) large image with a external link
    """
    def __init__(self,
                 *args,
                 image=QImage(),
                 heading="",
                 link=QUrl(),
                 **kwargs):
        super().__init__(*args, **kwargs)
        self.__link = QUrl()

        layout = QVBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)

        self.setLayout(layout)
        self.__heading = QLabel()
        self.__content = QLabel()

        self.layout().addWidget(self.__heading)
        self.layout().addWidget(self.__content, 10, Qt.AlignCenter)

        self.__shadow = DropShadowFrame()
        self.__shadow.setWidget(self.__content)

        self.setImage(image)
        self.setHeading(heading)
        self.setLink(link)

    def setHeading(self, heading):
        self.__heading.setText("<h2>{}</h2>".format(heading))

    def setImage(self, image):
        pm = pixmap_from_image(image)
        self.__content.setPixmap(pm)

    def setLink(self, url):
        self.__link = QUrl(url)
        if not self.__link.isEmpty():
            self.__content.setCursor(Qt.PointingHandCursor)
        else:
            self.__content.unsetCursor()
        self.__content.setToolTip(self.__link.toString())

    def mousePressEvent(self, event):
        if self.__content.geometry().contains(event.pos()) and \
                not self.__link.isEmpty():
            QDesktopServices.openUrl(self.__link)
            event.accept()
        else:
            super().mousePressEvent(event)