From 7f8d667e851c0f066fcdc13acbdf5caa1001333f Mon Sep 17 00:00:00 2001 From: SomberNight Date: Fri, 21 Feb 2020 18:32:58 +0100 Subject: [PATCH] Revert "qt/hww: temporarily bundle our own version of safetlib.qt.pinmatrix" This reverts commit 7f3de8241c3856c2e873c5f6e9fa513f454e5d9b. (can finally undo this due to bb94712a1490399d49bca812bd95ff3859b07b24) --- contrib/build-wine/deterministic.spec | 4 - contrib/osx/osx.spec | 5 - electrum/plugins/safe_t/pinmatrix.py | 138 -------------------------- electrum/plugins/safe_t/qt.py | 5 +- 4 files changed, 1 insertion(+), 151 deletions(-) delete mode 100644 electrum/plugins/safe_t/pinmatrix.py diff --git a/contrib/build-wine/deterministic.spec b/contrib/build-wine/deterministic.spec index 79d86067d..c41f79b83 100644 --- a/contrib/build-wine/deterministic.spec +++ b/contrib/build-wine/deterministic.spec @@ -24,10 +24,6 @@ hiddenimports += collect_submodules('websocket') hiddenimports += collect_submodules('ckcc') hiddenimports += ['PyQt5.QtPrintSupport'] # needed by Revealer -# safetlib imports PyQt5.Qt. We use a local updated copy of pinmatrix.py until they -# release a new version that includes https://github.com/archos-safe-t/python-safet/commit/b1eab3dba4c04fdfc1fcf17b66662c28c5f2380e -hiddenimports.remove('safetlib.qt.pinmatrix') - binaries = [] diff --git a/contrib/osx/osx.spec b/contrib/osx/osx.spec index 99bb79c44..af1a67191 100644 --- a/contrib/osx/osx.spec +++ b/contrib/osx/osx.spec @@ -67,11 +67,6 @@ hiddenimports += collect_submodules('websocket') hiddenimports += collect_submodules('ckcc') hiddenimports += ['PyQt5.QtPrintSupport'] # needed by Revealer -# safetlib imports PyQt5.Qt. We use a local updated copy of pinmatrix.py until they -# release a new version that includes https://github.com/archos-safe-t/python-safet/commit/b1eab3dba4c04fdfc1fcf17b66662c28c5f2380e -hiddenimports.remove('safetlib.qt.pinmatrix') - - datas = [ (electrum + PYPKG + '/*.json', PYPKG), (electrum + PYPKG + '/wordlist/english.txt', PYPKG + '/wordlist'), diff --git a/electrum/plugins/safe_t/pinmatrix.py b/electrum/plugins/safe_t/pinmatrix.py deleted file mode 100644 index 803d98078..000000000 --- a/electrum/plugins/safe_t/pinmatrix.py +++ /dev/null @@ -1,138 +0,0 @@ -# copy of https://raw.githubusercontent.com/archos-safe-t/python-safet/b1eab3dba4c04fdfc1fcf17b66662c28c5f2380e/trezorlib/qt/pinmatrix.py - -from __future__ import print_function -import sys -import math - -try: - from PyQt4.QtGui import (QPushButton, QLineEdit, QSizePolicy, QRegExpValidator, QLabel, - QApplication, QWidget, QGridLayout, QVBoxLayout, QHBoxLayout) - from PyQt4.QtCore import QObject, SIGNAL, QRegExp, Qt, QT_VERSION_STR -except: - from PyQt5.QtWidgets import (QPushButton, QLineEdit, QSizePolicy, QLabel, - QApplication, QWidget, QGridLayout, QVBoxLayout, QHBoxLayout) - from PyQt5.QtGui import QRegExpValidator - from PyQt5.QtCore import QRegExp, Qt, QT_VERSION_STR - - -class PinButton(QPushButton): - def __init__(self, password, encoded_value): - super(PinButton, self).__init__('?') - self.password = password - self.encoded_value = encoded_value - - if QT_VERSION_STR >= '5': - self.clicked.connect(self._pressed) - elif QT_VERSION_STR >= '4': - QObject.connect(self, SIGNAL('clicked()'), self._pressed) - else: - raise RuntimeError('Unsupported Qt version') - - def _pressed(self): - self.password.setText(self.password.text() + str(self.encoded_value)) - self.password.setFocus() - - -class PinMatrixWidget(QWidget): - ''' - Displays widget with nine blank buttons and password box. - Encodes button clicks into sequence of numbers for passing - into PinAck messages of TREZOR. - - show_strength=True may be useful for entering new PIN - ''' - def __init__(self, show_strength=True, parent=None): - super(PinMatrixWidget, self).__init__(parent) - - self.password = QLineEdit() - self.password.setValidator(QRegExpValidator(QRegExp('[1-9]+'), None)) - self.password.setEchoMode(QLineEdit.Password) - - if QT_VERSION_STR >= '5': - self.password.textChanged.connect(self._password_changed) - elif QT_VERSION_STR >= '4': - QObject.connect(self.password, SIGNAL('textChanged(QString)'), self._password_changed) - else: - raise RuntimeError('Unsupported Qt version') - - self.strength = QLabel() - self.strength.setMinimumWidth(75) - self.strength.setAlignment(Qt.AlignCenter) - self._set_strength(0) - - grid = QGridLayout() - grid.setSpacing(0) - for y in range(3)[::-1]: - for x in range(3): - button = PinButton(self.password, x + y * 3 + 1) - button.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) - button.setFocusPolicy(Qt.NoFocus) - grid.addWidget(button, 3 - y, x) - - hbox = QHBoxLayout() - hbox.addWidget(self.password) - if show_strength: - hbox.addWidget(self.strength) - - vbox = QVBoxLayout() - vbox.addLayout(grid) - vbox.addLayout(hbox) - self.setLayout(vbox) - - def _set_strength(self, strength): - if strength < 3000: - self.strength.setText('weak') - self.strength.setStyleSheet("QLabel { color : #d00; }") - elif strength < 60000: - self.strength.setText('fine') - self.strength.setStyleSheet("QLabel { color : #db0; }") - elif strength < 360000: - self.strength.setText('strong') - self.strength.setStyleSheet("QLabel { color : #0a0; }") - else: - self.strength.setText('ULTIMATE') - self.strength.setStyleSheet("QLabel { color : #000; font-weight: bold;}") - - def _password_changed(self, password): - self._set_strength(self.get_strength()) - - def get_strength(self): - digits = len(set(str(self.password.text()))) - strength = math.factorial(9) / math.factorial(9 - digits) - return strength - - def get_value(self): - return self.password.text() - - -if __name__ == '__main__': - ''' - Demo application showing PinMatrix widget in action - ''' - app = QApplication(sys.argv) - - matrix = PinMatrixWidget() - - def clicked(): - print("PinMatrix value is", matrix.get_value()) - print("Possible button combinations:", matrix.get_strength()) - sys.exit() - - ok = QPushButton('OK') - if QT_VERSION_STR >= '5': - ok.clicked.connect(clicked) - elif QT_VERSION_STR >= '4': - QObject.connect(ok, SIGNAL('clicked()'), clicked) - else: - raise RuntimeError('Unsupported Qt version') - - vbox = QVBoxLayout() - vbox.addWidget(matrix) - vbox.addWidget(ok) - - w = QWidget() - w.setLayout(vbox) - w.move(100, 100) - w.show() - - app.exec_() diff --git a/electrum/plugins/safe_t/qt.py b/electrum/plugins/safe_t/qt.py index ae5aa2b74..224eec802 100644 --- a/electrum/plugins/safe_t/qt.py +++ b/electrum/plugins/safe_t/qt.py @@ -178,10 +178,7 @@ class Plugin(SafeTPlugin, QtPlugin): @classmethod def pin_matrix_widget_class(self): - # We use a local updated copy of pinmatrix.py until safetlib - # releases a new version that includes https://github.com/archos-safe-t/python-safet/commit/b1eab3dba4c04fdfc1fcf17b66662c28c5f2380e - # from safetlib.qt.pinmatrix import PinMatrixWidget - from .pinmatrix import PinMatrixWidget + from safetlib.qt.pinmatrix import PinMatrixWidget return PinMatrixWidget