1
0
forked from M-Labs/artiq

gui/entries: split widget styling into separate color setting methods

This commit is contained in:
Florian Agbuya 2025-01-31 22:16:58 +08:00 committed by Sébastien Bourdeauducq
parent c8d0ab9afe
commit d9cc35c724

View File

@ -31,23 +31,53 @@ class EntryTreeWidget(QtWidgets.QTreeWidget):
self.setHorizontalScrollMode(self.ScrollMode.ScrollPerPixel)
self.setVerticalScrollMode(self.ScrollMode.ScrollPerPixel)
self.setStyleSheet("QTreeWidget {background: " +
self.palette().midlight().color().name() + " ;}")
self.viewport().installEventFilter(WheelFilter(self.viewport(), True))
self._groups = dict()
self._arg_to_widgets = dict()
self._arguments = dict()
self.set_background_color()
self.gradient = QtGui.QLinearGradient(
0, 0, 0, QtGui.QFontMetrics(self.font()).lineSpacing() * 2.5)
self.gradient.setColorAt(0, self.palette().base().color())
self.gradient.setColorAt(1, self.palette().midlight().color())
self.set_gradient_color()
self.set_group_color()
self.bottom_item = QtWidgets.QTreeWidgetItem()
self.addTopLevelItem(self.bottom_item)
def set_background_color(self, color=None):
if color is None:
base_color = self.palette().base().color()
else:
base_color = QtGui.QColor(color)
self.palette().setColor(QtGui.QPalette.ColorRole.Base, base_color)
def set_gradient_color(self, color=None):
if color is None:
start_color = self.palette().base().color()
end_color = self.palette().midlight().color()
else:
start_color = QtGui.QColor(color)
end_color = start_color.toHsv()
end_color.setHsv(end_color.hue(),
int(end_color.saturation() * 0.8),
min(255, int(end_color.value() * 1.2)))
self.gradient.setColorAt(0, start_color)
self.gradient.setColorAt(1, end_color)
for widgets in self._arg_to_widgets.values():
for col in range(3):
widgets["widget_item"].setBackground(col, self.gradient)
def set_group_color(self, color=None):
if color is None:
group_color = self.palette().mid().color()
else:
group_color = QtGui.QColor(color)
for group in self._groups.values():
for col in range(3):
group.setBackground(col, group_color)
def set_argument(self, key, argument):
self._arguments[key] = argument
widgets = dict()
@ -63,8 +93,7 @@ class EntryTreeWidget(QtWidgets.QTreeWidget):
widgets["entry"] = entry
widgets["widget_item"] = widget_item
for col in range(3):
widget_item.setBackground(col, self.gradient)
self.set_gradient_color()
font = widget_item.font(0)
font.setBold(True)
widget_item.setFont(0, font)
@ -108,12 +137,12 @@ class EntryTreeWidget(QtWidgets.QTreeWidget):
return self._groups[key]
group = QtWidgets.QTreeWidgetItem([key])
for col in range(3):
group.setBackground(col, self.palette().mid())
font = group.font(col)
font.setBold(True)
group.setFont(col, font)
self.insertTopLevelItem(self.indexFromItem(self.bottom_item).row(), group)
self._groups[key] = group
self.set_group_color()
return group
def _disable_other_scans(self, current_key):