Menu

[r343]: / trunk / QDownloader.py  Maximize  Restore  History

Download this file

39 lines (34 with data), 1.3 kB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# -*- coding: utf-8 -*-
import os, sys, urllib
from threading import Thread
from PyQt4 import QtCore, QtGui
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class QDownloader(QProgressDialog):
def __init__(self, parent=None):
QProgressDialog.__init__(self, parent)
self.parent = parent
self.ok = True
self.resize(self.size().width()*2, self.size().height())
self.canceled.connect(self.cancelDownload)
self.connect(self, SIGNAL("updateProgress(PyQt_PyObject, PyQt_PyObject, PyQt_PyObject, PyQt_PyObject)"), self.updateProgress)
def updateProgress(self, numblocks, blocksize, filesize, url=None):
self.setMaximum(filesize)
self.setValue(numblocks*blocksize)
if numblocks*blocksize > filesize:
self.thread._Thread__stop()
self.hide()
def dld(self, url, path):
try:
urllib.urlretrieve(url, path, lambda nb, bs, fs, url=url: self.emit(QtCore.SIGNAL("updateProgress(PyQt_PyObject, PyQt_PyObject, PyQt_PyObject, PyQt_PyObject)"), nb, bs, fs, url))
except BaseException, e:
pass
def download(self, url, path):
self.thread = Thread(target=self.dld, args=(url, path))
self.thread.start()
self.show()
self.exec_()
return self.ok
def cancelDownload(self):
self.ok = False
self.thread._Thread__stop()