diff --git a/electrum/plugins.json b/electrum/plugins.json index 2c63c0851..600eadcb0 100644 --- a/electrum/plugins.json +++ b/electrum/plugins.json @@ -1,2 +1,14 @@ { -} + "virtualkeyboard": { + "hash": "4ab551ec5226e7bb26e21991b33c75387e8de66bd9c5bc402e940e6f8a17050b", + "description": "Add an optional virtual keyboard to the password dialog.\nWarning: do not use this if it makes you pick a weaker password.", + "display_name": "Virtual Keyboard", + "available_for": [ + "qt" + ], + "download_url": "https://raw.githubusercontent.com/spesmilo/electrum-plugins/master/virtualkeyboard-0.0.1.zip", + "author": "The Electrum developers", + "licence": "MIT", + "version": "0.0.1" + } +} \ No newline at end of file diff --git a/electrum/plugins/virtualkeyboard/__init__.py b/electrum/plugins/virtualkeyboard/__init__.py deleted file mode 100644 index c24f19b1a..000000000 --- a/electrum/plugins/virtualkeyboard/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -from electrum.i18n import _ - -fullname = 'Virtual Keyboard' -description = '%s\n%s' % (_("Add an optional virtual keyboard to the password dialog."), _("Warning: do not use this if it makes you pick a weaker password.")) -available_for = ['qt'] diff --git a/electrum/plugins/virtualkeyboard/qt.py b/electrum/plugins/virtualkeyboard/qt.py deleted file mode 100644 index a234462af..000000000 --- a/electrum/plugins/virtualkeyboard/qt.py +++ /dev/null @@ -1,67 +0,0 @@ -import random - -from PyQt5.QtWidgets import (QVBoxLayout, QGridLayout, QPushButton) -from PyQt5.QtGui import QFontMetrics - -from electrum.plugin import BasePlugin, hook -from electrum.i18n import _ - - -class Plugin(BasePlugin): - vkb = None - vkb_index = 0 - - @hook - def password_dialog(self, pw, grid, pos): - vkb_button = QPushButton("+") - font_height = QFontMetrics(vkb_button.font()).height() - vkb_button.setFixedWidth(round(1.7 * font_height)) - vkb_button.clicked.connect(lambda: self.toggle_vkb(grid, pw)) - grid.addWidget(vkb_button, pos, 2) - self.kb_pos = 2 - self.vkb = None - - def toggle_vkb(self, grid, pw): - if self.vkb: - grid.removeItem(self.vkb) - self.vkb = self.virtual_keyboard(self.vkb_index, pw) - grid.addLayout(self.vkb, self.kb_pos, 0, 1, 3) - self.vkb_index += 1 - - def virtual_keyboard(self, i, pw): - i = i % 3 - if i == 0: - chars = 'abcdefghijklmnopqrstuvwxyz ' - elif i == 1: - chars = 'ABCDEFGHIJKLMNOPQRTSUVWXYZ ' - elif i == 2: - chars = '1234567890!?.,;:/%&()[]{}+-' - - n = len(chars) - s = [] - for i in range(n): - while True: - k = random.randint(0, n - 1) - if k not in s: - s.append(k) - break - - def add_target(t): - return lambda: pw.setText(str(pw.text()) + t) - - font_height = QFontMetrics(QPushButton().font()).height() - btn_size = max(25, round(1.7 * font_height)) - - vbox = QVBoxLayout() - grid = QGridLayout() - grid.setSpacing(2) - for i in range(n): - l_button = QPushButton(chars[s[i]]) - l_button.setFixedWidth(btn_size) - l_button.setFixedHeight(btn_size) - l_button.clicked.connect(add_target(chars[s[i]])) - grid.addWidget(l_button, i // 6, i % 6) - - vbox.addLayout(grid) - - return vbox