correct right-click menu during multiple-select

Correct right-click menu during multiple-select in Receive
This commit is contained in:
kazcw 2013-11-14 21:10:52 -05:00 committed by ThomasV
parent ae028e780d
commit ce0a33cb67
1 changed files with 47 additions and 34 deletions

View File

@ -1010,20 +1010,22 @@ class ElectrumWindow(QMainWindow):
entry.setPalette(palette) entry.setPalette(palette)
def toggle_freeze(self,addr): def set_addrs_frozen(self,addrs,freeze):
if not addr: return for addr in addrs:
if addr in self.wallet.frozen_addresses: if not addr: continue
self.wallet.unfreeze(addr) if addr in self.wallet.frozen_addresses and not freeze:
else: self.wallet.unfreeze(addr)
self.wallet.freeze(addr) elif addr not in self.wallet.frozen_addresses and freeze:
self.wallet.freeze(addr)
self.update_receive_tab() self.update_receive_tab()
def toggle_priority(self,addr): def set_addrs_prioritized(self,addrs,prioritize):
if not addr: return for addr in addrs:
if addr in self.wallet.prioritized_addresses: if not addr: continue
self.wallet.unprioritize(addr) if addr in self.wallet.prioritized_addresses and not prioritize:
else: self.wallet.unprioritize(addr)
self.wallet.prioritize(addr) elif addr not in self.wallet.prioritized_addresses and prioritize:
self.wallet.prioritize(addr)
self.update_receive_tab() self.update_receive_tab()
@ -1136,32 +1138,43 @@ class ElectrumWindow(QMainWindow):
# if it is not called the menu pops up several times # if it is not called the menu pops up several times
#self.receive_list.selectedIndexes() #self.receive_list.selectedIndexes()
item = self.receive_list.itemAt(position) selected = self.receive_list.selectedItems()
if not item: return multi_select = len(selected) > 1
addrs = [unicode(item.text(0)) for item in selected]
if not multi_select:
item = self.receive_list.itemAt(position)
if not item: return
addr = unicode(item.text(0)) addr = addrs[0]
if not is_valid(addr): if not is_valid(addr):
k = str(item.data(0,32).toString()) k = str(item.data(0,32).toString())
if k: if k:
self.create_account_menu(position, k, item) self.create_account_menu(position, k, item)
else: else:
item.setExpanded(not item.isExpanded()) item.setExpanded(not item.isExpanded())
return return
menu = QMenu() menu = QMenu()
menu.addAction(_("Copy to clipboard"), lambda: self.app.clipboard().setText(addr)) if not multi_select:
menu.addAction(_("QR code"), lambda: self.show_qrcode("bitcoin:" + addr, _("Address")) ) menu.addAction(_("Copy to clipboard"), lambda: self.app.clipboard().setText(addr))
menu.addAction(_("Edit label"), lambda: self.edit_label(True)) menu.addAction(_("QR code"), lambda: self.show_qrcode("bitcoin:" + addr, _("Address")) )
if self.wallet.seed: menu.addAction(_("Edit label"), lambda: self.edit_label(True))
menu.addAction(_("Private key"), lambda: self.show_private_key(addr)) if self.wallet.seed:
menu.addAction(_("Sign message"), lambda: self.sign_message(addr)) menu.addAction(_("Private key"), lambda: self.show_private_key(addr))
if addr in self.wallet.imported_keys: menu.addAction(_("Sign message"), lambda: self.sign_message(addr))
menu.addAction(_("Remove from wallet"), lambda: self.delete_imported_key(addr)) if addr in self.wallet.imported_keys:
menu.addAction(_("Remove from wallet"), lambda: self.delete_imported_key(addr))
t = _("Unfreeze") if addr in self.wallet.frozen_addresses else _("Freeze") if any(addr not in self.wallet.frozen_addresses for addr in addrs):
menu.addAction(t, lambda: self.toggle_freeze(addr)) menu.addAction(_("Freeze"), lambda: self.set_addrs_frozen(addrs, True))
t = _("Unprioritize") if addr in self.wallet.prioritized_addresses else _("Prioritize") if any(addr in self.wallet.frozen_addresses for addr in addrs):
menu.addAction(t, lambda: self.toggle_priority(addr)) menu.addAction(_("Unfreeze"), lambda: self.set_addrs_frozen(addrs, False))
if any(addr not in self.wallet.prioritized_addresses for addr in addrs):
menu.addAction(_("Prioritize"),
lambda: self.set_addrs_prioritized(addrs, True))
if any(addr in self.wallet.prioritized_addresses for addr in addrs):
menu.addAction(_("Unprioritize"),
lambda: self.set_addrs_prioritized(addrs, False))
total = 0 total = 0
for item in self.receive_list.selectedItems(): for item in self.receive_list.selectedItems():