tuse timer signal to render qr code - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit 267466b22d02ca178b0fd7cb84c7da2fd021729c DIR parent 882ee0ded4e030bc551cb9479a4449b5c73ac49c HTML Author: thomasv <thomasv@gitorious> Date: Thu, 29 Nov 2012 16:14:07 +0100 use timer signal to render qr code Diffstat: M lib/gui_qt.py | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) --- DIR diff --git a/lib/gui_qt.py b/lib/gui_qt.py t@@ -137,19 +137,23 @@ class StatusBarButton(QPushButton): class QRCodeWidget(QWidget): - def __init__(self, addr): - super(QRCodeWidget, self).__init__() + def __init__(self): + QWidget.__init__(self) self.setMinimumSize(210, 210) - self.set_addr(addr) + self.addr = None + self.qr = None def set_addr(self, addr): - self.addr = addr - self.qr = pyqrnative.QRCode(4, pyqrnative.QRErrorCorrectLevel.L) - self.qr.addData(self.addr) - self.qr.make() - + if self.addr != addr: + self.addr = addr + self.qr = None + def paintEvent(self, e): if not self.addr: return + if not self.qr: + self.qr = pyqrnative.QRCode(4, pyqrnative.QRErrorCorrectLevel.L) + self.qr.addData(self.addr) + self.qr.make() qp = QtGui.QPainter() qp.begin(self) t@@ -184,7 +188,7 @@ class QR_Window(QWidget): main_box = QHBoxLayout() - self.qrw = QRCodeWidget('') + self.qrw = QRCodeWidget() main_box.addWidget(self.qrw) vbox = QVBoxLayout() t@@ -232,7 +236,6 @@ class QR_Window(QWidget): msg += '?label=%s'%(self.label) self.qrw.set_addr( msg ) - self.qrw.update() t@@ -329,10 +332,13 @@ class ElectrumWindow(QMainWindow): def connect_slots(self, sender): if self.wallet.seed: - self.connect(sender, QtCore.SIGNAL('timersignal'), self.check_recipient) + self.connect(sender, QtCore.SIGNAL('timersignal'), self.timer_actions) self.previous_payto_e='' - def check_recipient(self): + def timer_actions(self): + if self.qr_window: + self.qr_window.qrw.update() + if self.payto_e.hasFocus(): return r = unicode( self.payto_e.text() )