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