Exemplo n.º 1
0
 def multi_mpk_dialog(self, xpub_hot, n):
     vbox = QVBoxLayout()
     vbox0, seed_e0 = seed_dialog.enter_seed_box(MSG_SHOW_MPK, 'hot')
     vbox.addLayout(vbox0)
     seed_e0.setText(xpub_hot)
     seed_e0.setReadOnly(True)
     entries = []
     for i in range(n):
         vbox2, seed_e2 = seed_dialog.enter_seed_box(
             MSG_ENTER_COLD_MPK, 'cold')
         vbox.addLayout(vbox2)
         entries.append(seed_e2)
     vbox.addStretch(1)
     hbox, button = ok_cancel_buttons2(self, _('Next'))
     vbox.addLayout(hbox)
     button.setEnabled(False)
     f = lambda: button.setEnabled(
         map(lambda e: Wallet.is_xpub(self.get_seed_text(e)), entries) ==
         [True] * len(entries))
     for e in entries:
         e.textChanged.connect(f)
     self.set_layout(vbox)
     if not self.exec_():
         return
     return map(lambda e: self.get_seed_text(e), entries)
Exemplo n.º 2
0
    def multi_seed_dialog(self, n):
        vbox = QVBoxLayout()
        scroll = QScrollArea()
        scroll.setEnabled(True)
        scroll.setWidgetResizable(True)
        vbox.addWidget(scroll)

        w = QWidget()
        scroll.setWidget(w)

        innerVbox = QVBoxLayout()
        w.setLayout(innerVbox)

        vbox1, seed_e1 = seed_dialog.enter_seed_box(MSG_ENTER_SEED_OR_MPK, self, 'hot')
        innerVbox.addLayout(vbox1)
        entries = [seed_e1]
        for i in range(n):
            vbox2, seed_e2 = seed_dialog.enter_seed_box(MSG_ENTER_SEED_OR_MPK, self, 'cold')
            innerVbox.addLayout(vbox2)
            entries.append(seed_e2)
        vbox.addStretch(1)
        button = OkButton(self, _('Next'))
        vbox.addLayout(Buttons(CancelButton(self), button))
        button.setEnabled(False)
        f = lambda: button.setEnabled( map(lambda e: self.is_any(self.get_seed_text(e)), entries) == [True]*len(entries))
        for e in entries:
            e.textChanged.connect(f)
        self.set_layout(vbox)
        if not self.exec_():
            return
        return map(lambda e: self.get_seed_text(e), entries)
Exemplo n.º 3
0
    def multi_seed_dialog(self, n):
        vbox = QVBoxLayout()
        vbox1, seed_e1 = seed_dialog.enter_seed_box(MSG_ENTER_SEED_OR_MPK,
                                                    'hot')
        vbox.addLayout(vbox1)
        entries = [seed_e1]
        for i in range(n):
            vbox2, seed_e2 = seed_dialog.enter_seed_box(
                MSG_ENTER_SEED_OR_MPK, 'cold')
            vbox.addLayout(vbox2)
            entries.append(seed_e2)
        vbox.addStretch(1)
        hbox, button = ok_cancel_buttons2(self, _('Next'))
        vbox.addLayout(hbox)
        button.setEnabled(False)

        f = lambda: button.setEnabled(
            map(lambda e: self.is_any(self.get_seed_text(e)), entries) ==
            [True] * len(entries))
        for e in entries:
            e.textChanged.connect(f)

        self.set_layout(vbox)
        if not self.exec_():
            return
        return map(lambda e: self.get_seed_text(e), entries)
Exemplo n.º 4
0
    def multi_seed_dialog(self, n):
        vbox = QVBoxLayout()
        scroll = QScrollArea()
        scroll.setEnabled(True)
        scroll.setWidgetResizable(True)
        vbox.addWidget(scroll)

        w = QWidget()
        scroll.setWidget(w)

        innerVbox = QVBoxLayout()
        w.setLayout(innerVbox)

        vbox1, seed_e1 = seed_dialog.enter_seed_box(MSG_ENTER_SEED_OR_MPK,
                                                    self, 'hot')
        innerVbox.addLayout(vbox1)
        entries = [seed_e1]
        for i in range(n):
            vbox2, seed_e2 = seed_dialog.enter_seed_box(
                MSG_ENTER_SEED_OR_MPK, self, 'cold')
            innerVbox.addLayout(vbox2)
            entries.append(seed_e2)
        vbox.addStretch(1)
        button = OkButton(self, _('Next'))
        vbox.addLayout(Buttons(CancelButton(self), button))
        button.setEnabled(False)
        f = lambda: button.setEnabled(
            map(lambda e: self.is_any(self.get_seed_text(e)), entries) ==
            [True] * len(entries))
        for e in entries:
            e.textChanged.connect(f)
        self.set_layout(vbox)
        if not self.exec_():
            return
        return map(lambda e: self.get_seed_text(e), entries)
Exemplo n.º 5
0
    def request_many(self, n, xpub_hot=None):
        vbox = QVBoxLayout()
        scroll = QScrollArea()
        scroll.setEnabled(True)
        scroll.setWidgetResizable(True)
        vbox.addWidget(scroll)

        w = QWidget()
        scroll.setWidget(w)

        innerVbox = QVBoxLayout()
        w.setLayout(innerVbox)

        entries = []
        if xpub_hot:
            vbox0 = seed_dialog.show_seed_box(MSG_SHOW_MPK, xpub_hot, "hot")
        else:
            vbox0, seed_e1 = seed_dialog.enter_seed_box(MSG_ENTER_SEED_OR_MPK, self, "hot")
            entries.append(seed_e1)
        innerVbox.addLayout(vbox0)

        for i in range(n):
            if xpub_hot:
                msg = MSG_COSIGNER % (i + 1)
            else:
                msg = MSG_ENTER_SEED_OR_MPK
            vbox2, seed_e2 = seed_dialog.enter_seed_box(msg, self, "cold")
            innerVbox.addLayout(vbox2)
            entries.append(seed_e2)

        vbox.addStretch(1)
        button = OkButton(self, _("Next"))
        vbox.addLayout(Buttons(CancelButton(self), button))
        button.setEnabled(False)

        def get_texts():
            return [self.get_seed_text(entry) for entry in entries]

        def set_enabled():
            texts = get_texts()
            is_valid = Wallet.is_xpub if xpub_hot else Wallet.is_any
            all_valid = all(is_valid(text) for text in texts)
            if xpub_hot:
                texts.append(xpub_hot)
            has_dups = len(set(texts)) < len(texts)
            button.setEnabled(all_valid and not has_dups)

        for e in entries:
            e.textChanged.connect(set_enabled)
        self.set_layout(vbox)
        if not self.exec_():
            raise UserCancelled
        return get_texts()
Exemplo n.º 6
0
    def multi_mpk_dialog(self, xpub_hot, n):
        vbox = QVBoxLayout()
        scroll = QScrollArea()
        scroll.setEnabled(True)
        scroll.setWidgetResizable(True)
        vbox.addWidget(scroll)

        w = QWidget()
        scroll.setWidget(w)

        innerVbox = QVBoxLayout()
        w.setLayout(innerVbox)

        vbox0 = seed_dialog.show_seed_box(MSG_SHOW_MPK, xpub_hot, 'hot')
        innerVbox.addLayout(vbox0)
        entries = []
        for i in range(n):
            msg = _("Please enter the master public key of cosigner") + ' %d'%(i+1)
            vbox2, seed_e2 = seed_dialog.enter_seed_box(msg, self, 'cold')
            innerVbox.addLayout(vbox2)
            entries.append(seed_e2)
        vbox.addStretch(1)
        button = OkButton(self, _('Next'))
        vbox.addLayout(Buttons(CancelButton(self), button))
        button.setEnabled(False)
        f = lambda: button.setEnabled( map(lambda e: Wallet.is_xpub(self.get_seed_text(e)), entries) == [True]*len(entries))
        for e in entries:
            e.textChanged.connect(f)
        self.set_layout(vbox)
        if not self.exec_():
            return
        return map(lambda e: self.get_seed_text(e), entries)
Exemplo n.º 7
0
    def multi_mpk_dialog(self, xpub_hot, n):
        vbox = QVBoxLayout()
        scroll = QScrollArea()
        scroll.setEnabled(True)
        scroll.setWidgetResizable(True)
        vbox.addWidget(scroll)

        w = QWidget()
        scroll.setWidget(w)

        innerVbox = QVBoxLayout()
        w.setLayout(innerVbox)

        vbox0 = seed_dialog.show_seed_box(MSG_SHOW_MPK, xpub_hot, 'hot')
        innerVbox.addLayout(vbox0)
        entries = []
        for i in range(n):
            msg = _("Please enter the master public key of cosigner"
                    ) + ' %d' % (i + 1)
            vbox2, seed_e2 = seed_dialog.enter_seed_box(msg, self, 'cold')
            innerVbox.addLayout(vbox2)
            entries.append(seed_e2)
        vbox.addStretch(1)
        button = OkButton(self, _('Next'))
        vbox.addLayout(Buttons(CancelButton(self), button))
        button.setEnabled(False)
        f = lambda: button.setEnabled(
            map(lambda e: Wallet.is_xpub(self.get_seed_text(e)), entries) ==
            [True] * len(entries))
        for e in entries:
            e.textChanged.connect(f)
        self.set_layout(vbox)
        if not self.exec_():
            return
        return map(lambda e: self.get_seed_text(e), entries)
 def double_seed_dialog(self):
     vbox = QVBoxLayout()
     vbox1, seed_e1 = seed_dialog.enter_seed_box(MSG_ENTER_SEED_OR_MPK, 'hot')
     vbox2, seed_e2 = seed_dialog.enter_seed_box(MSG_ENTER_SEED_OR_MPK, 'cold')
     vbox.addLayout(vbox1)
     vbox.addLayout(vbox2)
     vbox.addStretch(1)
     hbox, button = ok_cancel_buttons2(self, _('Next'))
     vbox.addLayout(hbox)
     button.setEnabled(False)
     f = lambda: button.setEnabled(self.is_any(seed_e1) and self.is_any(seed_e2))
     seed_e1.textChanged.connect(f)
     seed_e2.textChanged.connect(f)
     self.set_layout(vbox)
     if not self.exec_():
         return 
     return self.get_seed_text(seed_e1), self.get_seed_text(seed_e2)
Exemplo n.º 9
0
 def double_seed_dialog(self):
     vbox = QVBoxLayout()
     vbox1, seed_e1 = seed_dialog.enter_seed_box(MSG_ENTER_SEED_OR_MPK, 'hot')
     vbox2, seed_e2 = seed_dialog.enter_seed_box(MSG_ENTER_SEED_OR_MPK, 'cold')
     vbox.addLayout(vbox1)
     vbox.addLayout(vbox2)
     vbox.addStretch(1)
     hbox, button = ok_cancel_buttons2(self, _('Next'))
     vbox.addLayout(hbox)
     button.setEnabled(False)
     f = lambda: button.setEnabled(self.is_any(seed_e1) and self.is_any(seed_e2))
     seed_e1.textChanged.connect(f)
     seed_e2.textChanged.connect(f)
     self.set_layout(vbox)
     if not self.exec_():
         return 
     return self.get_seed_text(seed_e1), self.get_seed_text(seed_e2)
Exemplo n.º 10
0
 def cold_mpk_dialog(self, xpub_hot):
     vbox = QVBoxLayout()
     vbox1, seed_e1 = seed_dialog.enter_seed_box(MSG_SHOW_MPK, 'hot')
     seed_e1.setText(xpub_hot)
     seed_e1.setReadOnly(True)
     vbox2, seed_e2 = seed_dialog.enter_seed_box(MSG_ENTER_COLD_MPK, 'cold')
     vbox.addLayout(vbox1)
     vbox.addLayout(vbox2)
     vbox.addStretch(1)
     hbox, button = ok_cancel_buttons2(self, _('Next'))
     vbox.addLayout(hbox)
     button.setEnabled(False)
     f = lambda: button.setEnabled(self.is_mpk(seed_e2))
     seed_e2.textChanged.connect(f)
     self.set_layout(vbox)
     if not self.exec_():
         return 
     return self.get_seed_text(seed_e2)
Exemplo n.º 11
0
 def cold_mpk_dialog(self, xpub_hot):
     vbox = QVBoxLayout()
     vbox1, seed_e1 = seed_dialog.enter_seed_box(MSG_SHOW_MPK, 'hot')
     seed_e1.setText(xpub_hot)
     seed_e1.setReadOnly(True)
     vbox2, seed_e2 = seed_dialog.enter_seed_box(MSG_ENTER_COLD_MPK, 'cold')
     vbox.addLayout(vbox1)
     vbox.addLayout(vbox2)
     vbox.addStretch(1)
     hbox, button = ok_cancel_buttons2(self, _('Next'))
     vbox.addLayout(hbox)
     button.setEnabled(False)
     f = lambda: button.setEnabled(self.is_mpk(seed_e2))
     seed_e2.textChanged.connect(f)
     self.set_layout(vbox)
     if not self.exec_():
         return 
     return self.get_seed_text(seed_e2)
Exemplo n.º 12
0
 def enter_seed_dialog(self, msg, sid):
     vbox, seed_e = seed_dialog.enter_seed_box(msg, sid)
     vbox.addStretch(1)
     hbox, button = ok_cancel_buttons2(self, _('Next'))
     vbox.addLayout(hbox)
     button.setEnabled(False)
     seed_e.textChanged.connect(lambda: button.setEnabled(self.is_any(seed_e)))
     self.set_layout(vbox)
     if not self.exec_():
         return
     return self.get_seed_text(seed_e)
Exemplo n.º 13
0
 def enter_seed_dialog(self, msg, sid, func=None):
     if func is None:
         func = self.is_any
     vbox, seed_e = seed_dialog.enter_seed_box(msg, self, sid)
     vbox.addStretch(1)
     button = OkButton(self, _('Next'))
     vbox.addLayout(Buttons(CancelButton(self), button))
     button.setEnabled(False)
     seed_e.textChanged.connect(lambda: button.setEnabled(func(self.get_seed_text(seed_e))))
     self.set_layout(vbox)
     if not self.exec_():
         return
     return self.get_seed_text(seed_e)
Exemplo n.º 14
0
    def multi_seed_dialog(self, n):
        vbox = QVBoxLayout()
        vbox1, seed_e1 = seed_dialog.enter_seed_box(MSG_ENTER_SEED_OR_MPK, 'hot')
        vbox.addLayout(vbox1)
        entries = [seed_e1]
        for i in range(n):
            vbox2, seed_e2 = seed_dialog.enter_seed_box(MSG_ENTER_SEED_OR_MPK, 'cold')
            vbox.addLayout(vbox2)
            entries.append(seed_e2)
        vbox.addStretch(1)
        hbox, button = ok_cancel_buttons2(self, _('Next'))
        vbox.addLayout(hbox)
        button.setEnabled(False)

        f = lambda: button.setEnabled( map(lambda e: self.is_any(self.get_seed_text(e)), entries) == [True]*len(entries))
        for e in entries:
            e.textChanged.connect(f)

        self.set_layout(vbox)
        if not self.exec_():
            return 
        return map(lambda e: self.get_seed_text(e), entries)
Exemplo n.º 15
0
 def multi_mpk_dialog(self, xpub_hot, n):
     vbox = QVBoxLayout()
     vbox0, seed_e0 = seed_dialog.enter_seed_box(MSG_SHOW_MPK, 'hot')
     vbox.addLayout(vbox0)
     seed_e0.setText(xpub_hot)
     seed_e0.setReadOnly(True)
     entries = []
     for i in range(n):
         vbox2, seed_e2 = seed_dialog.enter_seed_box(MSG_ENTER_COLD_MPK, 'cold')
         vbox.addLayout(vbox2)
         entries.append(seed_e2)
     vbox.addStretch(1)
     hbox, button = ok_cancel_buttons2(self, _('Next'))
     vbox.addLayout(hbox)
     button.setEnabled(False)
     f = lambda: button.setEnabled( map(lambda e: Wallet.is_xpub(self.get_seed_text(e)), entries) == [True]*len(entries))
     for e in entries:
         e.textChanged.connect(f)
     self.set_layout(vbox)
     if not self.exec_():
         return
     return map(lambda e: self.get_seed_text(e), entries)
Exemplo n.º 16
0
 def enter_seed_dialog(self, msg, sid, func=None):
     if func is None:
         func = self.is_any
     vbox, seed_e = seed_dialog.enter_seed_box(msg, self, sid)
     vbox.addStretch(1)
     button = OkButton(self, _('Next'))
     vbox.addLayout(Buttons(CancelButton(self), button))
     button.setEnabled(False)
     seed_e.textChanged.connect(lambda: button.setEnabled(func(self.get_seed_text(seed_e))))
     self.set_layout(vbox)
     if not self.exec_():
         return
     return self.get_seed_text(seed_e)
Exemplo n.º 17
0
 def request_seed(self, msg, is_valid=None):
     is_valid = is_valid or Wallet.is_any
     vbox, seed_e = seed_dialog.enter_seed_box(msg, self)
     vbox.addStretch(1)
     button = OkButton(self, _('Next'))
     vbox.addLayout(Buttons(CancelButton(self), button))
     button.setEnabled(False)
     def set_enabled():
         button.setEnabled(is_valid(self.get_seed_text(seed_e)))
     seed_e.textChanged.connect(set_enabled)
     self.set_layout(vbox)
     if not self.exec_():
         raise UserCancelled
     return self.get_seed_text(seed_e)