Browse Source

qt: PayToEdit: fix input_qr_from_camera

closes https://github.com/spesmilo/electrum/issues/8342

probably regression from 1f4cedf56a
master
SomberNight 3 years ago
parent
commit
417423ecd7
No known key found for this signature in database
GPG Key ID: B33B5F232C6271E9
  1. 1
      electrum/gui/qt/paytoedit.py
  2. 1
      electrum/gui/qt/qrreader/__init__.py
  3. 6
      electrum/gui/qt/qrreader/qtmultimedia/camera_dialog.py
  4. 5
      electrum/gui/qt/util.py

1
electrum/gui/qt/paytoedit.py

@ -129,6 +129,7 @@ class PayToEdit(Logger, GenericInputHandler):
allow_multi=False, allow_multi=False,
show_error=self.win.show_error, show_error=self.win.show_error,
setText=self._on_input_btn, setText=self._on_input_btn,
parent=self.win,
) )
self.on_qr_from_screenshot_input_btn = partial( self.on_qr_from_screenshot_input_btn = partial(
self.input_qr_from_screenshot, self.input_qr_from_screenshot,

1
electrum/gui/qt/qrreader/__init__.py

@ -49,6 +49,7 @@ def scan_qrcode(
callback: Callable[[bool, str, Optional[str]], None], callback: Callable[[bool, str, Optional[str]], None],
) -> None: ) -> None:
"""Scans QR code using camera.""" """Scans QR code using camera."""
assert parent is None or isinstance(parent, QWidget), f"parent should be a QWidget, not {parent!r}"
if sys.platform == 'darwin' or sys.platform in ('windows', 'win32'): if sys.platform == 'darwin' or sys.platform in ('windows', 'win32'):
_scan_qrcode_using_qtmultimedia(parent=parent, config=config, callback=callback) _scan_qrcode_using_qtmultimedia(parent=parent, config=config, callback=callback)
else: # desktop Linux and similar else: # desktop Linux and similar

6
electrum/gui/qt/qrreader/qtmultimedia/camera_dialog.py

@ -27,10 +27,10 @@ import time
import math import math
import sys import sys
import os import os
from typing import List from typing import List, Optional
from PyQt5.QtMultimedia import QCameraInfo, QCamera, QCameraViewfinderSettings from PyQt5.QtMultimedia import QCameraInfo, QCamera, QCameraViewfinderSettings
from PyQt5.QtWidgets import QDialog, QVBoxLayout, QHBoxLayout, QCheckBox, QPushButton, QLabel from PyQt5.QtWidgets import QDialog, QVBoxLayout, QHBoxLayout, QCheckBox, QPushButton, QLabel, QWidget
from PyQt5.QtGui import QImage, QPixmap from PyQt5.QtGui import QImage, QPixmap
from PyQt5.QtCore import QSize, QRect, Qt, pyqtSignal, PYQT_VERSION from PyQt5.QtCore import QSize, QRect, Qt, pyqtSignal, PYQT_VERSION
@ -68,7 +68,7 @@ class QrReaderCameraDialog(Logger, MessageBoxMixin, QDialog):
qr_finished = pyqtSignal(bool, str, object) qr_finished = pyqtSignal(bool, str, object)
def __init__(self, parent, *, config: SimpleConfig): def __init__(self, parent: Optional[QWidget], *, config: SimpleConfig):
''' Note: make sure parent is a "top_level_window()" as per ''' Note: make sure parent is a "top_level_window()" as per
MessageBoxMixin API else bad things can happen on macOS. ''' MessageBoxMixin API else bad things can happen on macOS. '''
QDialog.__init__(self, parent=parent) QDialog.__init__(self, parent=parent)

5
electrum/gui/qt/util.py

@ -547,6 +547,7 @@ class GenericInputHandler:
allow_multi: bool = False, allow_multi: bool = False,
show_error: Callable[[str], None], show_error: Callable[[str], None],
setText: Callable[[str], None] = None, setText: Callable[[str], None] = None,
parent: QWidget = None,
) -> None: ) -> None:
if setText is None: if setText is None:
setText = self.setText setText = self.setText
@ -564,7 +565,9 @@ class GenericInputHandler:
setText(new_text) setText(new_text)
from .qrreader import scan_qrcode from .qrreader import scan_qrcode
scan_qrcode(parent=self, config=config, callback=cb) if parent is None:
parent = self if isinstance(self, QWidget) else None
scan_qrcode(parent=parent, config=config, callback=cb)
def input_qr_from_screenshot( def input_qr_from_screenshot(
self, self,

Loading…
Cancel
Save