| @@ -27,12 +27,12 @@ from carla_config import * | |||||
| import json | import json | ||||
| if config_UseQt5: | 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 | from PyQt5.QtWidgets import QAction, QApplication, QInputDialog, QFileSystemModel, QListWidgetItem, QMainWindow | ||||
| else: | 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 | 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.rangeChanged.connect(sb.setRange) | ||||
| self.ui.rackScrollBar.valueChanged.connect(sb.setValue) | self.ui.rackScrollBar.valueChanged.connect(sb.setValue) | ||||
| self.updateStyle() | |||||
| self.ui.rack.setStyleSheet(""" | 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 { | CarlaRackList#CarlaRackList { | ||||
| background-color: black; | background-color: black; | ||||
| } | } | ||||
| @@ -2320,6 +2314,54 @@ class HostWindow(QMainWindow): | |||||
| QMainWindow.timerEvent(self, event) | 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 | # paint event | ||||