diff --git a/resources/bitmaps/rack_padding_left.png b/resources/bitmaps/rack_padding_left.png index 2d423a3d5..2974bc3e9 100644 Binary files a/resources/bitmaps/rack_padding_left.png and b/resources/bitmaps/rack_padding_left.png differ diff --git a/resources/bitmaps/rack_padding_right.png b/resources/bitmaps/rack_padding_right.png index 811157c12..0d3f44986 100644 Binary files a/resources/bitmaps/rack_padding_right.png and b/resources/bitmaps/rack_padding_right.png differ diff --git a/source/frontend/carla_host.py b/source/frontend/carla_host.py index e9d486d72..be85ae590 100644 --- a/source/frontend/carla_host.py +++ b/source/frontend/carla_host.py @@ -27,12 +27,12 @@ from carla_config import * import json if config_UseQt5: - from PyQt5.QtCore import qCritical, QEventLoop, QFileInfo, QModelIndex, QPointF, QTimer - from PyQt5.QtGui import QImage, QPalette + from PyQt5.QtCore import qCritical, QEventLoop, QFileInfo, QModelIndex, QPointF, QTimer, QEvent + from PyQt5.QtGui import QImage, QPalette, QBrush from PyQt5.QtWidgets import QAction, QApplication, QInputDialog, QFileSystemModel, QListWidgetItem, QMainWindow else: - from PyQt4.QtCore import qCritical, QEventLoop, QFileInfo, QModelIndex, QPointF, QTimer - from PyQt4.QtGui import QImage, QPalette + from PyQt4.QtCore import qCritical, QEventLoop, QFileInfo, QModelIndex, QPointF, QTimer, QEvent + from PyQt4.QtGui import QImage, QPalette, QBrush from PyQt4.QtGui import QAction, QApplication, QInputDialog, QFileSystemModel, QListWidgetItem, QMainWindow # ------------------------------------------------------------------------------------------------------------ @@ -358,15 +358,9 @@ class HostWindow(QMainWindow): self.ui.rackScrollBar.rangeChanged.connect(sb.setRange) self.ui.rackScrollBar.valueChanged.connect(sb.setValue) + self.updateStyle() + self.ui.rack.setStyleSheet(""" - QLabel#pad_left { - background-image: url(:/bitmaps/rack_padding_left.png); - background-repeat: repeat-y; - } - QLabel#pad_right { - background-image: url(:/bitmaps/rack_padding_right.png); - background-repeat: repeat-y; - } CarlaRackList#CarlaRackList { background-color: black; } @@ -2320,6 +2314,54 @@ class HostWindow(QMainWindow): QMainWindow.timerEvent(self, event) + # -------------------------------------------------------------------------------------------------------- + # color/style change event + + def changeEvent(self, event): + if event.type() in (QEvent.PaletteChange, QEvent.StyleChange): + self.updateStyle() + QWidget.changeEvent(self, event) + + def updateStyle(self): + # Rack padding images setup + rack_imgL = QImage(":/bitmaps/rack_padding_left.png") + rack_imgR = QImage(":/bitmaps/rack_padding_right.png") + + min_value = 0.07 + + value_fix = 1.0/(1.0-rack_imgL.scaled(1, 1, Qt.IgnoreAspectRatio, Qt.SmoothTransformation).pixelColor(0,0).blackF()) + bg_color = self.ui.rack.palette().window().color() + bg_value = 1.0 - bg_color.blackF() + if bg_value == 0: + bg_color = QColor.fromHsvF(0.0, 0.0, min_value*value_fix) + elif bg_value < min_value: + pad_color = bg_color.lighter(100*min_value/bg_value*value_fix) + + painter = QPainter() + fillRect = rack_imgL.rect().adjusted(-1,-1,1,1) + + painter.begin(rack_imgL) + painter.setCompositionMode(QPainter.CompositionMode_Multiply) + painter.setBrush(pad_color) + painter.drawRect(fillRect) + painter.end() + rack_pixmapL = QPixmap(rack_imgL) + self.imgL_palette = QPalette() + self.imgL_palette.setBrush(QPalette.Window, QBrush(rack_pixmapL)) + self.ui.pad_left.setPalette(self.imgL_palette) + self.ui.pad_left.setAutoFillBackground(True) + + painter.begin(rack_imgR) + painter.setCompositionMode(QPainter.CompositionMode_Multiply) + painter.setBrush(pad_color) + painter.drawRect(fillRect) + painter.end() + rack_pixmapR = QPixmap(rack_imgR) + self.imgR_palette = QPalette() + self.imgR_palette.setBrush(QPalette.Window, QBrush(rack_pixmapR)) + self.ui.pad_right.setPalette(self.imgR_palette) + self.ui.pad_right.setAutoFillBackground(True) + # -------------------------------------------------------------------------------------------------------- # paint event