From 81d1e67253c8ca581e821a6cd9e5ee1502fffd08 Mon Sep 17 00:00:00 2001 From: ThomasV Date: Sat, 12 Jul 2014 18:39:28 +0200 Subject: [PATCH] always enable qr scanner plugin --- gui/qt/main_window.py | 16 ++++++++++++++++ gui/qt/qrtextedit.py | 7 ++++--- plugins/qrscanner.py | 27 +++------------------------ 3 files changed, 23 insertions(+), 27 deletions(-) diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py index 028deb5..874b8e2 100644 --- a/gui/qt/main_window.py +++ b/gui/qt/main_window.py @@ -360,6 +360,7 @@ class ElectrumWindow(QMainWindow): raw_transaction_menu.addAction(_("&From file"), self.do_process_from_file) raw_transaction_menu.addAction(_("&From text"), self.do_process_from_text) raw_transaction_menu.addAction(_("&From the blockchain"), self.do_process_from_txid) + raw_transaction_menu.addAction(_("&From QR code"), self.read_tx_from_qrcode) self.raw_transaction_menu = raw_transaction_menu help_menu = menubar.addMenu(_("&Help")) @@ -2091,6 +2092,21 @@ class ElectrumWindow(QMainWindow): QMessageBox.critical(None, _("Unable to parse transaction"), _("Electrum was unable to parse your transaction")) + def read_tx_from_qrcode(self): + data = run_hook('scan_qr_hook') + if not data: + return + # transactions are binary, but qrcode seems to return utf8... + z = data.decode('utf8') + s = '' + for b in z: + s += chr(ord(b)) + data = s.encode('hex') + tx = self.tx_from_text(data) + if not tx: + return + self.show_transaction(tx) + def read_tx_from_file(self): fileName = self.getOpenFileName(_("Select your transaction file"), "*.txn") diff --git a/gui/qt/qrtextedit.py b/gui/qt/qrtextedit.py index b490264..d6b20f3 100644 --- a/gui/qt/qrtextedit.py +++ b/gui/qt/qrtextedit.py @@ -12,7 +12,6 @@ class QRTextEdit(QPlainTextEdit): self.button.setVisible(True) self.button.clicked.connect(lambda: self.qr_show() if self.isReadOnly() else self.qr_input()) self.setText = self.setPlainText - self.scan_f = self.setText def resizeEvent(self, e): o = QPlainTextEdit.resizeEvent(self, e) @@ -36,5 +35,7 @@ class QRTextEdit(QPlainTextEdit): def qr_input(self): from electrum.plugins import run_hook - if not run_hook('scan_qr_hook', self.scan_f): - QMessageBox.warning(self, _('Error'), _('QR Scanner not enabled'), _('OK')) + data = run_hook('scan_qr_hook') + if type(data) != str: + return + self.setText(data) diff --git a/plugins/qrscanner.py b/plugins/qrscanner.py index c42347c..0ff1fe9 100644 --- a/plugins/qrscanner.py +++ b/plugins/qrscanner.py @@ -46,18 +46,14 @@ class Plugin(BasePlugin): def init(self): self.win = self.gui.main_window - self.win.raw_transaction_menu.addAction(_("&From QR code"), self.read_raw_qr) def is_available(self): return self._is_available - def scan_qr_hook(self, func): - data = self.scan_qr() - if type(data) != str: - return - func(data) + def is_enabled(self): + return True - def scan_qr(self): + def scan_qr_hook(self): proc = zbar.Processor() try: proc.init(video_device=self.video_device()) @@ -80,23 +76,6 @@ class Plugin(BasePlugin): return r.data - def read_raw_qr(self): - qrcode = self.scan_qr() - if not qrcode: - return - data = qrcode - - # transactions are binary, but qrcode seems to return utf8... - z = data.decode('utf8') - s = '' - for b in z: - s += chr(ord(b)) - data = s.encode('hex') - tx = self.win.tx_from_text(data) - if not tx: - return - self.win.show_transaction(tx) - def video_device(self): device = self.config.get("video_device", "default") if device == 'default': -- 1.7.1