move virtualkeyboard plugin to other repo
add plugin metadata to electrum/plugins.json
This commit is contained in:
@@ -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"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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']
|
|
||||||
@@ -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
|
|
||||||
Reference in New Issue
Block a user