electrum

Electrum Bitcoin wallet
git clone https://git.parazyd.org/electrum
Log | Files | Refs | Submodules

commit 34cb1f6620dbaffe963c89eba1e0d8e65bd48539
parent dd849964d1c3aebebd52d28221ec24c25839f6d5
Author: ThomasV <thomasv@gitorious>
Date:   Fri,  5 Sep 2014 16:14:40 +0200

simplify install wizard

Diffstat:
Mgui/qt/installwizard.py | 96++++++++++++++++++++++++++++++++++++++++---------------------------------------
1 file changed, 49 insertions(+), 47 deletions(-)

diff --git a/gui/qt/installwizard.py b/gui/qt/installwizard.py @@ -58,69 +58,40 @@ class InstallWizard(QDialog): grid = QGridLayout() grid.setSpacing(5) - label = QLabel(_("What do you want to do?")) - label.setWordWrap(True) - grid.addWidget(label, 0, 0) - - gb1 = QGroupBox() - grid.addWidget(gb1, 0, 0) - - group1 = QButtonGroup() + gb1 = QGroupBox(_("What do you want to do?")) + vbox.addWidget(gb1) b1 = QRadioButton(gb1) b1.setText(_("Create new wallet")) b1.setChecked(True) - b2 = QRadioButton(gb1) b2.setText(_("Restore an existing wallet")) - + group1 = QButtonGroup() group1.addButton(b1) group1.addButton(b2) + vbox.addWidget(b1) + vbox.addWidget(b2) - grid.addWidget(b1, 1, 0) - grid.addWidget(b2, 2, 0) - vbox.addLayout(grid) - - grid2 = QGridLayout() - grid2.setSpacing(5) - - class ClickableLabel(QLabel): - def mouseReleaseEvent(self, ev): - self.emit(SIGNAL('clicked()')) - - label2 = ClickableLabel(_("Wallet type:") + " [+]") - hbox = QHBoxLayout() - hbox.addWidget(label2) - grid2.addLayout(hbox, 0, 0) - - gb2 = QGroupBox() - grid.addWidget(gb2, 3, 0) + gb2 = QGroupBox(_("Wallet type:")) + vbox.addWidget(gb2) group2 = QButtonGroup() - self.wallet_types = filter(lambda x: x[0] not in ['old','xpub','imported'], electrum.wallet.wallet_types) - for i, (t,l,c) in enumerate(self.wallet_types): + self.wallet_types = [ + ('standard', _("Standard wallet")), + #('2fa', _("Wallet with two-factor authentication")), + ('multisig', _("Multi-signatures wallet")), + ('hardware', _("Hardware wallet")), + ] + + for i, (t,l) in enumerate(self.wallet_types): button = QRadioButton(gb2) button.setText(l) - grid2.addWidget(button, i+1, 0) + vbox.addWidget(button) group2.addButton(button) group2.setId(button, i) if i==0: button.setChecked(True) - #else: - # button.setHidden(True) - - def toggle(): - buttons = group2.buttons() - x = buttons[1].isHidden() - label2.setText(_("Wallet type:") + (' [+]' if x else ' [-]')) - for b in buttons[1:]: - b.setHidden(not x) - - self.connect(label2, SIGNAL('clicked()'), toggle) - grid2.addWidget(label2) - - vbox.addLayout(grid2) vbox.addStretch(1) hbox, button = ok_cancel_buttons2(self, _('Next')) vbox.addLayout(hbox) @@ -292,7 +263,6 @@ class InstallWizard(QDialog): return - def show_message(self, msg, icon=None): vbox = QVBoxLayout() self.set_layout(vbox) @@ -307,6 +277,29 @@ class InstallWizard(QDialog): return None + def choice(self, title, msg, choices): + vbox = QVBoxLayout() + self.set_layout(vbox) + vbox.addWidget(QLabel(title)) + gb2 = QGroupBox(msg) + vbox.addWidget(gb2) + group2 = QButtonGroup() + for i,c in enumerate(choices): + button = QRadioButton(gb2) + button.setText(c[1]) + vbox.addWidget(button) + group2.addButton(button) + group2.setId(button, i) + if i==0: + button.setChecked(True) + vbox.addStretch(1) + vbox.addLayout(ok_cancel_buttons(self, _("Next"))) + if not self.exec_(): + return + wallet_type = choices[group2.checkedId()][0] + return wallet_type + + def question(self, msg, yes_label=_('OK'), no_label=_('Cancel'), icon=None): vbox = QVBoxLayout() self.set_layout(vbox) @@ -314,7 +307,6 @@ class InstallWizard(QDialog): logo = QLabel() logo.setPixmap(icon) vbox.addWidget(logo) - label = QLabel(msg) label.setWordWrap(True) vbox.addWidget(label) @@ -347,6 +339,16 @@ class InstallWizard(QDialog): if action == 'new': action, wallet_type = self.restore_or_create() + if wallet_type == 'multisig': + wallet_type = self.choice(_("Multi Signature Wallet"), 'Select wallet type', [('2of2', _("2 of 2")),('2of3',_("2 of 3"))]) + if not wallet_type: + return + elif wallet_type == 'hardware': + hardware_wallets = [('trezor',_("Trezor")), ('btchip',_("BTChip"))] + wallet_type = self.choice(_("Hardware Wallet"), 'Select your hardware wallet', hardware_wallets) + if not wallet_type: + return + if action == 'create': self.storage.put('wallet_type', wallet_type)