qt: consistently show tooltip when copying to clipboard
This commit is contained in:
@@ -251,11 +251,11 @@ class AddressList(MyTreeView):
|
||||
run_hook('receive_menu', menu, addrs, self.wallet)
|
||||
menu.exec_(self.viewport().mapToGlobal(position))
|
||||
|
||||
def place_text_on_clipboard(self, text):
|
||||
def place_text_on_clipboard(self, text: str, *, title: str = None) -> None:
|
||||
if is_address(text):
|
||||
try:
|
||||
self.wallet.check_address(text)
|
||||
except InternalAddressCorruption as e:
|
||||
self.parent.show_error(str(e))
|
||||
raise
|
||||
self.parent.app.clipboard().setText(text)
|
||||
super().place_text_on_clipboard(text, title=title)
|
||||
|
||||
@@ -85,7 +85,7 @@ class ContactList(MyTreeView):
|
||||
column_title = self.model().horizontalHeaderItem(column).text()
|
||||
column_data = '\n'.join(self.model().itemFromIndex(s_idx).text()
|
||||
for s_idx in self.selected_in_column(column))
|
||||
menu.addAction(_("Copy {}").format(column_title), lambda: self.parent.app.clipboard().setText(column_data))
|
||||
menu.addAction(_("Copy {}").format(column_title), lambda: self.place_text_on_clipboard(column_data, title=column_title))
|
||||
if column in self.editable_columns:
|
||||
item = self.model().itemFromIndex(idx)
|
||||
if item.isEditable():
|
||||
|
||||
@@ -597,7 +597,9 @@ class HistoryList(MyTreeView, AcceptFileDragDrop):
|
||||
column_title = self.hm.headerData(column, Qt.Horizontal, Qt.DisplayRole)
|
||||
idx2 = idx.sibling(idx.row(), column)
|
||||
column_data = (self.hm.data(idx2, Qt.DisplayRole).value() or '').strip()
|
||||
cc.addAction(column_title, lambda t=column_data: self.parent.app.clipboard().setText(t))
|
||||
cc.addAction(column_title,
|
||||
lambda text=column_data, title=column_title:
|
||||
self.place_text_on_clipboard(text, title=title))
|
||||
|
||||
def create_menu(self, position: QPoint):
|
||||
org_idx: QModelIndex = self.indexAt(position)
|
||||
@@ -620,7 +622,7 @@ class HistoryList(MyTreeView, AcceptFileDragDrop):
|
||||
menu = QMenu()
|
||||
if height in [TX_HEIGHT_FUTURE, TX_HEIGHT_LOCAL]:
|
||||
menu.addAction(_("Remove"), lambda: self.remove_local_tx(tx_hash))
|
||||
menu.addAction(_("Copy Transaction ID"), lambda: self.parent.app.clipboard().setText(tx_hash))
|
||||
menu.addAction(_("Copy Transaction ID"), lambda: self.place_text_on_clipboard(tx_hash, title="TXID"))
|
||||
self.add_copy_menu(menu, idx)
|
||||
for c in self.editable_columns:
|
||||
if self.isColumnHidden(c): continue
|
||||
|
||||
@@ -45,7 +45,7 @@ from PyQt5.QtWidgets import (QMessageBox, QComboBox, QSystemTrayIcon, QTabWidget
|
||||
QVBoxLayout, QGridLayout, QLineEdit,
|
||||
QHBoxLayout, QPushButton, QScrollArea, QTextEdit,
|
||||
QShortcut, QMainWindow, QCompleter, QInputDialog,
|
||||
QWidget, QSizePolicy, QStatusBar)
|
||||
QWidget, QSizePolicy, QStatusBar, QToolTip)
|
||||
|
||||
import electrum
|
||||
from electrum import (keystore, ecc, constants, util, bitcoin, commands,
|
||||
@@ -1115,9 +1115,13 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger):
|
||||
self.sign_payment_request(addr)
|
||||
return addr
|
||||
|
||||
def do_copy(self, title, content):
|
||||
def do_copy(self, content: str, *, title: str = None) -> None:
|
||||
self.app.clipboard().setText(content)
|
||||
self.show_message(_(f"{title} copied to clipboard:\n\n{content}"))
|
||||
if title is None:
|
||||
tooltip_text = _("Text copied to clipboard").format(title)
|
||||
else:
|
||||
tooltip_text = _("{} copied to clipboard").format(title)
|
||||
QToolTip.showText(QCursor.pos(), tooltip_text, self)
|
||||
|
||||
def export_payment_request(self, addr):
|
||||
r = self.wallet.receive_requests.get(addr)
|
||||
|
||||
@@ -161,10 +161,10 @@ class RequestList(MyTreeView):
|
||||
menu = QMenu(self)
|
||||
self.add_copy_menu(menu, idx)
|
||||
if request_type == PR_TYPE_LN:
|
||||
menu.addAction(_("Copy Request"), lambda: self.parent.do_copy('Lightning Request', req['invoice']))
|
||||
menu.addAction(_("Copy Request"), lambda: self.parent.do_copy(req['invoice'], title='Lightning Request'))
|
||||
else:
|
||||
menu.addAction(_("Copy Request"), lambda: self.parent.do_copy('Bitcoin URI', req['URI']))
|
||||
menu.addAction(_("Copy Address"), lambda: self.parent.do_copy('Bitcoin Address', req['address']))
|
||||
menu.addAction(_("Copy Request"), lambda: self.parent.do_copy(req['URI'], title='Bitcoin URI'))
|
||||
menu.addAction(_("Copy Address"), lambda: self.parent.do_copy(req['address'], title='Bitcoin Address'))
|
||||
if 'view_url' in req:
|
||||
menu.addAction(_("View in web browser"), lambda: webopen(req['view_url']))
|
||||
menu.addAction(_("Delete"), lambda: self.parent.delete_request(key))
|
||||
|
||||
@@ -261,7 +261,7 @@ class BaseTxDialog(QDialog, MessageBoxMixin):
|
||||
def copy_to_clipboard(self, *, tx: Transaction = None):
|
||||
if tx is None:
|
||||
tx = self.tx
|
||||
self.main_window.app.clipboard().setText(str(tx))
|
||||
self.main_window.do_copy(str(tx), title=_("Transaction"))
|
||||
|
||||
def show_qr(self, *, tx: Transaction = None):
|
||||
if tx is None:
|
||||
|
||||
@@ -634,10 +634,12 @@ class MyTreeView(QTreeView):
|
||||
column_title = self.model().horizontalHeaderItem(column).text()
|
||||
item_col = self.model().itemFromIndex(idx.sibling(idx.row(), column))
|
||||
column_data = item_col.text().strip()
|
||||
cc.addAction(column_title, lambda t=column_data: self.place_text_on_clipboard(t))
|
||||
cc.addAction(column_title,
|
||||
lambda text=column_data, title=column_title:
|
||||
self.place_text_on_clipboard(text, title=title))
|
||||
|
||||
def place_text_on_clipboard(self, text):
|
||||
self.parent.app.clipboard().setText(text)
|
||||
def place_text_on_clipboard(self, text: str, *, title: str = None) -> None:
|
||||
self.parent.do_copy(text, title=title)
|
||||
|
||||
|
||||
class ButtonsWidget(QWidget):
|
||||
|
||||
Reference in New Issue
Block a user