Merge pull request #6300 from SomberNight/202006_qt_statusbarbutton
qt StatusBarButton: use QToolButton instead of QPushButton
This commit is contained in:
@@ -46,7 +46,7 @@ from PyQt5.QtWidgets import (QMessageBox, QComboBox, QSystemTrayIcon, QTabWidget
|
|||||||
QHBoxLayout, QPushButton, QScrollArea, QTextEdit,
|
QHBoxLayout, QPushButton, QScrollArea, QTextEdit,
|
||||||
QShortcut, QMainWindow, QCompleter, QInputDialog,
|
QShortcut, QMainWindow, QCompleter, QInputDialog,
|
||||||
QWidget, QSizePolicy, QStatusBar, QToolTip, QDialog,
|
QWidget, QSizePolicy, QStatusBar, QToolTip, QDialog,
|
||||||
QMenu, QAction, QStackedWidget)
|
QMenu, QAction, QStackedWidget, QToolButton)
|
||||||
|
|
||||||
import electrum
|
import electrum
|
||||||
from electrum import (keystore, ecc, constants, util, bitcoin, commands,
|
from electrum import (keystore, ecc, constants, util, bitcoin, commands,
|
||||||
@@ -104,11 +104,16 @@ if TYPE_CHECKING:
|
|||||||
|
|
||||||
LN_NUM_PAYMENT_ATTEMPTS = 10
|
LN_NUM_PAYMENT_ATTEMPTS = 10
|
||||||
|
|
||||||
class StatusBarButton(QPushButton):
|
|
||||||
|
class StatusBarButton(QToolButton):
|
||||||
|
# note: this class has a custom stylesheet applied in stylesheet_patcher.py
|
||||||
def __init__(self, icon, tooltip, func):
|
def __init__(self, icon, tooltip, func):
|
||||||
QPushButton.__init__(self, icon, '')
|
QToolButton.__init__(self)
|
||||||
|
self.setText('')
|
||||||
|
self.setIcon(icon)
|
||||||
self.setToolTip(tooltip)
|
self.setToolTip(tooltip)
|
||||||
self.setFlat(True)
|
self.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
||||||
|
self.setAutoRaise(True)
|
||||||
self.setMaximumWidth(25)
|
self.setMaximumWidth(25)
|
||||||
self.clicked.connect(self.onPress)
|
self.clicked.connect(self.onPress)
|
||||||
self.func = func
|
self.func = func
|
||||||
@@ -2239,7 +2244,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger):
|
|||||||
self.lightning_button.setText('')
|
self.lightning_button.setText('')
|
||||||
self.lightning_button.setToolTip(_("The Lightning Network graph is fully synced."))
|
self.lightning_button.setToolTip(_("The Lightning Network graph is fully synced."))
|
||||||
else:
|
else:
|
||||||
self.lightning_button.setMaximumWidth(25 + 4 * char_width_in_lineedit())
|
self.lightning_button.setMaximumWidth(25 + 5 * char_width_in_lineedit())
|
||||||
self.lightning_button.setText(progress_str)
|
self.lightning_button.setText(progress_str)
|
||||||
self.lightning_button.setToolTip(_("The Lightning Network graph is syncing...\n"
|
self.lightning_button.setToolTip(_("The Lightning Network graph is syncing...\n"
|
||||||
"Payments are more likely to succeed with a more complete graph."))
|
"Payments are more likely to succeed with a more complete graph."))
|
||||||
|
|||||||
@@ -2,32 +2,68 @@
|
|||||||
It reads the current stylesheet, appends our modifications and sets the new stylesheet.
|
It reads the current stylesheet, appends our modifications and sets the new stylesheet.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
import sys
|
||||||
|
|
||||||
from PyQt5 import QtWidgets
|
from PyQt5 import QtWidgets
|
||||||
|
|
||||||
|
|
||||||
|
CUSTOM_PATCH_FOR_DARK_THEME = '''
|
||||||
|
/* PayToEdit text was being clipped */
|
||||||
|
QAbstractScrollArea {
|
||||||
|
padding: 0px;
|
||||||
|
}
|
||||||
|
/* In History tab, labels while edited were being clipped (Windows) */
|
||||||
|
QAbstractItemView QLineEdit {
|
||||||
|
padding: 0px;
|
||||||
|
show-decoration-selected: 1;
|
||||||
|
}
|
||||||
|
/* Checked item in dropdowns have way too much height...
|
||||||
|
see #6281 and https://github.com/ColinDuquesnoy/QDarkStyleSheet/issues/200
|
||||||
|
*/
|
||||||
|
QComboBox::item:checked {
|
||||||
|
font-weight: bold;
|
||||||
|
max-height: 30px;
|
||||||
|
}
|
||||||
|
'''
|
||||||
|
|
||||||
|
CUSTOM_PATCH_FOR_DEFAULT_THEME_MACOS = '''
|
||||||
|
/* On macOS, main window status bar icons have ugly frame (see #6300) */
|
||||||
|
StatusBarButton {
|
||||||
|
background-color: transparent;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
border-radius: 4px;
|
||||||
|
margin: 0px;
|
||||||
|
padding: 2px;
|
||||||
|
}
|
||||||
|
StatusBarButton:checked {
|
||||||
|
background-color: transparent;
|
||||||
|
border: 1px solid #1464A0;
|
||||||
|
}
|
||||||
|
StatusBarButton:checked:disabled {
|
||||||
|
border: 1px solid #14506E;
|
||||||
|
}
|
||||||
|
StatusBarButton:pressed {
|
||||||
|
margin: 1px;
|
||||||
|
background-color: transparent;
|
||||||
|
border: 1px solid #1464A0;
|
||||||
|
}
|
||||||
|
StatusBarButton:disabled {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
StatusBarButton:hover {
|
||||||
|
border: 1px solid #148CD2;
|
||||||
|
}
|
||||||
|
'''
|
||||||
|
|
||||||
|
|
||||||
def patch_qt_stylesheet(use_dark_theme: bool) -> None:
|
def patch_qt_stylesheet(use_dark_theme: bool) -> None:
|
||||||
if not use_dark_theme:
|
custom_patch = ""
|
||||||
return
|
if use_dark_theme:
|
||||||
|
custom_patch = CUSTOM_PATCH_FOR_DARK_THEME
|
||||||
|
else: # default theme (typically light)
|
||||||
|
if sys.platform == 'darwin':
|
||||||
|
custom_patch = CUSTOM_PATCH_FOR_DEFAULT_THEME_MACOS
|
||||||
|
|
||||||
app = QtWidgets.QApplication.instance()
|
app = QtWidgets.QApplication.instance()
|
||||||
|
style_sheet = app.styleSheet() + custom_patch
|
||||||
style_sheet = app.styleSheet()
|
|
||||||
style_sheet = style_sheet + '''
|
|
||||||
/* PayToEdit text was being clipped */
|
|
||||||
QAbstractScrollArea {
|
|
||||||
padding: 0px;
|
|
||||||
}
|
|
||||||
/* In History tab, labels while edited were being clipped (Windows) */
|
|
||||||
QAbstractItemView QLineEdit {
|
|
||||||
padding: 0px;
|
|
||||||
show-decoration-selected: 1;
|
|
||||||
}
|
|
||||||
/* Checked item in dropdowns have way too much height...
|
|
||||||
see #6281 and https://github.com/ColinDuquesnoy/QDarkStyleSheet/issues/200
|
|
||||||
*/
|
|
||||||
QComboBox::item:checked {
|
|
||||||
font-weight: bold;
|
|
||||||
max-height: 30px;
|
|
||||||
}
|
|
||||||
'''
|
|
||||||
app.setStyleSheet(style_sheet)
|
app.setStyleSheet(style_sheet)
|
||||||
|
|||||||
@@ -126,9 +126,10 @@ class HelpLabel(QLabel):
|
|||||||
return QLabel.leaveEvent(self, event)
|
return QLabel.leaveEvent(self, event)
|
||||||
|
|
||||||
|
|
||||||
class HelpButton(QPushButton):
|
class HelpButton(QToolButton):
|
||||||
def __init__(self, text):
|
def __init__(self, text):
|
||||||
QPushButton.__init__(self, '?')
|
QToolButton.__init__(self)
|
||||||
|
self.setText('?')
|
||||||
self.help_text = text
|
self.help_text = text
|
||||||
self.setFocusPolicy(Qt.NoFocus)
|
self.setFocusPolicy(Qt.NoFocus)
|
||||||
self.setFixedWidth(round(2.2 * char_width_in_lineedit()))
|
self.setFixedWidth(round(2.2 * char_width_in_lineedit()))
|
||||||
|
|||||||
Reference in New Issue
Block a user