Пример #1
0
    def __init__(self):
        super(AccountController, self).__init__()

        self.widget = QWidget(self)
        bg_layout = QVBoxLayout(self)
        bg_layout.setMargin(0)
        bg_layout.addWidget(self.widget)

        layout = QVBoxLayout()
        layout.setContentsMargins(0, 50, 0, 50)
        accounts = Wallet().wallet_dict.keys()

        self.current_account_idx = Wallet().get_current_wallet_idx()

        for idx, account in enumerate(accounts):
            btn = AccountIcon(account)
            btn.idx = idx
            btn.setChecked(idx == self.current_account_idx)
            layout.addWidget(btn)
            btn.clicked.connect(partial(self.switch_account, btn))

        self.add_account_btn = QPushButton()
        self.add_account_btn.setText(u'新建')
        self.add_account_btn.setProperty('class', 'addAccount QPushButton')
        self.add_account_btn.clicked.connect(self.add_account)
        layout.addWidget(self.add_account_btn)

        layout.addItem(QSpacerItem(0, 0, QSizePolicy.Minimum, QSizePolicy.Expanding))
        self.widget.setLayout(layout)
        self.account_layout = layout

        Wallet().new_wallet_event.append(self.add_wallet)
Пример #2
0
    def __init__(self):
        super(ReceiveController, self).__init__()

        if Wallet().current_wallet is not None:
            self.address = Wallet().current_wallet.address  # 'mzSwHcXhWF8bgLtxF7NXE8FF1w8BZhQwSj'
        else:
            self.address = ''
        layout = QVBoxLayout()

        self.addressTB = QTextEdit()
        self.addressTB.setMaximumHeight(20)
        self.addressTB.setMaximumWidth(300)
        self.addressTB.setText(self.address)
        layout.addWidget(self.addressTB)

        self.qrcode = QLabel(self)
        self.qrcode.setMaximumWidth(300)
        self.qrcode.setMaximumHeight(300)
        self.qrcode.setProperty('class', 'bigQRCode QLabel')
        layout.addWidget(self.qrcode)
        self.qrcode.setPixmap(
            qrcode.make(self.address, image_factory=Image, box_size=8).pixmap())
        layout.addItem(QSpacerItem(0, 0, QSizePolicy.Minimum, QSizePolicy.Expanding))
        self.setLayout(layout)

        Wallet().current_wallet_changed_event.append(self.update_address)
Пример #3
0
 def update_data_source(self, **kwargs):
     if Wallet().current_wallet is not None:
         Wallet().current_wallet.wallet_tx_changed_event.append(self.show)
         txs = Wallet().current_wallet.get_txs()
         data_source = [[e['tx_hash'], self.dt_to_qdt(e['tx_time']), e['tx_delta']] for e in txs]
         self.tx_table_view.data_source = data_source
         self.tx_table_view.reload()
Пример #4
0
    def __init__(self):
        super(TabController, self).__init__()
        layout = QVBoxLayout()
        layout.setMargin(0)
        layout.addWidget(TxFilterView())

        self.tx_table_view = TxTableView([])
        layout.addWidget(self.tx_table_view)
        self.update_data_source()
        self.setLayout(layout)
        Wallet().current_wallet_changed_event.append(self.update_data_source)
        if Wallet().current_wallet is not None:
            Wallet().current_wallet.wallet_tx_changed_event.append(self.update_data_source)
Пример #5
0
 def send(self):
     try:
         address = self.send_view.dest_address_tb.text()
         amount = self.send_view.output_value_edit.text()
         verification.check_address(address)
         verification.check_amount(amount)
         outputs = [Output((TYPE_ADDRESS, address,
                            int(amount)))]
         tx = Wallet().current_wallet.make_unsigned_transaction(
             Wallet().current_wallet.get_utxo(),
             outputs, {})
         Wallet().current_wallet.sign_transaction(tx, None)
         tx_detail_dialog = TxDetailDialog(self)
         tx_detail_dialog.tx_detail_view.show_tx(tx)
         tx_detail_dialog.exec_()
     except Exception as ex:
         MessageBox(ex.message).exec_()
Пример #6
0
 def accept(self):
     # wallet_id = str(len(Wallet().wallet_dict.keys())) + str(random.randint(0,9))
     wallet_id = str(Wallet().get_next_wallet_id())
     wallet = Wallet().init_wallet('simple', wallet_id + '.json')
     s = self.tab_widget.currentWidget().get_secret()
     secret = s.decode('hex')
     wallet.init_key_store(
         SimpleKeyStore.create(SecretToASecret(secret, True), None))
     wallet.sync()
     Wallet().new_wallet(wallet_id, 'simple', wallet_id + '.json', wallet)
     self.close()
Пример #7
0
    def __init__(self):
        super(NavController, self).__init__()

        self.widget = QWidget(self)
        bg_layout = QVBoxLayout(self)
        bg_layout.setMargin(0)
        bg_layout.addWidget(self.widget)

        self.parent_controller = None
        layout = QVBoxLayout()

        addressDesc = QLabel(u"我的地址")
        addressDesc.setProperty('class', 'addressDesc QLabel')
        layout.addWidget(addressDesc)
        self.address_view = MainAddressView()
        layout.addWidget(self.address_view)
        # layout.setContentsMargins(20, 0, 20, 0)

        balanceDesc = QLabel(u"余额")
        balanceDesc.setProperty('class', 'balanceDesc QLabel')
        layout.addWidget(balanceDesc)
        self.balance_view = BalanceView()
        layout.addWidget(self.balance_view)
        self.func_list = FuncList()
        layout.addWidget(self.func_list)
        layout.addItem(QSpacerItem(0, 0, QSizePolicy.Minimum, QSizePolicy.Expanding))
        self.widget.setLayout(layout)

        self.tx_log_btn = self.func_list.tx_log_btn
        self.tx_log_btn.setChecked(True)
        self.receive_btn = self.func_list.receive_btn
        self.send_btn = self.func_list.send_btn

        self.show()
        Wallet().current_wallet_changed_event.append(self.show)
        if Wallet().current_wallet is not None:
            Wallet().current_wallet.wallet_tx_changed_event.append(self.show)
Пример #8
0
 def update_address(self, **kwargs):
     self.address = Wallet().current_wallet.address
     self.addressTB.setText(self.address)
     self.qrcode.setPixmap(
         qrcode.make(self.address, image_factory=Image, box_size=8).pixmap())
Пример #9
0
 def show(self, **kwargs):
     super(NavController, self).show()
     if Wallet().current_wallet is not None:
         Wallet().current_wallet.wallet_tx_changed_event.append(self.show)
         self.address_view.set_address(Wallet().current_wallet.address)
         self.balance_view.set_blance(Wallet().current_wallet.balance)
Пример #10
0
 def add_wallet(self, wallet_name):
     btn = AccountIcon(wallet_name)
     btn.idx = len(Wallet().wallet_dict.keys()) - 1
     self.account_layout.insertWidget(btn.idx, btn)
     btn.clicked.connect(partial(self.switch_account, btn))
     self.switch_account(btn)
Пример #11
0
 def switch_account(self, btn):
     btn.setChecked(True)
     if self.current_account_idx != btn.idx:
         Wallet().change_current_wallet(btn.idx)
         self.selected_account(btn.idx)