| @@ -2,7 +2,7 @@ | |||
| # -*- coding: utf-8 -*- | |||
| # Carla rack widget code | |||
| # Copyright (C) 2011-2013 Filipe Coelho <falktx@falktx.com> | |||
| # Copyright (C) 2011-2014 Filipe Coelho <falktx@falktx.com> | |||
| # | |||
| # This program is free software; you can redistribute it and/or | |||
| # modify it under the terms of the GNU General Public License as | |||
| @@ -20,7 +20,7 @@ | |||
| # Imports (Global) | |||
| from PyQt4.QtCore import Qt, QSize, QTimer | |||
| from PyQt4.QtGui import QApplication, QListWidget, QListWidgetItem | |||
| from PyQt4.QtGui import QApplication, QHBoxLayout, QLabel, QListWidget, QListWidgetItem, QScrollBar | |||
| # ------------------------------------------------------------------------------------------------------------ | |||
| # Imports (Custom Stuff) | |||
| @@ -70,12 +70,65 @@ class CarlaRackItem(QListWidgetItem): | |||
| #painter.restore() | |||
| #QListWidgetItem.paintEvent(self, event) | |||
| # ------------------------------------------------------------------------------------------------------------ | |||
| # Rack widget list | |||
| class CarlaRackList(QListWidget): | |||
| def __init__(self, parent): | |||
| QListWidget.__init__(self, parent) | |||
| def paintEvent(self, event): | |||
| #painter = QPainter(self) | |||
| QListWidget.paintEvent(self, event) | |||
| # ------------------------------------------------------------------------------------------------------------ | |||
| # Rack widget | |||
| class CarlaRackW(QListWidget): | |||
| class CarlaRackW(QFrame): | |||
| def __init__(self, parent, doSetup = True): | |||
| QListWidget.__init__(self, parent) | |||
| QFrame.__init__(self, parent) | |||
| self.fLayout = QHBoxLayout(self) | |||
| self.fLayout.setContentsMargins(0, 0, 0, 0) | |||
| self.fLayout.setSpacing(1) | |||
| self.setLayout(self.fLayout) | |||
| self.fPadLeft = QLabel(self) | |||
| self.fPadLeft.setFixedWidth(25) | |||
| self.fPadLeft.setObjectName("PadLeft") | |||
| self.fPadLeft.setText("") | |||
| self.fPadRight = QLabel(self) | |||
| self.fPadRight.setFixedWidth(25) | |||
| self.fPadRight.setObjectName("PadRight") | |||
| self.fPadRight.setText("") | |||
| self.fRack = CarlaRackList(self) | |||
| self.fRack.setMinimumWidth(640+20) # required by zita, 591 was old value | |||
| self.fRack.setSortingEnabled(False) | |||
| self.fRack.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) | |||
| self.fRack.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) | |||
| self.fRack.currentRowChanged.connect(self.slot_currentRowChanged) | |||
| sb = self.fRack.verticalScrollBar() | |||
| self.fScrollBar = QScrollBar(Qt.Vertical, self) | |||
| self.fScrollBar.setMinimum(sb.minimum()) | |||
| self.fScrollBar.setMaximum(sb.maximum()) | |||
| self.fScrollBar.setValue(sb.value()) | |||
| #sb.actionTriggered.connect(self.fScrollBar.triggerAction) | |||
| #sb.sliderMoved.connect(self.fScrollBar.) | |||
| #sb.sliderPressed.connect(self.fScrollBar.) | |||
| #sb.sliderReleased.connect(self.fScrollBar.) | |||
| sb.rangeChanged.connect(self.fScrollBar.setRange) | |||
| sb.valueChanged.connect(self.fScrollBar.setValue) | |||
| self.fScrollBar.rangeChanged.connect(sb.setRange) | |||
| self.fScrollBar.valueChanged.connect(sb.setValue) | |||
| self.fLayout.addWidget(self.fPadLeft) | |||
| self.fLayout.addWidget(self.fRack) | |||
| self.fLayout.addWidget(self.fPadRight) | |||
| self.fLayout.addWidget(self.fScrollBar) | |||
| # ------------------------------------------------------------- | |||
| # Internal stuff | |||
| @@ -90,27 +143,25 @@ class CarlaRackW(QListWidget): | |||
| # ------------------------------------------------------------- | |||
| # Set-up GUI stuff | |||
| self.setMinimumWidth(644) # required by zita, 591 was old value | |||
| self.setSortingEnabled(False) | |||
| self.currentRowChanged.connect(self.slot_currentRowChanged) | |||
| #app = QApplication.instance() | |||
| #pal1 = app.palette().base().color() | |||
| #pal2 = app.palette().button().color() | |||
| #col1 = "stop:0 rgb(%i, %i, %i)" % (pal1.red(), pal1.green(), pal1.blue()) | |||
| #col2 = "stop:1 rgb(%i, %i, %i)" % (pal2.red(), pal2.green(), pal2.blue()) | |||
| #self.setStyleSheet(""" | |||
| #QListWidget { | |||
| #background-color: qlineargradient(spread:pad, | |||
| #x1:0.0, y1:0.0, | |||
| #x2:0.2, y2:1.0, | |||
| #%s, | |||
| #%s | |||
| #); | |||
| #} | |||
| #""" % (col1, col2)) | |||
| self.setStyleSheet(""" | |||
| QLabel#PadLeft { | |||
| background-image: url(:/bitmaps/padding_left.png); | |||
| background-repeat: repeat-y; | |||
| } | |||
| QLabel#PadRight { | |||
| background-image: url(:/bitmaps/padding_right.png); | |||
| background-repeat: repeat-y; | |||
| } | |||
| QListWidget { | |||
| background-color: black; | |||
| } | |||
| """) | |||
| # ------------------------------------------------------------- | |||
| # Connect actions to functions | |||
| @@ -153,7 +204,7 @@ class CarlaRackW(QListWidget): | |||
| # ----------------------------------------------------------------- | |||
| def addPlugin(self, pluginId, isProjectLoading): | |||
| pitem = CarlaRackItem(self, pluginId) | |||
| pitem = CarlaRackItem(self.fRack, pluginId) | |||
| self.fPluginList.append(pitem) | |||
| self.fPluginCount += 1 | |||
| @@ -172,7 +223,7 @@ class CarlaRackW(QListWidget): | |||
| self.fPluginCount -= 1 | |||
| self.fPluginList.pop(pluginId) | |||
| self.takeItem(pluginId) | |||
| self.fRack.takeItem(pluginId) | |||
| pitem.close() | |||
| del pitem | |||
| @@ -201,7 +252,7 @@ class CarlaRackW(QListWidget): | |||
| return | |||
| def removeAllPlugins(self): | |||
| while (self.takeItem(0)): | |||
| while self.fRack.takeItem(0): | |||
| pass | |||
| for i in range(self.fPluginCount): | |||