Example #1
0
class NodeThumbnailRenderReply(QNetworkReply):
    def __init__(self, parent, request):
        QNetworkReply.__init__(self, parent)
        self.qbuffer = None
        self.connect(self, SIGNAL('abouteToClose()'), self.__close)
        self.byteArray = QByteArray()
        self.qbuffer = QBuffer(self.byteArray)
        self.node = vfs().getnode(str(request.url().path().toUtf8()))
        self.thumbnailer = Thumbnailer()
        self.connect(self.thumbnailer, SIGNAL("ThumbnailUpdate"),
                     self.updateThumbnail)
        self.setRequest(request)
        self.setOperation(QNetworkAccessManager.GetOperation)
        mime = "image/jpg"
        self.setHeader(QNetworkRequest.ContentTypeHeader, QVariant(mime))
        self.open()
        self.setUrl(request.url())
        self.connect(parent, SIGNAL("ready"), self.ready)
        self.ready()

    def ready(self):
        if self.node.dataType().find('video') != -1:
            pixmap = self.thumbnailer.generate(self.node,
                                               iconSize=128,
                                               frames=10)
        else:
            pixmap = self.thumbnailer.generate(self.node,
                                               iconSize=256,
                                               frames=10)
        if pixmap:
            self.updateThumbnail(self.node, pixmap)

    def updateThumbnail(self, node, pixmap):
        if pixmap == None:
            pixmap = QPixmap(":file_broken.png")
        pixmap.save(self.qbuffer, 'JPG')
        self.qbuffer.seek(0)
        QTimer.singleShot(0, self, SIGNAL("readyRead()"))
        QTimer.singleShot(0, self, SIGNAL("finished()"))

    def abort(self):
        self.close()

    def __del__(self):
        self.thumbnailer.unregister()

    def open(self, mode=None):
        try:
            self.qbuffer.open(QIODevice.ReadWrite | QIODevice.Unbuffered)
            self.setOpenMode(QIODevice.ReadWrite | QIODevice.Unbuffered)
            return True
        except (AttributeError, IOError):
            return False

    def seek(self, pos):
        if self.qbuffer:
            return self.qbuffer.seek(pos)
        return False

    def __close(self):
        if self.qbuffer:
            self.qbuffer.close()
            self.qbuffer = None
        return True

    def readData(self, size):
        if self.qbuffer:
            return self.qbuffer.read(size)
        return ""

    def pos(self):
        if self.qbuffer:
            return self.qbuffer.pos()
        return 0

    def isSequential(self):
        if self.qbuffer:
            return self.qbuffer.isSequential()
        return False

    def size(self):
        return self.qbuffer.size()

    def reset(self):
        if self.qbuffer:
            self.qbuffer.seek(0)
            return True
        return False

    def atEnd(self):
        if self.qbuffer:
            return self.qbuffer.atEnd()
        return False
Example #2
0
class ReportJSRenderReply(QNetworkReply):
    def __init__(self, parent, request):
        QNetworkReply.__init__(self, parent)
        self.__parent = parent
        self.qbuffer = None
        self.connect(self, SIGNAL('abouteToClose()'), self.__close)
        self.byteArray = QByteArray()
        self.qbuffer = QBuffer(self.byteArray)
        self.setRequest(request)
        self.setOperation(QNetworkAccessManager.GetOperation)
        self.setHeader(
            QNetworkRequest.ContentTypeHeader,
            QVariant(
                '"text/javascript" charset="utf-8" language="javascript"'))
        self.setAttribute(QNetworkRequest.CacheLoadControlAttribute,
                          QVariant(QNetworkRequest.AlwaysNetwork))
        self.open()
        self.setUrl(request.url())
        self.writeJS()

        QTimer.singleShot(0, self, SIGNAL("readyRead()"))
        QTimer.singleShot(0, self, SIGNAL("finished()"))

    def writeJS(self):
        pageName = self.url().path()
        pageName = unicode(pageName).encode('UTF-8', 'replace')
        buff = ""
        try:
            buff = self.__parent.pages[pageName]
        except KeyError:
            print "can't get page " + pageName
        self.qbuffer.write(buff)
        self.qbuffer.seek(0)

    def abort(self):
        self.close()

    def __del__(self):
        pass

    def open(self, mode=None):
        try:
            self.qbuffer.open(QIODevice.ReadWrite | QIODevice.Unbuffered)
            self.setOpenMode(QIODevice.ReadWrite | QIODevice.Unbuffered)
            return True
        except (AttributeError, IOError):
            return False

    def seek(self, pos):
        if self.qbuffer:
            return self.qbuffer.seek(pos)
        return False

    def __close(self):
        if self.qbuffer:
            self.qbuffer.close()
            self.qbuffer = None
        return True

    def readData(self, size):
        if self.qbuffer:
            return self.qbuffer.read(size)
        return ""

    def pos(self):
        if self.qbuffer:
            return self.qbuffer.pos()
        return 0

    def isSequential(self):
        if self.qbuffer:
            return self.qbuffer.isSequential()
        return False

    def size(self):
        return self.qbuffer.size()

    def reset(self):
        if self.qbuffer:
            self.qbuffer.seek(0)
            return True
        return False

    def atEnd(self):
        if self.qbuffer:
            return self.qbuffer.atEnd()
        return False