Browse Source

receive tab: copy to clipboard when tab is changed

master
ThomasV 3 years ago
parent
commit
292ce35945
  1. 36
      electrum/gui/qt/receive_tab.py

36
electrum/gui/qt/receive_tab.py

@ -161,9 +161,8 @@ class ReceiveTab(QWidget, MessageBoxMixin, Logger):
self.receive_tabs.addTab(self.receive_URI_widget, read_QIcon("link.png"), _('URI'))
self.receive_tabs.addTab(self.receive_address_widget, read_QIcon("bitcoin.png"), _('Address'))
self.receive_tabs.addTab(self.receive_lightning_widget, read_QIcon("lightning.png"), _('Lightning'))
self.receive_tabs.currentChanged.connect(self.update_receive_qr_window)
self.receive_tabs.setCurrentIndex(self.config.get('receive_tabs_index', 0))
self.receive_tabs.currentChanged.connect(lambda i: self.config.set_key('receive_tabs_index', i))
self.receive_tabs.currentChanged.connect(self.on_tab_changed)
receive_tabs_sp = QSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.MinimumExpanding)
receive_tabs_sp.setRetainSizeWhenHidden(True)
self.receive_tabs.setSizePolicy(receive_tabs_sp)
@ -195,6 +194,12 @@ class ReceiveTab(QWidget, MessageBoxMixin, Logger):
vbox.setStretchFactor(self.request_list, 60)
self.request_list.update() # after parented and put into a layout, can update without flickering
def on_tab_changed(self, i):
self.config.set_key('receive_tabs_index', i)
title, data = self.get_tab_data(i)
self.window.do_copy(data, title=title)
self.update_receive_qr_window()
def toggle_receive_qr(self, e):
if e.button() != Qt.LeftButton:
return
@ -236,7 +241,6 @@ class ReceiveTab(QWidget, MessageBoxMixin, Logger):
self.receive_tabs.setTabIcon(2, read_QIcon(icon_name))
# encode lightning invoices as uppercase so QR encoding can use
# alphanumeric mode; resulting in smaller QR codes
lnaddr_qr = lnaddr.upper()
self.receive_address_e.setText(addr)
self.receive_address_qr.setData(addr)
self.receive_address_help_text.setText(address_help)
@ -245,7 +249,7 @@ class ReceiveTab(QWidget, MessageBoxMixin, Logger):
self.receive_URI_help.setText(URI_help)
self.receive_lightning_e.setText(lnaddr) # TODO maybe prepend "lightning:" ??
self.receive_lightning_help_text.setText(ln_help)
self.receive_lightning_qr.setData(lnaddr_qr)
self.receive_lightning_qr.setData(lnaddr.upper())
self.update_textedit_warning(text_e=self.receive_address_e, warning_text=address_help)
self.update_textedit_warning(text_e=self.receive_URI_e, warning_text=URI_help)
self.update_textedit_warning(text_e=self.receive_lightning_e, warning_text=ln_help)
@ -257,15 +261,20 @@ class ReceiveTab(QWidget, MessageBoxMixin, Logger):
self.receive_tabs.setVisible(True)
self.update_receive_qr_window()
def get_tab_data(self, i):
if i == 0:
return _('Bitcoin URI'), self.receive_URI_e.text()
elif i == 1:
return _('Address'), self.receive_address_e.text()
else:
return _('Lightning Request'), self.receive_lightning_e.text()
def update_receive_qr_window(self):
if self.window.qr_window and self.window.qr_window.isVisible():
i = self.receive_tabs.currentIndex()
if i == 0:
data = self.receive_URI_qr.data
elif i == 1:
data = self.receive_address_qr.data
else:
data = self.receive_lightning_qr.data
title, data = self.get_tab_data(i)
if i == 2:
data = data.upper()
self.window.qr_window.qrw.setData(data)
def create_invoice(self):
@ -301,11 +310,8 @@ class ReceiveTab(QWidget, MessageBoxMixin, Logger):
# clear request fields
self.receive_amount_e.setText('')
self.receive_message_e.setText('')
# copy to clipboard
r = self.wallet.get_request(key)
content = r.lightning_invoice if r.is_lightning() else r.get_address()
title = _('Invoice') if r.is_lightning() else _('Address')
self.window.do_copy(content, title=title)
# copy current tab to clipboard
self.on_tab_changed(self.receive_tabs.currentIndex())
def get_bitcoin_address_for_request(self, amount) -> Optional[str]:
addr = self.wallet.get_unused_address()

Loading…
Cancel
Save