|
|
|
|
@ -138,6 +138,36 @@ class StatusBarButton(QToolButton):
|
|
|
|
|
if e.key() in [Qt.Key_Return, Qt.Key_Enter]: |
|
|
|
|
self.func() |
|
|
|
|
|
|
|
|
|
class ReceiveTabWidget(QWidget): |
|
|
|
|
min_size = QSize(200, 200) |
|
|
|
|
def __init__(self, window, textedit, qr, help_widget): |
|
|
|
|
self.textedit = textedit |
|
|
|
|
self.qr = qr |
|
|
|
|
self.help_widget = help_widget |
|
|
|
|
QWidget.__init__(self) |
|
|
|
|
for w in [textedit, qr, help_widget]: |
|
|
|
|
w.setMinimumSize(self.min_size) |
|
|
|
|
for w in [textedit, qr]: |
|
|
|
|
w.mousePressEvent = window.toggle_receive_qr |
|
|
|
|
tooltip = _('Click to switch between text and QR code view') |
|
|
|
|
w.setToolTip(tooltip) |
|
|
|
|
textedit.setFocusPolicy(Qt.NoFocus) |
|
|
|
|
hbox = QHBoxLayout() |
|
|
|
|
hbox.setContentsMargins(0, 0, 0, 0) |
|
|
|
|
hbox.addWidget(textedit) |
|
|
|
|
hbox.addWidget(help_widget) |
|
|
|
|
hbox.addWidget(qr) |
|
|
|
|
self.setLayout(hbox) |
|
|
|
|
|
|
|
|
|
def update_visibility(self, is_qr): |
|
|
|
|
if str(self.textedit.text()): |
|
|
|
|
self.help_widget.setVisible(False) |
|
|
|
|
self.textedit.setVisible(not is_qr) |
|
|
|
|
self.qr.setVisible(is_qr) |
|
|
|
|
else: |
|
|
|
|
self.help_widget.setVisible(True) |
|
|
|
|
self.textedit.setVisible(False) |
|
|
|
|
self.qr.setVisible(False) |
|
|
|
|
|
|
|
|
|
def protected(func): |
|
|
|
|
'''Password request wrapper. The password is passed to the function |
|
|
|
|
@ -1114,24 +1144,9 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger):
|
|
|
|
|
|
|
|
|
|
def update_receive_widgets(self): |
|
|
|
|
b = self.config.get('receive_qr_visible', False) |
|
|
|
|
self.receive_URI_e.setVisible(not b) |
|
|
|
|
self.receive_URI_qr.setVisible(b) |
|
|
|
|
if str(self.receive_address_e.text()): |
|
|
|
|
self.receive_address_help.setVisible(False) |
|
|
|
|
self.receive_address_e.setVisible(not b) |
|
|
|
|
self.receive_address_qr.setVisible(b) |
|
|
|
|
else: |
|
|
|
|
self.receive_address_help.setVisible(True) |
|
|
|
|
self.receive_address_e.setVisible(False) |
|
|
|
|
self.receive_address_qr.setVisible(False) |
|
|
|
|
if str(self.receive_lightning_e.text()): |
|
|
|
|
self.receive_lightning_help.setVisible(False) |
|
|
|
|
self.receive_lightning_e.setVisible(not b) |
|
|
|
|
self.receive_lightning_qr.setVisible(b) |
|
|
|
|
else: |
|
|
|
|
self.receive_lightning_help.setVisible(True) |
|
|
|
|
self.receive_lightning_e.setVisible(False) |
|
|
|
|
self.receive_lightning_qr.setVisible(False) |
|
|
|
|
self.receive_URI_widget.update_visibility(b) |
|
|
|
|
self.receive_address_widget.update_visibility(b) |
|
|
|
|
self.receive_lightning_widget.update_visibility(b) |
|
|
|
|
|
|
|
|
|
def create_receive_tab(self): |
|
|
|
|
# A 4-column grid layout. All the stretch is in the last column. |
|
|
|
|
@ -1207,6 +1222,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger):
|
|
|
|
|
self.receive_address_help.setLayout(vbox) |
|
|
|
|
|
|
|
|
|
self.receive_URI_e = ButtonsTextEdit() |
|
|
|
|
self.receive_URI_help = WWLabel('') |
|
|
|
|
self.receive_lightning_e = ButtonsTextEdit() |
|
|
|
|
self.receive_lightning_help_text = WWLabel('') |
|
|
|
|
self.receive_rebalance_button = QPushButton('Rebalance') |
|
|
|
|
@ -1236,63 +1252,26 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger):
|
|
|
|
|
self.receive_URI_qr = QRCodeWidget() |
|
|
|
|
self.receive_lightning_qr = QRCodeWidget() |
|
|
|
|
|
|
|
|
|
min_size = QSize(200, 200) |
|
|
|
|
for e in [self.receive_address_e, self.receive_URI_e, self.receive_lightning_e]: |
|
|
|
|
e.setFont(QFont(MONOSPACE_FONT)) |
|
|
|
|
e.addCopyButton(self.app) |
|
|
|
|
e.setReadOnly(True) |
|
|
|
|
e.setMinimumSize(min_size) |
|
|
|
|
for w in [self.receive_address_help, self.receive_lightning_help]: |
|
|
|
|
w.setMinimumSize(min_size) |
|
|
|
|
for w in [self.receive_address_qr, self.receive_URI_qr, self.receive_lightning_qr]: |
|
|
|
|
w.setMinimumSize(min_size) |
|
|
|
|
|
|
|
|
|
self.receive_lightning_e.textChanged.connect(self.update_receive_widgets) |
|
|
|
|
|
|
|
|
|
receive_address_layout = QHBoxLayout() |
|
|
|
|
receive_address_layout.setContentsMargins(0, 0, 0, 0) |
|
|
|
|
receive_address_layout.addWidget(self.receive_address_e) |
|
|
|
|
receive_address_layout.addWidget(self.receive_address_qr) |
|
|
|
|
receive_address_layout.addWidget(self.receive_address_help) |
|
|
|
|
receive_URI_layout = QHBoxLayout() |
|
|
|
|
receive_URI_layout.setContentsMargins(0, 0, 0, 0) |
|
|
|
|
receive_URI_layout.addWidget(self.receive_URI_e) |
|
|
|
|
receive_URI_layout.addWidget(self.receive_URI_qr) |
|
|
|
|
receive_lightning_layout = QHBoxLayout() |
|
|
|
|
receive_lightning_layout.setContentsMargins(0, 0, 0, 0) |
|
|
|
|
receive_lightning_layout.addWidget(self.receive_lightning_e) |
|
|
|
|
receive_lightning_layout.addWidget(self.receive_lightning_qr) |
|
|
|
|
receive_lightning_layout.addWidget(self.receive_lightning_help) |
|
|
|
|
self.receive_address_widget = ReceiveTabWidget(self, |
|
|
|
|
self.receive_address_e, self.receive_address_qr, self.receive_address_help) |
|
|
|
|
self.receive_URI_widget = ReceiveTabWidget(self, |
|
|
|
|
self.receive_URI_e, self.receive_URI_qr, self.receive_URI_help) |
|
|
|
|
self.receive_lightning_widget = ReceiveTabWidget(self, |
|
|
|
|
self.receive_lightning_e, self.receive_lightning_qr, self.receive_lightning_help) |
|
|
|
|
|
|
|
|
|
from .util import VTabWidget |
|
|
|
|
self.receive_tabs = VTabWidget() |
|
|
|
|
self.receive_tabs.setMinimumHeight(min_size.height() + 4) # for margins |
|
|
|
|
receive_address_widget = QWidget() |
|
|
|
|
receive_address_widget.setLayout(receive_address_layout) |
|
|
|
|
receive_URI_widget = QWidget() |
|
|
|
|
receive_URI_widget.setLayout(receive_URI_layout) |
|
|
|
|
receive_lightning_widget = QWidget() |
|
|
|
|
receive_lightning_widget.setLayout(receive_lightning_layout) |
|
|
|
|
|
|
|
|
|
self.receive_address_e.setFocusPolicy(Qt.NoFocus) |
|
|
|
|
self.receive_address_e.mousePressEvent = self.toggle_receive_qr |
|
|
|
|
self.receive_address_qr.mousePressEvent = self.toggle_receive_qr |
|
|
|
|
self.receive_URI_e.setFocusPolicy(Qt.NoFocus) |
|
|
|
|
self.receive_URI_e.mousePressEvent = self.toggle_receive_qr |
|
|
|
|
self.receive_URI_qr.mousePressEvent = self.toggle_receive_qr |
|
|
|
|
self.receive_lightning_e.setFocusPolicy(Qt.NoFocus) |
|
|
|
|
self.receive_lightning_e.mousePressEvent = self.toggle_receive_qr |
|
|
|
|
self.receive_lightning_qr.mousePressEvent = self.toggle_receive_qr |
|
|
|
|
# add tooltip to QR and edits, not to the help widget |
|
|
|
|
switch_tooltip = _('Click to switch between text and QR code view') |
|
|
|
|
for w in [ |
|
|
|
|
self.receive_address_e, self.receive_URI_e, self.receive_lightning_e, |
|
|
|
|
self.receive_address_qr, self.receive_URI_qr, self.receive_lightning_qr]: |
|
|
|
|
w.setToolTip(switch_tooltip) |
|
|
|
|
|
|
|
|
|
self.receive_tabs.addTab(receive_URI_widget, read_QIcon("link.png"), _('URI')) |
|
|
|
|
self.receive_tabs.addTab(receive_address_widget, read_QIcon("bitcoin.png"), _('Address')) |
|
|
|
|
self.receive_tabs.addTab(receive_lightning_widget, read_QIcon("lightning.png"), _('Lightning')) |
|
|
|
|
self.receive_tabs.setMinimumHeight(ReceiveTabWidget.min_size.height() + 4) # for margins |
|
|
|
|
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)) |
|
|
|
|
|