qt: allow changing light/dark theme at runtime
Looks like the stylesheet can be changed at any time... so we don't need to ask the user to restart the program. closes https://github.com/spesmilo/electrum/issues/7209
This commit is contained in:
@@ -133,7 +133,10 @@ class ElectrumGui(BaseElectrumGui, Logger):
|
|||||||
self._init_tray()
|
self._init_tray()
|
||||||
self.app.new_window_signal.connect(self.start_new_window)
|
self.app.new_window_signal.connect(self.start_new_window)
|
||||||
self.app.quit_signal.connect(self.app.quit, Qt.QueuedConnection)
|
self.app.quit_signal.connect(self.app.quit, Qt.QueuedConnection)
|
||||||
self.set_dark_theme_if_needed()
|
# maybe set dark theme
|
||||||
|
self._default_qtstylesheet = self.app.styleSheet()
|
||||||
|
self.reload_app_stylesheet()
|
||||||
|
|
||||||
run_hook('init_qt', self)
|
run_hook('init_qt', self)
|
||||||
|
|
||||||
def _init_tray(self):
|
def _init_tray(self):
|
||||||
@@ -143,7 +146,7 @@ class ElectrumGui(BaseElectrumGui, Logger):
|
|||||||
self.build_tray_menu()
|
self.build_tray_menu()
|
||||||
self.tray.show()
|
self.tray.show()
|
||||||
|
|
||||||
def set_dark_theme_if_needed(self):
|
def reload_app_stylesheet(self):
|
||||||
use_dark_theme = self.config.get('qt_gui_color_theme', 'default') == 'dark'
|
use_dark_theme = self.config.get('qt_gui_color_theme', 'default') == 'dark'
|
||||||
if use_dark_theme:
|
if use_dark_theme:
|
||||||
try:
|
try:
|
||||||
@@ -152,6 +155,8 @@ class ElectrumGui(BaseElectrumGui, Logger):
|
|||||||
except BaseException as e:
|
except BaseException as e:
|
||||||
use_dark_theme = False
|
use_dark_theme = False
|
||||||
self.logger.warning(f'Error setting dark theme: {repr(e)}')
|
self.logger.warning(f'Error setting dark theme: {repr(e)}')
|
||||||
|
else:
|
||||||
|
self.app.setStyleSheet(self._default_qtstylesheet)
|
||||||
# Apply any necessary stylesheet patches
|
# Apply any necessary stylesheet patches
|
||||||
patch_qt_stylesheet(use_dark_theme=use_dark_theme)
|
patch_qt_stylesheet(use_dark_theme=use_dark_theme)
|
||||||
# Even if we ourselves don't set the dark theme,
|
# Even if we ourselves don't set the dark theme,
|
||||||
|
|||||||
@@ -259,7 +259,7 @@ class SettingsDialog(WindowModalDialog):
|
|||||||
colortheme_label = QLabel(_('Color theme') + ':')
|
colortheme_label = QLabel(_('Color theme') + ':')
|
||||||
def on_colortheme(x):
|
def on_colortheme(x):
|
||||||
self.config.set_key('qt_gui_color_theme', colortheme_combo.itemData(x), True)
|
self.config.set_key('qt_gui_color_theme', colortheme_combo.itemData(x), True)
|
||||||
self.need_restart = True
|
self.window.gui_object.reload_app_stylesheet()
|
||||||
colortheme_combo.currentIndexChanged.connect(on_colortheme)
|
colortheme_combo.currentIndexChanged.connect(on_colortheme)
|
||||||
gui_widgets.append((colortheme_label, colortheme_combo))
|
gui_widgets.append((colortheme_label, colortheme_combo))
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user