Allow user to set a base Qt window style #2251

Merged
PeterSurda merged 7 commits from gitea-91 into v0.6 2024-06-16 06:43:57 +02:00
3 changed files with 21 additions and 12 deletions
Showing only changes of commit de11bc484c - Show all commits

View File

@ -62,6 +62,9 @@ except ImportError:
get_plugins = False get_plugins = False
is_windows = sys.platform.startswith('win')
# TODO: rewrite # TODO: rewrite
def powQueueSize(): def powQueueSize():
"""Returns the size of queues.workerQueue including current unfinished work""" """Returns the size of queues.workerQueue including current unfinished work"""
@ -80,7 +83,7 @@ def openKeysFile():
keysfile = os.path.join(state.appdata, 'keys.dat') keysfile = os.path.join(state.appdata, 'keys.dat')
if 'linux' in sys.platform: if 'linux' in sys.platform:
subprocess.call(["xdg-open", keysfile]) subprocess.call(["xdg-open", keysfile])
elif sys.platform.startswith('win'): elif is_windows:
os.startfile(keysfile) # pylint: disable=no-member os.startfile(keysfile) # pylint: disable=no-member
@ -868,7 +871,7 @@ class MyForm(settingsmixin.SMainWindow):
""" """
startonlogon = config.safeGetBoolean( startonlogon = config.safeGetBoolean(
'bitmessagesettings', 'startonlogon') 'bitmessagesettings', 'startonlogon')
if sys.platform.startswith('win'): # Auto-startup for Windows if is_windows: # Auto-startup for Windows
RUN_PATH = "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run" RUN_PATH = "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run"
settings = QtCore.QSettings( settings = QtCore.QSettings(
RUN_PATH, QtCore.QSettings.NativeFormat) RUN_PATH, QtCore.QSettings.NativeFormat)
@ -4233,6 +4236,14 @@ class BitmessageQtApplication(QtGui.QApplication):
# Unique identifier for this application # Unique identifier for this application
uuid = '6ec0149b-96e1-4be1-93ab-1465fb3ebf7c' uuid = '6ec0149b-96e1-4be1-93ab-1465fb3ebf7c'
@staticmethod
def get_windowstyle():
"""Get window style set in config or default"""
return config.safeGet(
'bitmessagesettings', 'windowstyle',
'Windows' if is_windows else 'GTK+'
)
def __init__(self, *argv): def __init__(self, *argv):
super(BitmessageQtApplication, self).__init__(*argv) super(BitmessageQtApplication, self).__init__(*argv)
id = BitmessageQtApplication.uuid id = BitmessageQtApplication.uuid
@ -4241,8 +4252,7 @@ class BitmessageQtApplication(QtGui.QApplication):
QtCore.QCoreApplication.setOrganizationDomain("bitmessage.org") QtCore.QCoreApplication.setOrganizationDomain("bitmessage.org")
QtCore.QCoreApplication.setApplicationName("pybitmessageqt") QtCore.QCoreApplication.setApplicationName("pybitmessageqt")
self.setStyle( self.setStyle(self.get_windowstyle())
config.safeGet('bitmessagesettings', 'windowstyle', 'GTK+'))
font = config.safeGet('bitmessagesettings', 'font') font = config.safeGet('bitmessagesettings', 'font')
if font: if font:

View File

@ -45,6 +45,7 @@ class SettingsDialog(QtGui.QDialog):
super(SettingsDialog, self).__init__(parent) super(SettingsDialog, self).__init__(parent)
widgets.load('settings.ui', self) widgets.load('settings.ui', self)
self.app = QtGui.QApplication.instance()
self.parent = parent self.parent = parent
self.firstrun = firstrun self.firstrun = firstrun
self.config = config_obj self.config = config_obj
@ -87,14 +88,13 @@ class SettingsDialog(QtGui.QDialog):
"""Adjust all widgets state according to config settings""" """Adjust all widgets state according to config settings"""
# pylint: disable=too-many-branches,too-many-statements # pylint: disable=too-many-branches,too-many-statements
current_style = config.safeGet( current_style = self.app.get_windowstyle()
'bitmessagesettings', 'windowstyle', 'GTK+')
for i, sk in enumerate(QtGui.QStyleFactory.keys()): for i, sk in enumerate(QtGui.QStyleFactory.keys()):
self.comboBoxStyle.addItem(sk) self.comboBoxStyle.addItem(sk)
if sk == current_style: if sk == current_style:
self.comboBoxStyle.setCurrentIndex(i) self.comboBoxStyle.setCurrentIndex(i)
self.save_font_setting(QtGui.QApplication.instance().font()) self.save_font_setting(self.app.font())
if not self.parent.tray.isSystemTrayAvailable(): if not self.parent.tray.isSystemTrayAvailable():
self.groupBoxTray.setEnabled(False) self.groupBoxTray.setEnabled(False)
@ -148,7 +148,7 @@ class SettingsDialog(QtGui.QDialog):
"MainWindow", "MainWindow",
"Tray notifications not yet supported on your OS.")) "Tray notifications not yet supported on your OS."))
if 'win' not in sys.platform and not self.parent.desktop: if not sys.platform.startswith('win') and not self.parent.desktop:
self.checkBoxStartOnLogon.setDisabled(True) self.checkBoxStartOnLogon.setDisabled(True)
self.checkBoxStartOnLogon.setText(_translate( self.checkBoxStartOnLogon.setText(_translate(
"MainWindow", "Start-on-login not yet supported on your OS.")) "MainWindow", "Start-on-login not yet supported on your OS."))
@ -372,9 +372,7 @@ class SettingsDialog(QtGui.QDialog):
self.checkBoxReplyBelow.isChecked())) self.checkBoxReplyBelow.isChecked()))
window_style = str(self.comboBoxStyle.currentText()) window_style = str(self.comboBoxStyle.currentText())
if self.config.safeGet( if self.app.get_windowstyle() != window_style or self.config.safeGet(
'bitmessagesettings', 'windowstyle', 'GTK+'
) != window_style or self.config.safeGet(
'bitmessagesettings', 'font' 'bitmessagesettings', 'font'
) != self.font_setting: ) != self.font_setting:
self.config.set('bitmessagesettings', 'windowstyle', window_style) self.config.set('bitmessagesettings', 'windowstyle', window_style)

View File

@ -43,7 +43,8 @@ class TestSettings(TestBase):
self.assertIs(style_setting, None) self.assertIs(style_setting, None)
self.assertIs(font_setting, None) self.assertIs(font_setting, None)
style_control = self.dialog.comboBoxStyle style_control = self.dialog.comboBoxStyle
self.assertEqual(style_control.currentText(), 'GTK+') self.assertEqual(
style_control.currentText(), self.app.get_windowstyle())
def call_font_dialog(): def call_font_dialog():
"""A function to get the open font dialog and accept it""" """A function to get the open font dialog and accept it"""