Exemplo n.º 1
0
class Thumbnailer(QObject):
    compatibleType = re.compile(
        "(JPEG|JPG|jpg|jpeg|GIF|gif|bmp|BMP|png|PNG|pbm|PBM|pgm|PGM|ppm|PPM|xpm|XPM|xbm|XBM|TIFF|tiff|video).*",
        re.IGNORECASE)

    def __init__(self):
        QObject.__init__(self)
        self.thumbnailManager = ThumbnailManager()
        self.thumbnailManager.register(self)
        self.requests = set()

    @staticmethod
    def isThumbnailable(node):
        if Thumbnailer.compatibleType.search(str(node.dataType())) != None:
            return True
        return False

    def generate(self,
                 node,
                 iconSize=128,
                 percent=10,
                 frames=1,
                 blocking=False):
        if blocking:
            self.blockingLoop = QEventLoop()
            self.blockingLoop.connect(self, SIGNAL("ThumbnailUpdate"),
                                      self.blockingUpdate)
        config = ScaleConfig(node, iconSize, percent, frames)
        self.requests.add(config)
        pixmap = self.thumbnailManager.generate(config)
        if pixmap:
            return pixmap
        if blocking:
            self.blockingLoop.exec_()
            return self.pixmap

    def blockingUpdate(self, node, pixmap):
        self.pixmap = pixmap
        self.blockingLoop.quit()

    def requestRemove(self, config):
        try:
            self.requests.remove(config)
        except:
            pass

    def request(self, config):
        if config in self.requests:
            return True
        else:
            return False

    def unregister(self):
        self.thumbnailManager.unregister(self)
Exemplo n.º 2
0
class Thumbnailer(QObject):
    compatibleType = re.compile(
        "(JPEG|JPG|jpg|jpeg|GIF|gif|bmp|BMP|png|PNG|pbm|PBM|pgm|PGM|ppm|PPM|xpm|XPM|xbm|XBM|TIFF|tiff|video).*",
        re.IGNORECASE,
    )

    def __init__(self):
        QObject.__init__(self)
        self.thumbnailManager = ThumbnailManager()
        self.thumbnailManager.register(self)
        self.requests = set()

    @staticmethod
    def isThumbnailable(node):
        if Thumbnailer.compatibleType.search(str(node.dataType())) != None:
            return True
        return False

    def generate(self, node, iconSize=128, percent=10, frames=1, blocking=False):
        if blocking:
            self.blockingLoop = QEventLoop()
            self.blockingLoop.connect(self, SIGNAL("ThumbnailUpdate"), self.blockingUpdate)
        config = ScaleConfig(node, iconSize, percent, frames)
        self.requests.add(config)
        pixmap = self.thumbnailManager.generate(config)
        if pixmap:
            return pixmap
        if blocking:
            self.blockingLoop.exec_()
            return self.pixmap

    def blockingUpdate(self, node, pixmap):
        self.pixmap = pixmap
        self.blockingLoop.quit()

    def requestRemove(self, config):
        try:
            self.requests.remove(config)
        except:
            pass

    def request(self, config):
        if config in self.requests:
            return True
        else:
            return False

    def unregister(self):
        self.thumbnailManager.unregister(self)