from electrum import mnemonic
from electrum import util, bitcoin, commands, Interface, Wallet
from electrum import SimpleConfig, Wallet, WalletStorage
+from electrum import Imported_Wallet
from amountedit import AmountEdit, BTCAmountEdit, MyLineEdit
from network_dialog import NetworkDialog
self.save_request_button.clicked.connect(self.save_payment_request)
grid.addWidget(self.save_request_button, 3, 1)
clear_button = QPushButton(_('New'))
- clear_button.clicked.connect(self.clear_receive_tab)
+ clear_button.clicked.connect(self.new_receive_address)
grid.addWidget(clear_button, 3, 2)
grid.setRowStretch(4, 1)
self.wallet.storage.put('receive_requests', self.receive_requests)
self.update_receive_tab()
+ def new_receive_address(self):
+ domain = self.wallet.get_account_addresses(self.current_account, include_change=False)
+ for addr in domain:
+ if not self.wallet.address_is_old(addr) and addr not in self.receive_requests.keys():
+ break
+ else:
+ if isinstance(self.wallet, Imported_Wallet):
+ self.show_message(_('No more addresses in your wallet.'))
+ return
+ if not self.question(_("Warning: The next address will not be recovered automatically if you restore your wallet from seed; you may need to add it manually.\n\nThis occurs because you have too many unused addresses in your wallet. To avoid this situation, use the existing addresses first.\n\nCreate anyway?")):
+ return
+ addr = self.wallet.create_new_address(self.current_account, False)
+ self.receive_address_e.setText(addr)
+ self.receive_message_e.setText('')
+ self.receive_amount_e.setAmount(None)
+
def clear_receive_tab(self):
self.receive_requests = self.wallet.storage.get('receive_requests',{})
domain = self.wallet.get_account_addresses(self.current_account, include_change=False)
if not self.wallet.address_is_old(addr) and addr not in self.receive_requests.keys():
break
else:
- addr = ""
+ addr = ''
self.receive_address_e.setText(addr)
self.receive_message_e.setText('')
self.receive_amount_e.setAmount(None)
def get_account_addresses(self, a, include_change=True):
if a is None:
- o = self.addresses(True)
+ o = self.addresses(include_change)
elif a in self.accounts:
ac = self.accounts[a]
o = ac.get_addresses(0)
return nmax + 1
def create_new_address(self, account, for_change):
+ if account is None:
+ account = self.default_account()
address = account.create_new_address(for_change)
self.history[address] = []
self.synchronizer.add(address)
self.save_accounts()
+ return address
def synchronize_sequence(self, account, for_change):
limit = self.gap_limit_for_change if for_change else self.gap_limit
def __init__(self, storage):
Deterministic_Wallet.__init__(self, storage)
+ def default_account(self):
+ return self.accounts["m/0'"]
+
def is_watching_only(self):
return self.master_private_keys is {}
NewWallet.__init__(self, storage)
self.storage.put('wallet_type', '2of2', True)
+ def default_account(self):
+ return self.accounts['m/']
+
def can_create_accounts(self):
return False
class OldWallet(Deterministic_Wallet):
+ def default_account(self):
+ return self.accounts[0]
+
def make_seed(self):
import mnemonic
seed = random_seed(128)