tmove pending accounts logic into wallet.py - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit a9d341ec9c5d8fe48d3a8c718e6c41e9183f0a71 DIR parent 4652783cfd015d93c848d4c5e94406e28edd6cbc HTML Author: thomasv <thomasv@gitorious> Date: Sat, 12 Oct 2013 13:55:48 +0200 move pending accounts logic into wallet.py Diffstat: M gui/qt/main_window.py | 16 ++++------------ M lib/wallet.py | 29 ++++++++++++++++++++++++++--- 2 files changed, 30 insertions(+), 15 deletions(-) --- DIR diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py t@@ -270,7 +270,6 @@ class ElectrumWindow(QMainWindow): self.wallet = wallet self.accounts_expanded = self.wallet.storage.get('accounts_expanded',{}) self.current_account = self.wallet.storage.get("current_account", None) - self.pending_accounts = self.wallet.storage.get('pending_accounts',{}) title = 'Electrum ' + self.wallet.electrum_version + ' - ' + self.wallet.storage.path if self.wallet.is_watching_only(): title += ' [%s]' % (_('watching only')) t@@ -1093,13 +1092,12 @@ class ElectrumWindow(QMainWindow): menu.addAction(_("Maximize"), lambda: self.account_set_expanded(item, k, True)) menu.addAction(_("Rename"), lambda: self.edit_account_label(k)) menu.addAction(_("View details"), lambda: self.show_account_details(k)) - if k in self.pending_accounts: + if self.wallet.account_is_pending(k): menu.addAction(_("Delete"), lambda: self.delete_pending_account(k)) menu.exec_(self.receive_list.viewport().mapToGlobal(position)) def delete_pending_account(self, k): - self.pending_accounts.pop(k) - self.wallet.storage.put('pending_accounts', self.pending_accounts) + self.wallet.delete_pending_account(k) self.update_receive_tab() def create_receive_menu(self, position): t@@ -1250,10 +1248,7 @@ class ElectrumWindow(QMainWindow): seq_item.addChild(item) - for k, addr in self.pending_accounts.items(): - if k in self.wallet.accounts: - self.pending_accounts.pop(k) - self.wallet.storage.put('pending_accounts', self.pending_accounts) + for k, addr in self.wallet.get_pending_accounts(): name = self.wallet.labels.get(k,'') account_item = QTreeWidgetItem( [ name + " [ "+_('pending account')+" ]", '', '', ''] ) self.update_receive_item(item) t@@ -1455,10 +1450,7 @@ class ElectrumWindow(QMainWindow): name = str(e.text()) if not name: return - k, addr = self.wallet.new_account_address() - self.wallet.set_label(k, name) - self.pending_accounts[k] = addr - self.wallet.storage.put('pending_accounts', self.pending_accounts) + self.wallet.create_pending_account('1', name) self.update_receive_tab() self.tabs.setCurrentIndex(2) DIR diff --git a/lib/wallet.py b/lib/wallet.py t@@ -425,11 +425,15 @@ class Wallet: def create_account(self, account_type = '1', name = None): - account_id, account = self.next_account(account_type) - self.accounts[account_id] = account + k, account = self.next_account(account_type) + if k in self.pending_accounts: + self.pending_accounts.pop(k) + self.storage.put('pending_accounts', self.pending_accounts) + + self.accounts[k] = account self.save_accounts() if name: - self.set_label(account_id, name) + self.set_label(k, name) def create_old_account(self): t@@ -459,6 +463,25 @@ class Wallet: else: self.accounts[k] = BIP32_Account(v) + self.pending_accounts = self.storage.get('pending_accounts',{}) + + + def delete_pending_account(self, k): + self.pending_accounts.pop(k) + self.storage.put('pending_accounts', self.pending_accounts) + + def account_is_pending(self, k): + return k in self.pending_accounts + + def create_pending_account(self, acct_type, name): + k, addr = self.new_account_address(acct_type) + self.set_label(k, name) + self.pending_accounts[k] = addr + self.storage.put('pending_accounts', self.pending_accounts) + + def get_pending_accounts(self): + return self.pending_accounts.items() + def addresses(self, include_change = True, _next=True): o = self.get_account_addresses(-1, include_change)