use timer signal to render qr code

This commit is contained in:
thomasv 2012-11-29 16:14:07 +01:00
parent 882ee0ded4
commit 267466b22d
1 changed files with 18 additions and 12 deletions

View File

@ -137,19 +137,23 @@ class StatusBarButton(QPushButton):
class QRCodeWidget(QWidget): class QRCodeWidget(QWidget):
def __init__(self, addr): def __init__(self):
super(QRCodeWidget, self).__init__() QWidget.__init__(self)
self.setMinimumSize(210, 210) self.setMinimumSize(210, 210)
self.set_addr(addr) self.addr = None
self.qr = None
def set_addr(self, addr): def set_addr(self, addr):
self.addr = addr if self.addr != addr:
self.qr = pyqrnative.QRCode(4, pyqrnative.QRErrorCorrectLevel.L) self.addr = addr
self.qr.addData(self.addr) self.qr = None
self.qr.make()
def paintEvent(self, e): def paintEvent(self, e):
if not self.addr: return 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 = QtGui.QPainter()
qp.begin(self) qp.begin(self)
@ -184,7 +188,7 @@ class QR_Window(QWidget):
main_box = QHBoxLayout() main_box = QHBoxLayout()
self.qrw = QRCodeWidget('') self.qrw = QRCodeWidget()
main_box.addWidget(self.qrw) main_box.addWidget(self.qrw)
vbox = QVBoxLayout() vbox = QVBoxLayout()
@ -232,7 +236,6 @@ class QR_Window(QWidget):
msg += '?label=%s'%(self.label) msg += '?label=%s'%(self.label)
self.qrw.set_addr( msg ) self.qrw.set_addr( msg )
self.qrw.update()
@ -329,10 +332,13 @@ class ElectrumWindow(QMainWindow):
def connect_slots(self, sender): def connect_slots(self, sender):
if self.wallet.seed: 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='' 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(): if self.payto_e.hasFocus():
return return
r = unicode( self.payto_e.text() ) r = unicode( self.payto_e.text() )