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)
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)