From 15f4167c8195daa57a8a2c1323ffccf41c515730 Mon Sep 17 00:00:00 2001 From: Romain Bignon Date: Sun, 4 Jul 2010 17:39:30 +0200 Subject: [PATCH] disconnect signals when the process is done --- weboob/tools/application/qt/qt.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/weboob/tools/application/qt/qt.py b/weboob/tools/application/qt/qt.py index 551ca2b9..f8806518 100644 --- a/weboob/tools/application/qt/qt.py +++ b/weboob/tools/application/qt/qt.py @@ -82,8 +82,8 @@ class QtDo(QObject): self.cb = cb self.eb = eb - self.connect(self, SIGNAL('cb'), self.cb) - self.connect(self, SIGNAL('eb'), self.eb) + self.connect(self, SIGNAL('cb'), self.local_cb) + self.connect(self, SIGNAL('eb'), self.local_eb) def run_thread(func): def inner(self, *args, **kwargs): @@ -108,6 +108,17 @@ class QtDo(QObject): print error print backtrace + def local_cb(self, backend, data): + self.cb(backend, data) + if not backend: + self.disconnect(self, SIGNAL('cb'), self.local_cb) + self.disconnect(self, SIGNAL('eb'), self.local_eb) + + def local_eb(self, backend, error, backtrace): + self.eb(backend, error, backtrace) + self.disconnect(self, SIGNAL('cb'), self.local_cb) + self.disconnect(self, SIGNAL('eb'), self.local_eb) + def thread_cb(self, backend, data): self.emit(SIGNAL('cb'), backend, data)