Qt: make copy menus more consistent
This commit is contained in:
@@ -726,8 +726,8 @@ class HistoryList(MyTreeView, AcceptFileDragDrop):
|
|||||||
menu = QMenu()
|
menu = QMenu()
|
||||||
if tx_details.can_remove:
|
if tx_details.can_remove:
|
||||||
menu.addAction(_("Remove"), lambda: self.remove_local_tx(tx_hash))
|
menu.addAction(_("Remove"), lambda: self.remove_local_tx(tx_hash))
|
||||||
cc = self.add_copy_menu(menu, idx)
|
copy_menu = self.add_copy_menu(menu, idx)
|
||||||
cc.addAction(_("Transaction ID"), lambda: self.place_text_on_clipboard(tx_hash, title="TXID"))
|
copy_menu.addAction(_("Transaction ID"), lambda: self.place_text_on_clipboard(tx_hash, title="TXID"))
|
||||||
menu_edit = menu.addMenu(_("Edit"))
|
menu_edit = menu.addMenu(_("Edit"))
|
||||||
for c in self.editable_columns:
|
for c in self.editable_columns:
|
||||||
if self.isColumnHidden(c): continue
|
if self.isColumnHidden(c): continue
|
||||||
|
|||||||
@@ -157,12 +157,13 @@ class InvoiceList(MyTreeView):
|
|||||||
key = item_col0.data(ROLE_REQUEST_ID)
|
key = item_col0.data(ROLE_REQUEST_ID)
|
||||||
invoice = self.wallet.get_invoice(key)
|
invoice = self.wallet.get_invoice(key)
|
||||||
menu = QMenu(self)
|
menu = QMenu(self)
|
||||||
self.add_copy_menu(menu, idx)
|
copy_menu = self.add_copy_menu(menu, idx)
|
||||||
|
address = invoice.get_address()
|
||||||
|
if address:
|
||||||
|
copy_menu.addAction(_("Address"), lambda: self.parent.do_copy(invoice.get_address(), title='Bitcoin Address'))
|
||||||
if invoice.is_lightning():
|
if invoice.is_lightning():
|
||||||
menu.addAction(_("Details"), lambda: self.parent.show_lightning_invoice(invoice))
|
menu.addAction(_("Details"), lambda: self.parent.show_lightning_invoice(invoice))
|
||||||
else:
|
else:
|
||||||
if len(invoice.outputs) == 1:
|
|
||||||
menu.addAction(_("Copy Address"), lambda: self.parent.do_copy(invoice.get_address(), title='Bitcoin Address'))
|
|
||||||
menu.addAction(_("Details"), lambda: self.parent.show_onchain_invoice(invoice))
|
menu.addAction(_("Details"), lambda: self.parent.show_onchain_invoice(invoice))
|
||||||
status = wallet.get_invoice_status(invoice)
|
status = wallet.get_invoice_status(invoice)
|
||||||
if status == PR_UNPAID:
|
if status == PR_UNPAID:
|
||||||
|
|||||||
@@ -194,13 +194,13 @@ class RequestList(MyTreeView):
|
|||||||
self.update()
|
self.update()
|
||||||
return
|
return
|
||||||
menu = QMenu(self)
|
menu = QMenu(self)
|
||||||
|
copy_menu = self.add_copy_menu(menu, idx)
|
||||||
if req.get_address():
|
if req.get_address():
|
||||||
menu.addAction(_("Copy Address"), lambda: self.parent.do_copy(req.get_address(), title='Bitcoin Address'))
|
copy_menu.addAction(_("Address"), lambda: self.parent.do_copy(req.get_address(), title='Bitcoin Address'))
|
||||||
if URI := self.wallet.get_request_URI(req):
|
if URI := self.wallet.get_request_URI(req):
|
||||||
menu.addAction(_("Copy URI"), lambda: self.parent.do_copy(URI, title='Bitcoin URI'))
|
copy_menu.addAction(_("Bitcoin URI"), lambda: self.parent.do_copy(URI, title='Bitcoin URI'))
|
||||||
if req.is_lightning():
|
if req.is_lightning():
|
||||||
menu.addAction(_("Copy Lightning Request"), lambda: self.parent.do_copy(req.lightning_invoice, title='Lightning Request'))
|
copy_menu.addAction(_("Lightning Request"), lambda: self.parent.do_copy(req.lightning_invoice, title='Lightning Request'))
|
||||||
self.add_copy_menu(menu, idx)
|
|
||||||
#if 'view_url' in req:
|
#if 'view_url' in req:
|
||||||
# menu.addAction(_("View in web browser"), lambda: webopen(req['view_url']))
|
# menu.addAction(_("View in web browser"), lambda: webopen(req['view_url']))
|
||||||
menu.addAction(_("Delete"), lambda: self.delete_requests([key]))
|
menu.addAction(_("Delete"), lambda: self.delete_requests([key]))
|
||||||
|
|||||||
@@ -774,8 +774,10 @@ class MyTreeView(QTreeView):
|
|||||||
self.show_toolbar(not self.toolbar_shown, config)
|
self.show_toolbar(not self.toolbar_shown, config)
|
||||||
|
|
||||||
def add_copy_menu(self, menu: QMenu, idx) -> QMenu:
|
def add_copy_menu(self, menu: QMenu, idx) -> QMenu:
|
||||||
cc = menu.addMenu(_("Copy Column"))
|
cc = menu.addMenu(_("Copy"))
|
||||||
for column in self.Columns:
|
for column in self.Columns:
|
||||||
|
if self.isColumnHidden(column):
|
||||||
|
continue
|
||||||
column_title = self.original_model().horizontalHeaderItem(column).text()
|
column_title = self.original_model().horizontalHeaderItem(column).text()
|
||||||
if not column_title:
|
if not column_title:
|
||||||
continue
|
continue
|
||||||
|
|||||||
@@ -244,41 +244,42 @@ class UTXOList(MyTreeView):
|
|||||||
menu = QMenu()
|
menu = QMenu()
|
||||||
menu.setSeparatorsCollapsible(True) # consecutive separators are merged together
|
menu.setSeparatorsCollapsible(True) # consecutive separators are merged together
|
||||||
coins = [self._utxo_dict[name] for name in selected]
|
coins = [self._utxo_dict[name] for name in selected]
|
||||||
if coins:
|
if not coins:
|
||||||
menu_spend = menu.addMenu(_("Fully spend") + '…')
|
return
|
||||||
m = menu_spend.addAction(_("send to address in clipboard"), lambda: self.pay_to_clipboard_address(coins))
|
|
||||||
m.setEnabled(self.clipboard_contains_address())
|
|
||||||
m = menu_spend.addAction(_("in new channel"), lambda: self.open_channel_with_coins(coins))
|
|
||||||
m.setEnabled(self.can_open_channel(coins))
|
|
||||||
m = menu_spend.addAction(_("in submarine swap"), lambda: self.swap_coins(coins))
|
|
||||||
m.setEnabled(self.can_swap_coins(coins))
|
|
||||||
# coin control
|
|
||||||
if self.are_in_coincontrol(coins):
|
|
||||||
menu.addAction(_("Remove from coin control"), lambda: self.remove_from_coincontrol(coins))
|
|
||||||
else:
|
|
||||||
menu.addAction(_("Add to coin control"), lambda: self.add_to_coincontrol(coins))
|
|
||||||
|
|
||||||
if len(coins) == 1:
|
if len(coins) == 1:
|
||||||
|
idx = self.indexAt(position)
|
||||||
|
if not idx.isValid():
|
||||||
|
return
|
||||||
|
self.add_copy_menu(menu, idx)
|
||||||
utxo = coins[0]
|
utxo = coins[0]
|
||||||
addr = utxo.address
|
|
||||||
txid = utxo.prevout.txid.hex()
|
txid = utxo.prevout.txid.hex()
|
||||||
# "Details"
|
# "Details"
|
||||||
tx = self.wallet.adb.get_transaction(txid)
|
tx = self.wallet.adb.get_transaction(txid)
|
||||||
if tx:
|
if tx:
|
||||||
label = self.wallet.get_label_for_txid(txid)
|
label = self.wallet.get_label_for_txid(txid)
|
||||||
menu.addAction(_("Details"), lambda: self.parent.show_transaction(tx, tx_desc=label))
|
menu.addAction(_("Details"), lambda: self.parent.show_transaction(tx, tx_desc=label))
|
||||||
# "Copy ..."
|
# fully spend
|
||||||
idx = self.indexAt(position)
|
menu_spend = menu.addMenu(_("Fully spend") + '…')
|
||||||
if not idx.isValid():
|
m = menu_spend.addAction(_("send to address in clipboard"), lambda: self.pay_to_clipboard_address(coins))
|
||||||
return
|
m.setEnabled(self.clipboard_contains_address())
|
||||||
self.add_copy_menu(menu, idx)
|
m = menu_spend.addAction(_("in new channel"), lambda: self.open_channel_with_coins(coins))
|
||||||
# "Freeze coin"
|
m.setEnabled(self.can_open_channel(coins))
|
||||||
|
m = menu_spend.addAction(_("in submarine swap"), lambda: self.swap_coins(coins))
|
||||||
|
m.setEnabled(self.can_swap_coins(coins))
|
||||||
|
# coin control
|
||||||
|
if self.are_in_coincontrol(coins):
|
||||||
|
menu.addAction(_("Remove from coin control"), lambda: self.remove_from_coincontrol(coins))
|
||||||
|
else:
|
||||||
|
menu.addAction(_("Add to coin control"), lambda: self.add_to_coincontrol(coins))
|
||||||
|
# Freeze menu
|
||||||
|
if len(coins) == 1:
|
||||||
|
utxo = coins[0]
|
||||||
|
addr = utxo.address
|
||||||
menu_freeze = menu.addMenu(_("Freeze"))
|
menu_freeze = menu.addMenu(_("Freeze"))
|
||||||
if not self.wallet.is_frozen_coin(utxo):
|
if not self.wallet.is_frozen_coin(utxo):
|
||||||
menu_freeze.addAction(_("Freeze Coin"), lambda: self.parent.set_frozen_state_of_coins([utxo], True))
|
menu_freeze.addAction(_("Freeze Coin"), lambda: self.parent.set_frozen_state_of_coins([utxo], True))
|
||||||
else:
|
else:
|
||||||
menu_freeze.addAction(_("Unfreeze Coin"), lambda: self.parent.set_frozen_state_of_coins([utxo], False))
|
menu_freeze.addAction(_("Unfreeze Coin"), lambda: self.parent.set_frozen_state_of_coins([utxo], False))
|
||||||
# "Freeze address"
|
|
||||||
if not self.wallet.is_frozen_address(addr):
|
if not self.wallet.is_frozen_address(addr):
|
||||||
menu_freeze.addAction(_("Freeze Address"), lambda: self.parent.set_frozen_state_of_addresses([addr], True))
|
menu_freeze.addAction(_("Freeze Address"), lambda: self.parent.set_frozen_state_of_addresses([addr], True))
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user