from sys import stdout from PyQt4.QtGui import * from PyQt4.QtCore import * import PyQt4.QtCore as QtCore import electrum from electrum.i18n import _ import seed_dialog from network_dialog import NetworkDialog from util import * from password_dialog import PasswordDialog from electrum.wallet import Wallet from electrum.mnemonic import prepare_seed from electrum.wizard import (WizardBase, UserCancelled, MSG_ENTER_PASSWORD, MSG_RESTORE_PASSPHRASE, MSG_COSIGNER, MSG_ENTER_SEED_OR_MPK, MSG_SHOW_MPK, MSG_VERIFY_SEED, MSG_GENERATING_WAIT) class CosignWidget(QWidget): size = 120 def __init__(self, m, n): QWidget.__init__(self) self.R = QRect(0, 0, self.size, self.size) self.setGeometry(self.R) self.m = m self.n = n def set_n(self, n): self.n = n self.update() def set_m(self, m): self.m = m self.update() def paintEvent(self, event): import math bgcolor = self.palette().color(QPalette.Background) pen = QPen(bgcolor, 7, QtCore.Qt.SolidLine) qp = QPainter() qp.begin(self) qp.setPen(pen) qp.setRenderHint(QPainter.Antialiasing) qp.setBrush(Qt.gray) for i in range(self.n): alpha = int(16* 360 * i/self.n) alpha2 = int(16* 360 * 1/self.n) qp.setBrush(Qt.green if i 50: label = QLabel(msg) label.setWordWrap(True) vbox.addWidget(label) msg = "" gb2 = QGroupBox(msg) vbox.addWidget(gb2) vbox2 = QVBoxLayout() gb2.setLayout(vbox2) group2 = QButtonGroup() for i,c in enumerate(choices): button = QRadioButton(gb2) button.setText(c) vbox2.addWidget(button) group2.addButton(button) group2.setId(button, i) if i==0: button.setChecked(True) vbox.addStretch(1) next_button = OkButton(self, _('Next')) next_button.setEnabled(bool(choices)) vbox.addLayout(Buttons(CancelButton(self), next_button)) if not self.exec_(): raise UserCancelled return group2.checkedId() def query_multisig(self, action): vbox = QVBoxLayout() self.set_layout(vbox) vbox.addWidget(QLabel(_("Multi Signature Wallet"))) cw = CosignWidget(2, 2) vbox.addWidget(cw, 1) vbox.addWidget(QLabel(_("Please choose the number of signatures needed to unlock funds in your wallet") + ':')) m_edit = QSpinBox() n_edit = QSpinBox() m_edit.setValue(2) n_edit.setValue(2) n_edit.setMinimum(2) n_edit.setMaximum(15) m_edit.setMinimum(1) m_edit.setMaximum(2) n_edit.valueChanged.connect(m_edit.setMaximum) n_edit.valueChanged.connect(cw.set_n) m_edit.valueChanged.connect(cw.set_m) hbox = QHBoxLayout() hbox.addWidget(QLabel(_('Require'))) hbox.addWidget(m_edit) hbox.addWidget(QLabel(_('of'))) hbox.addWidget(n_edit) hbox.addWidget(QLabel(_('signatures'))) hbox.addStretch(1) vbox.addLayout(hbox) vbox.addStretch(1) vbox.addLayout(Buttons(CancelButton(self), OkButton(self, _('Next')))) if not self.exec_(): raise UserCancelled m = int(m_edit.value()) n = int(n_edit.value()) wallet_type = '%dof%d'%(m,n) return wallet_type def show_seed(self, seed): vbox = seed_dialog.show_seed_box_msg(seed, None) vbox.addLayout(Buttons(CancelButton(self), OkButton(self, _("Next")))) self.set_layout(vbox) if not self.exec_(): raise UserCancelled