fix QtScheduler and use it instead of QTimer
This commit is contained in:
parent
9d4f02840b
commit
41317e5029
2 changed files with 25 additions and 18 deletions
|
|
@ -18,7 +18,7 @@
|
|||
from __future__ import with_statement
|
||||
|
||||
from PyQt4.QtGui import QWidget, QHBoxLayout, QVBoxLayout, QFrame, QLabel, QImage, QPixmap
|
||||
from PyQt4.QtCore import SIGNAL, QTimer
|
||||
from PyQt4.QtCore import SIGNAL
|
||||
|
||||
from weboob.capabilities.dating import StatusField
|
||||
from weboob.tools.application.qt import QtDo
|
||||
|
|
@ -49,17 +49,12 @@ class Account(QFrame):
|
|||
head.addWidget(self.title)
|
||||
head.addStretch()
|
||||
|
||||
self.body = QLabel()
|
||||
self.body = QLabel(u'<i>Waiting...</i>')
|
||||
|
||||
self.layout().addWidget(headw)
|
||||
self.layout().addWidget(self.body)
|
||||
|
||||
self.timer = QTimer()
|
||||
self.timer.setSingleShot(False)
|
||||
self.timer.setInterval(60)
|
||||
self.connect(self.timer, SIGNAL('timeout()'), self.updateStats)
|
||||
|
||||
self.updateStats()
|
||||
self.weboob.repeat(60, self.updateStats)
|
||||
|
||||
def updateStats(self):
|
||||
self.process = QtDo(self.weboob, self.updateStats_cb)
|
||||
|
|
|
|||
|
|
@ -31,26 +31,38 @@ __all__ = ['QtApplication', 'QtMainWindow', 'QtDo', 'HTMLDelegate']
|
|||
class QtScheduler(IScheduler):
|
||||
def __init__(self, app):
|
||||
self.app = app
|
||||
self.count = 0
|
||||
self.timers = {}
|
||||
|
||||
def schedule(self, interval, function, *args):
|
||||
timer = QTimer()
|
||||
timer.setInterval(interval)
|
||||
timer.setSingleShot(False)
|
||||
self.app.connect(timer, SIGNAL("timeout()"), lambda: self.timeout(timer.timerId(), False, function, *args))
|
||||
self.timers[timer.timerId()] = timer
|
||||
timer.setInterval(interval * 1000)
|
||||
timer.setSingleShot(True)
|
||||
|
||||
count = self.count
|
||||
self.count += 1
|
||||
|
||||
timer.start()
|
||||
self.app.connect(timer, SIGNAL("timeout()"), lambda: self.timeout(count, None, function, *args))
|
||||
self.timers[count] = timer
|
||||
|
||||
def repeat(self, interval, function, *args):
|
||||
timer = QTimer()
|
||||
timer.setInterval(interval)
|
||||
timer.setSingleShot(True)
|
||||
self.app.connect(timer, SIGNAL("timeout()"), lambda: self.timeout(timer.timerId(), True, function, *args))
|
||||
self.timers[timer.timerId()] = timer
|
||||
timer.setSingleShot(False)
|
||||
|
||||
def timeout(self, _id, single, function, *args):
|
||||
count = self.count
|
||||
self.count += 1
|
||||
|
||||
timer.start(0)
|
||||
self.app.connect(timer, SIGNAL("timeout()"), lambda: self.timeout(count, interval, function, *args))
|
||||
self.timers[count] = timer
|
||||
|
||||
def timeout(self, _id, interval, function, *args):
|
||||
function(*args)
|
||||
if single:
|
||||
if interval is None:
|
||||
self.timers.pop(_id)
|
||||
else:
|
||||
self.timers[_id].setInterval(interval * 1000)
|
||||
|
||||
def want_stop(self):
|
||||
self.app.quit()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue