class ResourceRenderReply(QNetworkReply): def __init__(self, parent, request): QNetworkReply.__init__(self, parent) res = ":" + str(request.url().path().toUtf8()) self.file = None self.filepath = res self.connect(self, SIGNAL('aboutToClose()'), self.__close) self.setRequest(request) self.setOperation(QNetworkAccessManager.GetOperation) self.open() self.setUrl(request.url()) self.connect(parent, SIGNAL("ready"), self.ready) def ready(self): self.emit(SIGNAL("readyRead()")) self.emit(SIGNAL("finished()")) def abort(self): self.close() def __del__(self): if self.file: self.__close() def open(self, mode=None): try: self.file = QFile(self) self.file.setFileName(QString(self.filepath)) self.file.open(QIODevice.ReadOnly | QIODevice.Unbuffered) self.setOpenMode(QIODevice.ReadOnly | QIODevice.Unbuffered) return True except (AttributeError, IOError): return False def seek(self, pos): if self.file: return self.file.seek(pos) return False def __close(self): if self.file: self.file.close() self.file = None return True def readData(self, size): if self.file: return self.file.read(size) return "" def pos(self): if self.file: self.file.pos() return 0 def isSequential(self): if self.file: return self.file.isSequential() return False def size(self): return self.file.size() def reset(self): if self.file: self.file.seek(0) return True return False def atEnd(self): if self.file: return self.file.atEnd() return False