From 1a0a52f9b62beba5f62af10530d0e07d0087a650 Mon Sep 17 00:00:00 2001 From: ThomasV Date: Sat, 11 Mar 2023 15:15:16 +0100 Subject: [PATCH] invoices and requests lists: move import/export menus into local toolbars --- electrum/gui/qt/invoice_list.py | 1 - electrum/gui/qt/main_window.py | 6 ------ electrum/gui/qt/receive_tab.py | 12 +++++++----- electrum/gui/qt/request_list.py | 1 - electrum/gui/qt/send_tab.py | 9 +++++++-- electrum/gui/qt/util.py | 16 ++++++++++++++++ 6 files changed, 30 insertions(+), 15 deletions(-) diff --git a/electrum/gui/qt/invoice_list.py b/electrum/gui/qt/invoice_list.py index 6a5375ae9..fa0251632 100644 --- a/electrum/gui/qt/invoice_list.py +++ b/electrum/gui/qt/invoice_list.py @@ -134,7 +134,6 @@ class InvoiceList(MyTreeView): def hide_if_empty(self): b = self.std_model.rowCount() > 0 self.setVisible(b) - self.send_tab.invoices_label.setVisible(b) def create_menu(self, position): wallet = self.wallet diff --git a/electrum/gui/qt/main_window.py b/electrum/gui/qt/main_window.py index 9393f2f93..374e9a782 100644 --- a/electrum/gui/qt/main_window.py +++ b/electrum/gui/qt/main_window.py @@ -705,12 +705,6 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger, QtEventListener): contacts_menu.addAction(_("&New"), self.new_contact_dialog) contacts_menu.addAction(_("Import"), lambda: self.import_contacts()) contacts_menu.addAction(_("Export"), lambda: self.export_contacts()) - invoices_menu = wallet_menu.addMenu(_("Invoices")) - invoices_menu.addAction(_("Import"), lambda: self.import_invoices()) - invoices_menu.addAction(_("Export"), lambda: self.export_invoices()) - requests_menu = wallet_menu.addMenu(_("Requests")) - requests_menu.addAction(_("Import"), lambda: self.import_requests()) - requests_menu.addAction(_("Export"), lambda: self.export_requests()) wallet_menu.addSeparator() wallet_menu.addAction(_("Find"), self.toggle_search).setShortcut(QKeySequence("Ctrl+F")) diff --git a/electrum/gui/qt/receive_tab.py b/electrum/gui/qt/receive_tab.py index fa012c0d4..8b660702c 100644 --- a/electrum/gui/qt/receive_tab.py +++ b/electrum/gui/qt/receive_tab.py @@ -168,12 +168,14 @@ class ReceiveTab(QWidget, MessageBoxMixin, Logger): self.receive_tabs.setSizePolicy(receive_tabs_sp) self.receive_tabs.setVisible(False) - self.receive_requests_label = QLabel(_('Receive queue')) - # with QDarkStyle, this label may partially cover the qrcode widget. - # setMaximumWidth prevents that - self.receive_requests_label.setMaximumWidth(400) from .request_list import RequestList self.request_list = RequestList(self) + self.toolbar = self.request_list.create_toolbar_with_menu( + _('Requests'), + [ + (_("Import requests"), self.window.import_requests), + (_("Export requests"), self.window.export_requests), + ]) # layout vbox_g = QVBoxLayout() @@ -188,7 +190,7 @@ class ReceiveTab(QWidget, MessageBoxMixin, Logger): vbox = QVBoxLayout(self) vbox.addLayout(hbox) vbox.addStretch() - vbox.addWidget(self.receive_requests_label) + vbox.addLayout(self.toolbar) vbox.addWidget(self.request_list) vbox.setStretchFactor(hbox, 40) vbox.setStretchFactor(self.request_list, 60) diff --git a/electrum/gui/qt/request_list.py b/electrum/gui/qt/request_list.py index 49cead064..dff11de31 100644 --- a/electrum/gui/qt/request_list.py +++ b/electrum/gui/qt/request_list.py @@ -167,7 +167,6 @@ class RequestList(MyTreeView): def hide_if_empty(self): b = self.std_model.rowCount() > 0 self.setVisible(b) - self.receive_tab.receive_requests_label.setVisible(b) if not b: # list got hidden, so selected item should also be cleared: self.item_changed(None) diff --git a/electrum/gui/qt/send_tab.py b/electrum/gui/qt/send_tab.py index 99dcbc015..7bfe1902a 100644 --- a/electrum/gui/qt/send_tab.py +++ b/electrum/gui/qt/send_tab.py @@ -146,9 +146,14 @@ class SendTab(QWidget, MessageBoxMixin, Logger): self.set_onchain(False) - self.invoices_label = QLabel(_('Send queue')) from .invoice_list import InvoiceList self.invoice_list = InvoiceList(self) + self.toolbar = self.invoice_list.create_toolbar_with_menu( + _('Invoices'), + [ + (_("Import invoices"), self.window.import_invoices), + (_("Export invoices"), self.window.export_invoices), + ]) vbox0 = QVBoxLayout() vbox0.addLayout(grid) @@ -159,7 +164,7 @@ class SendTab(QWidget, MessageBoxMixin, Logger): vbox = QVBoxLayout(self) vbox.addLayout(hbox) vbox.addStretch(1) - vbox.addWidget(self.invoices_label) + vbox.addLayout(self.toolbar) vbox.addWidget(self.invoice_list) vbox.setStretchFactor(self.invoice_list, 1000) self.searchable_list = self.invoice_list diff --git a/electrum/gui/qt/util.py b/electrum/gui/qt/util.py index 677e4f2b7..259e97c6e 100644 --- a/electrum/gui/qt/util.py +++ b/electrum/gui/qt/util.py @@ -756,6 +756,22 @@ class MyTreeView(QTreeView): hbox.addWidget(hide_button) return hbox + def create_toolbar_with_menu(self, title, menu_items): + menu = QMenu() + menu.setToolTipsVisible(True) + for k, v in menu_items: + menu.addAction(k, v) + toolbar_button = QToolButton() + toolbar_button.setIcon(read_QIcon("preferences.png")) + toolbar_button.setMenu(menu) + toolbar_button.setPopupMode(QToolButton.InstantPopup) + toolbar_button.setFocusPolicy(Qt.NoFocus) + toolbar = QHBoxLayout() + toolbar.addWidget(QLabel(title)) + toolbar.addStretch() + toolbar.addWidget(toolbar_button) + return toolbar + def save_toolbar_state(self, state, config): pass # implemented in subclasses