Skip to content

Commit bac3645

Browse files
committed
Improve tooltip configuration system with conditional styling
Add "Use system defaults" toggle that allows users to choose between custom tooltip styling and native system appearance. When enabled, tooltips use the system's default colors and styling. When disabled, users can customize text, background, and border colors through color picker controls. The controls automatically show/hide based on the toggle state, and tooltip styling is applied immediately. Settings maintain backward compatibility with existing configurations.
1 parent 59400f4 commit bac3645

File tree

4 files changed

+141
-18
lines changed

4 files changed

+141
-18
lines changed

manuskript/settings.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@
108108
}
109109

110110
tooltipStyle = {
111+
"useSystemDefaultsForTooltips": True,
111112
"textColor": "#000000",
112113
"backgroundColor": "#ffffdc",
113114
"borderColor": "#767676"
@@ -132,10 +133,11 @@ def initDefaultValues():
132133

133134
def applyTooltipStyle():
134135
"""
135-
Apply tooltip styling to the application.
136+
Apply tooltip styling to the application if system defaults are disabled.
136137
"""
137-
from PyQt5.QtWidgets import qApp
138-
qApp.setStyleSheet(f"QToolTip {{ color: {tooltipStyle['textColor']}; background-color: {tooltipStyle['backgroundColor']}; border: 1px solid {tooltipStyle['borderColor']}; }}")
138+
if not tooltipStyle["useSystemDefaultsForTooltips"]:
139+
from PyQt5.QtWidgets import qApp
140+
qApp.setStyleSheet(f"QToolTip {{ color: {tooltipStyle['textColor']}; background-color: {tooltipStyle['backgroundColor']}; border: 1px solid {tooltipStyle['borderColor']}; }}")
139141

140142
def save(filename=None, protocol=None):
141143

@@ -348,4 +350,8 @@ def load(string, fromString=False, protocol=None):
348350

349351
if "tooltipStyle" in allSettings:
350352
global tooltipStyle
351-
tooltipStyle = allSettings["tooltipStyle"]
353+
loaded_tooltip_style = allSettings["tooltipStyle"]
354+
# Add missing keys with defaults
355+
if "useSystemDefaultsForTooltips" not in loaded_tooltip_style:
356+
loaded_tooltip_style["useSystemDefaultsForTooltips"] = True
357+
tooltipStyle = loaded_tooltip_style

manuskript/settingsWindow.py

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -310,13 +310,16 @@ def __init__(self, mainWindow):
310310
self.timerUpdateFSPreview.setInterval(250)
311311
self.timerUpdateFSPreview.timeout.connect(self.updatePreview)
312312

313-
# Style - Tooltips
313+
# Style - Tooltips
314+
self.chkUseSystemTooltips.setChecked(settings.tooltipStyle["useSystemDefaultsForTooltips"])
315+
self.chkUseSystemTooltips.stateChanged.connect(self.toggleTooltipCustomization)
314316
self.setButtonColor(self.btnTooltipTextColor, settings.tooltipStyle["textColor"])
315317
self.btnTooltipTextColor.clicked.connect(self.chooseTooltipTextColor)
316318
self.setButtonColor(self.btnTooltipBackgroundColor, settings.tooltipStyle["backgroundColor"])
317319
self.btnTooltipBackgroundColor.clicked.connect(self.chooseTooltipBackgroundColor)
318320
self.setButtonColor(self.btnTooltipBorderColor, settings.tooltipStyle["borderColor"])
319321
self.btnTooltipBorderColor.clicked.connect(self.chooseTooltipBorderColor)
322+
self.updateTooltipControlsState()
320323

321324
def setTab(self, tab):
322325

@@ -1043,6 +1046,30 @@ def chooseTooltipBorderColor(self):
10431046
self.setButtonColor(self.btnTooltipBorderColor, color.name())
10441047
self.updateTooltipStyle()
10451048

1049+
def toggleTooltipCustomization(self):
1050+
settings.tooltipStyle["useSystemDefaultsForTooltips"] = self.chkUseSystemTooltips.isChecked()
1051+
self.updateTooltipControlsState()
1052+
self.updateTooltipStyle()
1053+
1054+
def updateTooltipControlsState(self):
1055+
visible = not settings.tooltipStyle["useSystemDefaultsForTooltips"]
1056+
self.lblTooltipTextColor.setVisible(visible)
1057+
self.btnTooltipTextColor.setVisible(visible)
1058+
self.lblTooltipBackgroundColor.setVisible(visible)
1059+
self.btnTooltipBackgroundColor.setVisible(visible)
1060+
self.lblTooltipBorderColor.setVisible(visible)
1061+
self.btnTooltipBorderColor.setVisible(visible)
1062+
1063+
# Adjust layout spacing when controls are hidden/shown
1064+
if visible:
1065+
self.formLayout_tooltips.setContentsMargins(9, 9, 9, 9)
1066+
else:
1067+
self.formLayout_tooltips.setContentsMargins(9, 9, 9, 0)
1068+
10461069
def updateTooltipStyle(self):
10471070
# Apply the new tooltip style immediately
1048-
qApp.setStyleSheet(f"QToolTip {{ color: {settings.tooltipStyle['textColor']}; background-color: {settings.tooltipStyle['backgroundColor']}; border: 1px solid {settings.tooltipStyle['borderColor']}; }}")
1071+
if settings.tooltipStyle["useSystemDefaultsForTooltips"]:
1072+
# Clear any custom tooltip styling to use system defaults
1073+
qApp.setStyleSheet("")
1074+
else:
1075+
qApp.setStyleSheet(f"QToolTip {{ color: {settings.tooltipStyle['textColor']}; background-color: {settings.tooltipStyle['backgroundColor']}; border: 1px solid {settings.tooltipStyle['borderColor']}; }}")

manuskript/ui/settings_ui.py

Lines changed: 40 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1757,33 +1757,66 @@ def setupUi(self, Settings):
17571757
self.verticalLayout_style = QtWidgets.QVBoxLayout(self.pageStyle)
17581758
self.verticalLayout_style.setObjectName("verticalLayout_style")
17591759
self.lblTitleStyle = QtWidgets.QLabel(self.pageStyle)
1760+
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
1761+
sizePolicy.setHorizontalStretch(0)
1762+
sizePolicy.setVerticalStretch(0)
1763+
sizePolicy.setHeightForWidth(self.lblTitleStyle.sizePolicy().hasHeightForWidth())
1764+
self.lblTitleStyle.setSizePolicy(sizePolicy)
1765+
self.lblTitleStyle.setAlignment(QtCore.Qt.AlignCenter)
17601766
self.lblTitleStyle.setObjectName("lblTitleStyle")
17611767
self.verticalLayout_style.addWidget(self.lblTitleStyle)
17621768
self.groupBoxTooltips = QtWidgets.QGroupBox(self.pageStyle)
1769+
font = QtGui.QFont()
1770+
font.setBold(True)
1771+
self.groupBoxTooltips.setFont(font)
17631772
self.groupBoxTooltips.setObjectName("groupBoxTooltips")
17641773
self.formLayout_tooltips = QtWidgets.QFormLayout(self.groupBoxTooltips)
17651774
self.formLayout_tooltips.setObjectName("formLayout_tooltips")
1775+
self.chkUseSystemTooltips = QtWidgets.QCheckBox(self.groupBoxTooltips)
1776+
font = QtGui.QFont()
1777+
font.setBold(False)
1778+
self.chkUseSystemTooltips.setFont(font)
1779+
self.chkUseSystemTooltips.setObjectName("chkUseSystemTooltips")
1780+
self.formLayout_tooltips.setWidget(0, QtWidgets.QFormLayout.SpanningRole, self.chkUseSystemTooltips)
17661781
self.lblTooltipTextColor = QtWidgets.QLabel(self.groupBoxTooltips)
1782+
font = QtGui.QFont()
1783+
font.setBold(False)
1784+
self.lblTooltipTextColor.setFont(font)
17671785
self.lblTooltipTextColor.setObjectName("lblTooltipTextColor")
1768-
self.formLayout_tooltips.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.lblTooltipTextColor)
1786+
self.formLayout_tooltips.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.lblTooltipTextColor)
17691787
self.btnTooltipTextColor = QtWidgets.QPushButton(self.groupBoxTooltips)
1788+
font = QtGui.QFont()
1789+
font.setBold(False)
1790+
self.btnTooltipTextColor.setFont(font)
17701791
self.btnTooltipTextColor.setText("")
17711792
self.btnTooltipTextColor.setObjectName("btnTooltipTextColor")
1772-
self.formLayout_tooltips.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.btnTooltipTextColor)
1793+
self.formLayout_tooltips.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.btnTooltipTextColor)
17731794
self.lblTooltipBackgroundColor = QtWidgets.QLabel(self.groupBoxTooltips)
1795+
font = QtGui.QFont()
1796+
font.setBold(False)
1797+
self.lblTooltipBackgroundColor.setFont(font)
17741798
self.lblTooltipBackgroundColor.setObjectName("lblTooltipBackgroundColor")
1775-
self.formLayout_tooltips.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.lblTooltipBackgroundColor)
1799+
self.formLayout_tooltips.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.lblTooltipBackgroundColor)
17761800
self.btnTooltipBackgroundColor = QtWidgets.QPushButton(self.groupBoxTooltips)
1801+
font = QtGui.QFont()
1802+
font.setBold(False)
1803+
self.btnTooltipBackgroundColor.setFont(font)
17771804
self.btnTooltipBackgroundColor.setText("")
17781805
self.btnTooltipBackgroundColor.setObjectName("btnTooltipBackgroundColor")
1779-
self.formLayout_tooltips.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.btnTooltipBackgroundColor)
1806+
self.formLayout_tooltips.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.btnTooltipBackgroundColor)
17801807
self.lblTooltipBorderColor = QtWidgets.QLabel(self.groupBoxTooltips)
1808+
font = QtGui.QFont()
1809+
font.setBold(False)
1810+
self.lblTooltipBorderColor.setFont(font)
17811811
self.lblTooltipBorderColor.setObjectName("lblTooltipBorderColor")
1782-
self.formLayout_tooltips.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.lblTooltipBorderColor)
1812+
self.formLayout_tooltips.setWidget(3, QtWidgets.QFormLayout.LabelRole, self.lblTooltipBorderColor)
17831813
self.btnTooltipBorderColor = QtWidgets.QPushButton(self.groupBoxTooltips)
1814+
font = QtGui.QFont()
1815+
font.setBold(False)
1816+
self.btnTooltipBorderColor.setFont(font)
17841817
self.btnTooltipBorderColor.setText("")
17851818
self.btnTooltipBorderColor.setObjectName("btnTooltipBorderColor")
1786-
self.formLayout_tooltips.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.btnTooltipBorderColor)
1819+
self.formLayout_tooltips.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.btnTooltipBorderColor)
17871820
self.verticalLayout_style.addWidget(self.groupBoxTooltips)
17881821
spacerItem14 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
17891822
self.verticalLayout_style.addItem(spacerItem14)
@@ -2060,6 +2093,7 @@ def retranslateUi(self, Settings):
20602093
self.label_53.setText(_translate("Settings", "Alignment"))
20612094
self.lblTitleStyle.setText(_translate("Settings", "Style"))
20622095
self.groupBoxTooltips.setTitle(_translate("Settings", "Tooltips"))
2096+
self.chkUseSystemTooltips.setText(_translate("Settings", "Use system defaults"))
20632097
self.lblTooltipTextColor.setText(_translate("Settings", "Text color:"))
20642098
self.lblTooltipBackgroundColor.setText(_translate("Settings", "Background color:"))
20652099
self.lblTooltipBorderColor.setText(_translate("Settings", "Border color:"))

manuskript/ui/settings_ui.ui

Lines changed: 62 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3754,54 +3754,110 @@
37543754
<layout class="QVBoxLayout" name="verticalLayout_style">
37553755
<item>
37563756
<widget class="QLabel" name="lblTitleStyle">
3757+
<property name="sizePolicy">
3758+
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
3759+
<horstretch>0</horstretch>
3760+
<verstretch>0</verstretch>
3761+
</sizepolicy>
3762+
</property>
37573763
<property name="text">
37583764
<string>Style</string>
37593765
</property>
3766+
<property name="alignment">
3767+
<set>Qt::AlignCenter</set>
3768+
</property>
37603769
</widget>
37613770
</item>
37623771
<item>
37633772
<widget class="QGroupBox" name="groupBoxTooltips">
3773+
<property name="font">
3774+
<font>
3775+
<bold>true</bold>
3776+
</font>
3777+
</property>
37643778
<property name="title">
37653779
<string>Tooltips</string>
37663780
</property>
37673781
<layout class="QFormLayout" name="formLayout_tooltips">
3768-
<item row="0" column="0">
3782+
<item row="0" column="0" colspan="2">
3783+
<widget class="QCheckBox" name="chkUseSystemTooltips">
3784+
<property name="font">
3785+
<font>
3786+
<bold>false</bold>
3787+
</font>
3788+
</property>
3789+
<property name="text">
3790+
<string>Use system defaults</string>
3791+
</property>
3792+
</widget>
3793+
</item>
3794+
<item row="1" column="0">
37693795
<widget class="QLabel" name="lblTooltipTextColor">
3796+
<property name="font">
3797+
<font>
3798+
<bold>false</bold>
3799+
</font>
3800+
</property>
37703801
<property name="text">
37713802
<string>Text color:</string>
37723803
</property>
37733804
</widget>
37743805
</item>
3775-
<item row="0" column="1">
3806+
<item row="1" column="1">
37763807
<widget class="QPushButton" name="btnTooltipTextColor">
3808+
<property name="font">
3809+
<font>
3810+
<bold>false</bold>
3811+
</font>
3812+
</property>
37773813
<property name="text">
37783814
<string/>
37793815
</property>
37803816
</widget>
37813817
</item>
3782-
<item row="1" column="0">
3818+
<item row="2" column="0">
37833819
<widget class="QLabel" name="lblTooltipBackgroundColor">
3820+
<property name="font">
3821+
<font>
3822+
<bold>false</bold>
3823+
</font>
3824+
</property>
37843825
<property name="text">
37853826
<string>Background color:</string>
37863827
</property>
37873828
</widget>
37883829
</item>
3789-
<item row="1" column="1">
3830+
<item row="2" column="1">
37903831
<widget class="QPushButton" name="btnTooltipBackgroundColor">
3832+
<property name="font">
3833+
<font>
3834+
<bold>false</bold>
3835+
</font>
3836+
</property>
37913837
<property name="text">
37923838
<string/>
37933839
</property>
37943840
</widget>
37953841
</item>
3796-
<item row="2" column="0">
3842+
<item row="3" column="0">
37973843
<widget class="QLabel" name="lblTooltipBorderColor">
3844+
<property name="font">
3845+
<font>
3846+
<bold>false</bold>
3847+
</font>
3848+
</property>
37983849
<property name="text">
37993850
<string>Border color:</string>
38003851
</property>
38013852
</widget>
38023853
</item>
3803-
<item row="2" column="1">
3854+
<item row="3" column="1">
38043855
<widget class="QPushButton" name="btnTooltipBorderColor">
3856+
<property name="font">
3857+
<font>
3858+
<bold>false</bold>
3859+
</font>
3860+
</property>
38053861
<property name="text">
38063862
<string/>
38073863
</property>

0 commit comments

Comments
 (0)