always enable qr scanner plugin
This commit is contained in:
parent
4da85c00e3
commit
81d1e67253
|
@ -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")
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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':
|
||||
|
|
Loading…
Reference in New Issue