Improve Master Public Keys dialog
- Put the radio buttons inside the group box - Share more code between the have-group-box and not cases - Use ChoicesLayout - Don't use cosigner terminology unless it's a Multisig wallet
This commit is contained in:
parent
b120dd8849
commit
45f518e191
|
@ -43,7 +43,7 @@ from electrum.util import PrintError, NotEnoughFunds, StoreDict
|
||||||
from electrum import Transaction, mnemonic
|
from electrum import Transaction, mnemonic
|
||||||
from electrum import util, bitcoin, commands
|
from electrum import util, bitcoin, commands
|
||||||
from electrum import SimpleConfig, COIN_CHOOSERS, paymentrequest
|
from electrum import SimpleConfig, COIN_CHOOSERS, paymentrequest
|
||||||
from electrum.wallet import Wallet, BIP32_RD_Wallet
|
from electrum.wallet import Wallet, BIP32_RD_Wallet, Multisig_Wallet
|
||||||
|
|
||||||
from amountedit import BTCAmountEdit, MyLineEdit, BTCkBEdit
|
from amountedit import BTCAmountEdit, MyLineEdit, BTCkBEdit
|
||||||
from network_dialog import NetworkDialog
|
from network_dialog import NetworkDialog
|
||||||
|
@ -1955,41 +1955,29 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
|
||||||
dialog = WindowModalDialog(self, "Master Public Keys")
|
dialog = WindowModalDialog(self, "Master Public Keys")
|
||||||
mpk_dict = self.wallet.get_master_public_keys()
|
mpk_dict = self.wallet.get_master_public_keys()
|
||||||
vbox = QVBoxLayout()
|
vbox = QVBoxLayout()
|
||||||
|
mpk_text = ShowQRTextEdit()
|
||||||
|
mpk_text.setMaximumHeight(100)
|
||||||
|
mpk_text.addCopyButton(self.app)
|
||||||
|
sorted_keys = sorted(mpk_dict.keys())
|
||||||
|
def show_mpk(index):
|
||||||
|
mpk_text.setText(mpk_dict[sorted_keys[index]])
|
||||||
|
|
||||||
# only show the combobox in case multiple accounts are available
|
# only show the combobox in case multiple accounts are available
|
||||||
if len(mpk_dict) > 1:
|
if len(mpk_dict) > 1:
|
||||||
gb = QGroupBox(_("Master Public Keys"))
|
def label(key):
|
||||||
vbox.addWidget(gb)
|
if isinstance(self.wallet, Multisig_Wallet):
|
||||||
group = QButtonGroup()
|
is_mine = self.wallet.master_private_keys.has_key(key)
|
||||||
first_button = None
|
mine_text = [_("cosigner"), _("self")]
|
||||||
for key in sorted(mpk_dict.keys()):
|
return "%s (%s)" % (key, mine_text[is_mine])
|
||||||
is_mine = self.wallet.master_private_keys.has_key(key)
|
return key
|
||||||
b = QRadioButton(gb)
|
labels = list(map(label, sorted_keys))
|
||||||
name = 'Self' if is_mine else 'Cosigner'
|
on_click = lambda clayout: show_mpk(clayout.selected_index())
|
||||||
b.setText(name + ' (%s)'%key)
|
labels_clayout = ChoicesLayout(_("Master Public Keys"), labels,
|
||||||
b.key = key
|
on_click)
|
||||||
group.addButton(b)
|
vbox.addLayout(labels_clayout.layout())
|
||||||
vbox.addWidget(b)
|
|
||||||
if not first_button:
|
|
||||||
first_button = b
|
|
||||||
|
|
||||||
mpk_text = ShowQRTextEdit()
|
show_mpk(0)
|
||||||
mpk_text.setMaximumHeight(170)
|
vbox.addWidget(mpk_text)
|
||||||
vbox.addWidget(mpk_text)
|
|
||||||
|
|
||||||
def show_mpk(b):
|
|
||||||
mpk = mpk_dict.get(b.key, "")
|
|
||||||
mpk_text.setText(mpk)
|
|
||||||
|
|
||||||
group.buttonReleased.connect(show_mpk)
|
|
||||||
first_button.setChecked(True)
|
|
||||||
show_mpk(first_button)
|
|
||||||
elif len(mpk_dict) == 1:
|
|
||||||
mpk = mpk_dict.values()[0]
|
|
||||||
mpk_text = ShowQRTextEdit(text=mpk)
|
|
||||||
mpk_text.setMaximumHeight(170)
|
|
||||||
vbox.addWidget(mpk_text)
|
|
||||||
|
|
||||||
mpk_text.addCopyButton(self.app)
|
|
||||||
vbox.addLayout(Buttons(CloseButton(dialog)))
|
vbox.addLayout(Buttons(CloseButton(dialog)))
|
||||||
dialog.setLayout(vbox)
|
dialog.setLayout(vbox)
|
||||||
dialog.exec_()
|
dialog.exec_()
|
||||||
|
|
|
@ -1,12 +1,14 @@
|
||||||
from electrum.i18n import _
|
|
||||||
from PyQt4.QtGui import *
|
|
||||||
from PyQt4.QtCore import *
|
|
||||||
import os.path
|
import os.path
|
||||||
import time
|
import time
|
||||||
import traceback
|
import traceback
|
||||||
import sys
|
import sys
|
||||||
import threading
|
import threading
|
||||||
import platform
|
import platform
|
||||||
|
from functools import partial
|
||||||
|
|
||||||
|
from electrum.i18n import _
|
||||||
|
from PyQt4.QtGui import *
|
||||||
|
from PyQt4.QtCore import *
|
||||||
|
|
||||||
if platform.system() == 'Windows':
|
if platform.system() == 'Windows':
|
||||||
MONOSPACE_FONT = 'Lucida Console'
|
MONOSPACE_FONT = 'Lucida Console'
|
||||||
|
@ -267,7 +269,7 @@ def text_dialog(parent, title, label, ok_label, default=None):
|
||||||
return unicode(txt.toPlainText())
|
return unicode(txt.toPlainText())
|
||||||
|
|
||||||
class ChoicesLayout(object):
|
class ChoicesLayout(object):
|
||||||
def __init__(self, msg, choices):
|
def __init__(self, msg, choices, on_clicked=None):
|
||||||
vbox = QVBoxLayout()
|
vbox = QVBoxLayout()
|
||||||
if len(msg) > 50:
|
if len(msg) > 50:
|
||||||
label = QLabel(msg)
|
label = QLabel(msg)
|
||||||
|
@ -289,6 +291,10 @@ class ChoicesLayout(object):
|
||||||
group.setId(button, i)
|
group.setId(button, i)
|
||||||
if i==0:
|
if i==0:
|
||||||
button.setChecked(True)
|
button.setChecked(True)
|
||||||
|
|
||||||
|
if on_clicked:
|
||||||
|
group.buttonClicked.connect(partial(on_clicked, self))
|
||||||
|
|
||||||
self.vbox = vbox
|
self.vbox = vbox
|
||||||
|
|
||||||
def layout(self):
|
def layout(self):
|
||||||
|
|
Loading…
Reference in New Issue