diff --git a/electrum/gui/qt/receive_tab.py b/electrum/gui/qt/receive_tab.py index cfa9d38ca..73ee71564 100644 --- a/electrum/gui/qt/receive_tab.py +++ b/electrum/gui/qt/receive_tab.py @@ -175,10 +175,16 @@ class ReceiveTab(QWidget, MessageBoxMixin, Logger): from .request_list import RequestList self.request_list = RequestList(self) self.toolbar, menu = self.request_list.create_toolbar_with_menu('') + menu.addConfig( + _('Add on-chain fallback to lightning requests'), 'bolt11_fallback', True, + callback=self.on_toggle_bolt11_fallback) + menu.addConfig( + _('Add lightning requests to bitcoin URIs'), 'bip21_lightning', False, + tooltip=_('This may result in large QR codes'), + callback=self.update_current_request) menu.addToggle(_("Show QR code window"), self.window.toggle_qr_window) menu.addAction(_("Import requests"), self.window.import_requests) menu.addAction(_("Export requests"), self.window.export_requests) - # layout vbox_g = QVBoxLayout() vbox_g.addLayout(grid) @@ -199,6 +205,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_toggle_bolt11_fallback(self): + if not self.wallet.lnworker: + return + self.wallet.lnworker.clear_invoices_cache() + self.update_current_request() + def on_tab_changed(self, i): self.config.set_key('receive_tabs_index', i) title, data = self.get_tab_data(i) diff --git a/electrum/gui/qt/settings_dialog.py b/electrum/gui/qt/settings_dialog.py index 1dad08386..264927159 100644 --- a/electrum/gui/qt/settings_dialog.py +++ b/electrum/gui/qt/settings_dialog.py @@ -104,21 +104,6 @@ class SettingsDialog(QDialog, QtEventListener): self.app.update_status_signal.emit() nz.valueChanged.connect(on_nz) - # invoices - bolt11_fallback_cb = QCheckBox(_('Add on-chain fallback to lightning invoices')) - bolt11_fallback_cb.setChecked(bool(self.config.get('bolt11_fallback', True))) - bolt11_fallback_cb.setToolTip(_('Add fallback addresses to BOLT11 lightning invoices.')) - def on_bolt11_fallback(x): - self.config.set_key('bolt11_fallback', bool(x)) - bolt11_fallback_cb.stateChanged.connect(on_bolt11_fallback) - - bip21_lightning_cb = QCheckBox(_('Add lightning invoice to bitcoin URIs')) - bip21_lightning_cb.setChecked(bool(self.config.get('bip21_lightning', False))) - bip21_lightning_cb.setToolTip(_('This may create larger qr codes.')) - def on_bip21_lightning(x): - self.config.set_key('bip21_lightning', bool(x)) - bip21_lightning_cb.stateChanged.connect(on_bip21_lightning) - # lightning help_recov = _(messages.MSG_RECOVERABLE_CHANNELS) recov_cb = QCheckBox(_("Create recoverable channels")) @@ -426,10 +411,6 @@ class SettingsDialog(QDialog, QtEventListener): gui_widgets.append((nz_label, nz)) gui_widgets.append((msat_cb, None)) gui_widgets.append((thousandsep_cb, None)) - invoices_widgets = [] - invoices_widgets.append((bolt11_fallback_cb, None)) - invoices_widgets.append((bip21_lightning_cb, None)) - lightning_widgets = [] lightning_widgets.append((recov_cb, None)) lightning_widgets.append((trampoline_cb, None)) @@ -452,7 +433,6 @@ class SettingsDialog(QDialog, QtEventListener): tabs_info = [ (gui_widgets, _('Appearance')), - (invoices_widgets, _('Invoices')), (lightning_widgets, _('Lightning')), (fiat_widgets, _('Fiat')), (misc_widgets, _('Misc')), diff --git a/electrum/gui/qt/util.py b/electrum/gui/qt/util.py index 29a8b8319..b0c31c8e9 100644 --- a/electrum/gui/qt/util.py +++ b/electrum/gui/qt/util.py @@ -582,6 +582,20 @@ class MyMenu(QMenu): m.setToolTip(tooltip) return m + def addConfig(self, text:str, name:str, default:bool, *, tooltip='', callback=None): + b = self.config.get(name, default) + m = self.addAction(text, lambda: self._do_toggle_config(name, default, callback)) + m.setCheckable(True) + m.setChecked(b) + m.setToolTip(tooltip) + return m + + def _do_toggle_config(self, name, default, callback): + b = self.config.get(name, default) + self.config.set_key(name, not b) + if callback: + callback() + class MyTreeView(QTreeView): ROLE_CLIPBOARD_DATA = Qt.UserRole + 100