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)
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)
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()
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)
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_()
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()
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)
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())
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)
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)
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)