Browse Source

rack list: Colorized rails

pull/769/head
Nikita Zlobin 6 years ago
parent
commit
9964af1994
3 changed files with 42 additions and 4 deletions
  1. BIN
      resources/bitmaps/rack_interior_left.png
  2. BIN
      resources/bitmaps/rack_interior_right.png
  3. +42
    -4
      source/frontend/widgets/racklistwidget.py

BIN
resources/bitmaps/rack_interior_left.png View File

Before After
Width: 18  |  Height: 60  |  Size: 742B Width: 18  |  Height: 60  |  Size: 6.1KB

BIN
resources/bitmaps/rack_interior_right.png View File

Before After
Width: 18  |  Height: 60  |  Size: 738B Width: 18  |  Height: 60  |  Size: 8.8KB

+ 42
- 4
source/frontend/widgets/racklistwidget.py View File

@@ -25,11 +25,11 @@ from carla_config import *
# Imports (Global)

if config_UseQt5:
from PyQt5.QtCore import Qt, QSize
from PyQt5.QtCore import Qt, QSize, QRect, QEvent
from PyQt5.QtGui import QPainter, QPixmap
from PyQt5.QtWidgets import QAbstractItemView, QFrame, QListWidget, QListWidgetItem
else:
from PyQt4.QtCore import Qt, QSize
from PyQt4.QtCore import Qt, QSize, QRect, QEvent
from PyQt4.QtGui import QAbstractItemView, QFrame, QListWidget, QListWidgetItem, QPainter, QPixmap

# ------------------------------------------------------------------------------------------------------------
@@ -242,6 +242,8 @@ class RackListWidget(QListWidget):
self.setDropIndicatorShown(True)
self.viewport().setAcceptDrops(True)

self.updateStyle()

# --------------------------------------------------------------------------------------------------------

def createItem(self, pluginId):
@@ -357,14 +359,50 @@ class RackListWidget(QListWidget):

QListWidget.mousePressEvent(self, event)

def changeEvent(self, event):
if event.type() in (QEvent.StyleChange, QEvent.PaletteChange):
self.updateStyle()
QWidget.changeEvent(self, event)

def paintEvent(self, event):
painter = QPainter(self.viewport())
painter.drawTiledPixmap(0, 0, self.fPixmapWidth, self.height(), self.fPixmapL)
painter.drawTiledPixmap(self.width()-self.fPixmapWidth, 0, self.fPixmapWidth, self.height(), self.fPixmapR)

width = self.width()
height = self.height()
imgL_rect = QRect(0, 0, self.fPixmapWidth, height)
imgR_rect = QRect(width-self.fPixmapWidth, 0, self.fPixmapWidth, height)

painter.setBrush(self.rail_color)
painter.setPen(Qt.NoPen)
painter.drawRects(imgL_rect, imgR_rect)
painter.setCompositionMode(QPainter.CompositionMode_Multiply)
painter.drawTiledPixmap(imgL_rect, self.fPixmapL)
painter.drawTiledPixmap(imgR_rect, self.fPixmapR)
painter.setCompositionMode(QPainter.CompositionMode_Plus)
painter.drawTiledPixmap(imgL_rect, self.fPixmapL)
painter.drawTiledPixmap(imgR_rect, self.fPixmapR)
painter.setCompositionMode(QPainter.CompositionMode_SourceOver)

painter.setPen(self.edge_color)
painter.setBrush(Qt.NoBrush)
painter.drawRect(self.fPixmapWidth, 0, width-self.fPixmapWidth*2, height)

QListWidget.paintEvent(self, event)

# --------------------------------------------------------------------------------------------------------

def updateStyle(self):
palette = self.palette()

bg_color = palette.window().color()
base_color = palette.base().color()
text_color = palette.text().color()
r0,g0,b0,a = bg_color.getRgb()
r1,g1,b1,a = text_color.getRgb()

self.rail_color = QColor((r0*3+r1)/4, (g0*3+g1)/4, (b0*3+b1)/4)
self.edge_color = self.rail_color.darker(115) if self.rail_color.blackF() > base_color.blackF() else base_color.darker(115)

def selectionChanged(self, selected, deselected):
for index in deselected.indexes():
item = self.itemFromIndex(index)


Loading…
Cancel
Save