summaryrefslogtreecommitdiffstats
path: root/module/gui
diff options
context:
space:
mode:
authorGravatar mkaay <mkaay@mkaay.de> 2010-01-01 17:13:43 +0100
committerGravatar mkaay <mkaay@mkaay.de> 2010-01-01 17:13:43 +0100
commit4f904bd9610795c36d9e896bdf44c263ff43f5fd (patch)
treef232e78de164f9151371e56146439d34fbe28802 /module/gui
parentremoved prints (diff)
downloadpyload-4f904bd9610795c36d9e896bdf44c263ff43f5fd.tar.xz
fixed SerienjunkiesOrg, no more segfault in gui?
Diffstat (limited to 'module/gui')
-rw-r--r--module/gui/Collector.py58
-rw-r--r--module/gui/MainWindow.py2
-rw-r--r--module/gui/Queue.py38
3 files changed, 68 insertions, 30 deletions
diff --git a/module/gui/Collector.py b/module/gui/Collector.py
index 356ab36ec..112eb1cd5 100644
--- a/module/gui/Collector.py
+++ b/module/gui/Collector.py
@@ -23,14 +23,13 @@ from time import sleep
from module.gui.Queue import ItemIterator
-class PackageCollector(QThread):
+class PackageCollector(QObject):
def __init__(self, view, connector):
- QThread.__init__(self)
+ QObject.__init__(self)
self.view = view
self.connector = connector
self.collector = []
self.interval = 2
- self.running = True
self.rootItem = self.view.invisibleRootItem()
self.mutex = QMutex()
item = self.PackageCollectorPack(self)
@@ -40,14 +39,28 @@ class PackageCollector(QThread):
self.rootItem.addChild(item)
self.linkCollector = item
self.pauseIDs = []
+ self.updater = self.CollectorUpdater(self.interval)
+ self.connect(self.updater, SIGNAL("update()"), self.update)
- def run(self):
- while self.running:
- self.update()
- sleep(self.interval)
+ class CollectorUpdater(QThread):
+ def __init__(self, interval):
+ QThread.__init__(self)
+ self.interval = interval
+ self.running = True
+
+ def run(self):
+ while self.running:
+ self.emit(SIGNAL("update()"))
+ self.sleep(self.interval)
+
+ def start(self):
+ self.updater.start()
+
+ def wait(self):
+ self.updater.wait()
def stop(self):
- self.running = False
+ self.updater.running = False
def update(self):
locker = QMutexLocker(self.mutex)
@@ -210,23 +223,36 @@ class PackageCollector(QThread):
def getPack(self):
return self.pack
-class LinkCollector(QThread):
+class LinkCollector(QObject):
def __init__(self, view, root, connector):
- QThread.__init__(self)
+ QObject.__init__(self)
self.view = view
self.connector = connector
self.interval = 2
- self.running = True
self.rootItem = root
self.mutex = QMutex()
+ self.updater = self.CollectorUpdater(self.interval)
+ self.connect(self.updater, SIGNAL("update()"), self.update)
+
+ class CollectorUpdater(QThread):
+ def __init__(self, interval):
+ QThread.__init__(self)
+ self.interval = interval
+ self.running = True
+
+ def run(self):
+ while self.running:
+ self.emit(SIGNAL("update()"))
+ self.sleep(self.interval)
+
+ def start(self):
+ self.updater.start()
- def run(self):
- while self.running:
- self.update()
- sleep(self.interval)
+ def wait(self):
+ self.updater.wait()
def stop(self):
- self.running = False
+ self.updater.running = False
def update(self):
locker = QMutexLocker(self.mutex)
diff --git a/module/gui/MainWindow.py b/module/gui/MainWindow.py
index 94ff63dda..250b701e4 100644
--- a/module/gui/MainWindow.py
+++ b/module/gui/MainWindow.py
@@ -403,13 +403,11 @@ class MainWindow(QMainWindow):
def slotEditPackage(self):
item = self.tabs["collector"]["package_view"].currentItem()
pid = self.tabs["collector"]["package_view"].currentItem().data(0, Qt.UserRole).toPyObject()
- print type(pid)
self.emit(SIGNAL("pauseItemUpdate"), pid, True)
self.tabs["collector"]["package_view"].editItem(item, 0)
def slotCloseItemEditor(self, editor, hint):
pid = self.tabs["collector"]["package_view"].currentItem().data(0, Qt.UserRole).toPyObject()
- print type(pid)
self.emit(SIGNAL("changePackageName"), pid, editor.text())
self.emit(SIGNAL("pauseItemUpdate"), pid, False)
diff --git a/module/gui/Queue.py b/module/gui/Queue.py
index 499cb5199..ed1c0f0a1 100644
--- a/module/gui/Queue.py
+++ b/module/gui/Queue.py
@@ -21,9 +21,9 @@ from PyQt4.QtGui import *
from time import sleep, time
-class Queue(QThread):
+class Queue(QObject):
def __init__(self, view, connector):
- QThread.__init__(self)
+ QObject.__init__(self)
self.view = view
self.connector = connector
self.statusMap = {
@@ -33,24 +33,38 @@ class Queue(QThread):
"waiting": 3,
"reconnected": 4,
"starting": 5,
- "downloading": 6,
- "failed": 7,
- "aborted": 8,
+ "failed": 6,
+ "aborted": 7,
+ "decrypting": 8,
+ "downloading": 9
}
self.statusMapReverse = dict((v,k) for k, v in self.statusMap.iteritems())
self.interval = 1
- self.running = True
self.wait_dict = {}
self.rootItem = self.view.invisibleRootItem()
self.mutex = QMutex()
+ self.updater = self.QueueUpdater(self.interval)
+ self.connect(self.updater, SIGNAL("update()"), self.update)
- def run(self):
- while self.running:
- self.update()
- sleep(self.interval)
+ class QueueUpdater(QThread):
+ def __init__(self, interval):
+ QThread.__init__(self)
+ self.interval = interval
+ self.running = True
+
+ def run(self):
+ while self.running:
+ self.emit(SIGNAL("update()"))
+ self.sleep(self.interval)
+
+ def start(self):
+ self.updater.start()
+
+ def wait(self):
+ self.updater.wait()
def stop(self):
- self.running = False
+ self.updater.running = False
def update(self):
locker = QMutexLocker(self.mutex)
@@ -241,7 +255,7 @@ class Queue(QThread):
self.addChild(newChild)
item = newChild
speed = self.queue.getSpeed(item)
- if speed == None or item.getFileData()["status_type"] == "starting":
+ if speed == None or item.getFileData()["status_type"] == "starting" or item.getFileData()["status_type"] == "decrypting":
status = item.getFileData()["status_type"]
else:
status = "%s (%s KB/s)" % (item.getFileData()["status_type"], speed)