@@ -282,6 +282,7 @@ RES = \ | |||
bin/resources/ui_carla_plugin_basic_fx.py \ | |||
bin/resources/ui_carla_plugin_calf.py \ | |||
bin/resources/ui_carla_plugin_default.py \ | |||
bin/resources/ui_carla_plugin_sf2.py \ | |||
bin/resources/ui_carla_plugin_zita.py \ | |||
bin/resources/ui_carla_plugin_zynfx.py \ | |||
bin/resources/ui_carla_refresh.py \ | |||
@@ -319,8 +320,9 @@ UIs = \ | |||
source/ui_carla_host.py \ | |||
source/ui_carla_parameter.py \ | |||
source/ui_carla_plugin_basic_fx.py \ | |||
source/ui_carla_plugin_default.py \ | |||
source/ui_carla_plugin_calf.py \ | |||
source/ui_carla_plugin_default.py \ | |||
source/ui_carla_plugin_sf2.py \ | |||
source/ui_carla_plugin_zita.py \ | |||
source/ui_carla_plugin_zynfx.py \ | |||
source/ui_carla_refresh.py \ | |||
@@ -532,6 +534,7 @@ install: | |||
$(LINK) $(PREFIX)/share/carla/ui_carla_plugin_basic_fx.py $(DESTDIR)$(PREFIX)/share/carla/resources/ | |||
$(LINK) $(PREFIX)/share/carla/ui_carla_plugin_calf.py $(DESTDIR)$(PREFIX)/share/carla/resources/ | |||
$(LINK) $(PREFIX)/share/carla/ui_carla_plugin_default.py $(DESTDIR)$(PREFIX)/share/carla/resources/ | |||
$(LINK) $(PREFIX)/share/carla/ui_carla_plugin_sf2.py $(DESTDIR)$(PREFIX)/share/carla/resources/ | |||
$(LINK) $(PREFIX)/share/carla/ui_carla_plugin_zita.py $(DESTDIR)$(PREFIX)/share/carla/resources/ | |||
$(LINK) $(PREFIX)/share/carla/ui_carla_plugin_zynfx.py $(DESTDIR)$(PREFIX)/share/carla/resources/ | |||
$(LINK) $(PREFIX)/share/carla/ui_carla_refresh.py $(DESTDIR)$(PREFIX)/share/carla/resources/ | |||
@@ -0,0 +1,399 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<ui version="4.0"> | |||
<class>PluginWidget</class> | |||
<widget class="QFrame" name="PluginWidget"> | |||
<property name="geometry"> | |||
<rect> | |||
<x>0</x> | |||
<y>0</y> | |||
<width>374</width> | |||
<height>71</height> | |||
</rect> | |||
</property> | |||
<property name="contextMenuPolicy"> | |||
<enum>Qt::CustomContextMenu</enum> | |||
</property> | |||
<property name="windowTitle"> | |||
<string>Frame</string> | |||
</property> | |||
<layout class="QVBoxLayout" name="verticalLayout"> | |||
<property name="spacing"> | |||
<number>1</number> | |||
</property> | |||
<property name="leftMargin"> | |||
<number>2</number> | |||
</property> | |||
<property name="topMargin"> | |||
<number>3</number> | |||
</property> | |||
<property name="rightMargin"> | |||
<number>2</number> | |||
</property> | |||
<property name="bottomMargin"> | |||
<number>0</number> | |||
</property> | |||
<item> | |||
<layout class="QHBoxLayout" name="horizontalLayout"> | |||
<property name="spacing"> | |||
<number>1</number> | |||
</property> | |||
<item> | |||
<spacer name="horizontalSpacer_4"> | |||
<property name="orientation"> | |||
<enum>Qt::Horizontal</enum> | |||
</property> | |||
<property name="sizeType"> | |||
<enum>QSizePolicy::Fixed</enum> | |||
</property> | |||
<property name="sizeHint" stdset="0"> | |||
<size> | |||
<width>20</width> | |||
<height>1</height> | |||
</size> | |||
</property> | |||
</spacer> | |||
</item> | |||
<item> | |||
<widget class="PixmapButton" name="b_enable"> | |||
<property name="minimumSize"> | |||
<size> | |||
<width>24</width> | |||
<height>24</height> | |||
</size> | |||
</property> | |||
<property name="maximumSize"> | |||
<size> | |||
<width>24</width> | |||
<height>24</height> | |||
</size> | |||
</property> | |||
<property name="text"> | |||
<string/> | |||
</property> | |||
<property name="icon"> | |||
<iconset resource="../resources.qrc"> | |||
<normaloff>:/bitmaps/button_off.png</normaloff>:/bitmaps/button_off.png</iconset> | |||
</property> | |||
<property name="iconSize"> | |||
<size> | |||
<width>24</width> | |||
<height>24</height> | |||
</size> | |||
</property> | |||
<property name="checkable"> | |||
<bool>true</bool> | |||
</property> | |||
<property name="flat"> | |||
<bool>true</bool> | |||
</property> | |||
</widget> | |||
</item> | |||
<item> | |||
<widget class="PixmapButton" name="b_edit"> | |||
<property name="minimumSize"> | |||
<size> | |||
<width>24</width> | |||
<height>24</height> | |||
</size> | |||
</property> | |||
<property name="maximumSize"> | |||
<size> | |||
<width>24</width> | |||
<height>24</height> | |||
</size> | |||
</property> | |||
<property name="text"> | |||
<string/> | |||
</property> | |||
<property name="icon"> | |||
<iconset resource="../resources.qrc"> | |||
<normaloff>:/bitmaps/button_edit.png</normaloff>:/bitmaps/button_edit.png</iconset> | |||
</property> | |||
<property name="iconSize"> | |||
<size> | |||
<width>24</width> | |||
<height>24</height> | |||
</size> | |||
</property> | |||
<property name="checkable"> | |||
<bool>true</bool> | |||
</property> | |||
<property name="flat"> | |||
<bool>true</bool> | |||
</property> | |||
</widget> | |||
</item> | |||
<item> | |||
<spacer name="horizontalSpacer"> | |||
<property name="orientation"> | |||
<enum>Qt::Horizontal</enum> | |||
</property> | |||
<property name="sizeHint" stdset="0"> | |||
<size> | |||
<width>40</width> | |||
<height>20</height> | |||
</size> | |||
</property> | |||
</spacer> | |||
</item> | |||
<item> | |||
<widget class="QLabel" name="label_name"> | |||
<property name="text"> | |||
<string>PluginName</string> | |||
</property> | |||
<property name="alignment"> | |||
<set>Qt::AlignCenter</set> | |||
</property> | |||
</widget> | |||
</item> | |||
<item> | |||
<spacer name="horizontalSpacer_2"> | |||
<property name="orientation"> | |||
<enum>Qt::Horizontal</enum> | |||
</property> | |||
<property name="sizeHint" stdset="0"> | |||
<size> | |||
<width>40</width> | |||
<height>20</height> | |||
</size> | |||
</property> | |||
</spacer> | |||
</item> | |||
<item> | |||
<widget class="LEDButton" name="led_control"> | |||
<property name="minimumSize"> | |||
<size> | |||
<width>14</width> | |||
<height>14</height> | |||
</size> | |||
</property> | |||
<property name="maximumSize"> | |||
<size> | |||
<width>14</width> | |||
<height>14</height> | |||
</size> | |||
</property> | |||
<property name="text"> | |||
<string/> | |||
</property> | |||
<property name="checkable"> | |||
<bool>true</bool> | |||
</property> | |||
</widget> | |||
</item> | |||
<item> | |||
<widget class="LEDButton" name="led_midi"> | |||
<property name="minimumSize"> | |||
<size> | |||
<width>14</width> | |||
<height>14</height> | |||
</size> | |||
</property> | |||
<property name="maximumSize"> | |||
<size> | |||
<width>14</width> | |||
<height>14</height> | |||
</size> | |||
</property> | |||
<property name="text"> | |||
<string/> | |||
</property> | |||
<property name="checkable"> | |||
<bool>true</bool> | |||
</property> | |||
</widget> | |||
</item> | |||
<item> | |||
<widget class="LEDButton" name="led_audio_out"> | |||
<property name="minimumSize"> | |||
<size> | |||
<width>14</width> | |||
<height>14</height> | |||
</size> | |||
</property> | |||
<property name="maximumSize"> | |||
<size> | |||
<width>14</width> | |||
<height>14</height> | |||
</size> | |||
</property> | |||
<property name="text"> | |||
<string/> | |||
</property> | |||
<property name="checkable"> | |||
<bool>true</bool> | |||
</property> | |||
</widget> | |||
</item> | |||
<item> | |||
<spacer name="horizontalSpacer_5"> | |||
<property name="orientation"> | |||
<enum>Qt::Horizontal</enum> | |||
</property> | |||
<property name="sizeType"> | |||
<enum>QSizePolicy::Fixed</enum> | |||
</property> | |||
<property name="sizeHint" stdset="0"> | |||
<size> | |||
<width>20</width> | |||
<height>1</height> | |||
</size> | |||
</property> | |||
</spacer> | |||
</item> | |||
</layout> | |||
</item> | |||
<item> | |||
<widget class="Line" name="line"> | |||
<property name="lineWidth"> | |||
<number>0</number> | |||
</property> | |||
<property name="midLineWidth"> | |||
<number>1</number> | |||
</property> | |||
<property name="orientation"> | |||
<enum>Qt::Horizontal</enum> | |||
</property> | |||
</widget> | |||
</item> | |||
<item> | |||
<layout class="QHBoxLayout" name="horizontalLayout_2"> | |||
<property name="spacing"> | |||
<number>10</number> | |||
</property> | |||
<property name="topMargin"> | |||
<number>2</number> | |||
</property> | |||
<item> | |||
<widget class="QWidget" name="w_screws_left" native="true"> | |||
<property name="minimumSize"> | |||
<size> | |||
<width>20</width> | |||
<height>0</height> | |||
</size> | |||
</property> | |||
<property name="maximumSize"> | |||
<size> | |||
<width>20</width> | |||
<height>16777215</height> | |||
</size> | |||
</property> | |||
</widget> | |||
</item> | |||
<item> | |||
<widget class="QWidget" name="w_knobs" native="true"> | |||
<layout class="QHBoxLayout" name="horizontalLayout_3"/> | |||
</widget> | |||
</item> | |||
<item> | |||
<spacer name="horizontalSpacer_3"> | |||
<property name="orientation"> | |||
<enum>Qt::Horizontal</enum> | |||
</property> | |||
<property name="sizeHint" stdset="0"> | |||
<size> | |||
<width>40</width> | |||
<height>20</height> | |||
</size> | |||
</property> | |||
</spacer> | |||
</item> | |||
<item> | |||
<widget class="PixmapDial" name="dial_vol"> | |||
<property name="minimumSize"> | |||
<size> | |||
<width>34</width> | |||
<height>34</height> | |||
</size> | |||
</property> | |||
<property name="maximumSize"> | |||
<size> | |||
<width>34</width> | |||
<height>34</height> | |||
</size> | |||
</property> | |||
</widget> | |||
</item> | |||
<item> | |||
<layout class="QVBoxLayout" name="verticalLayout_2"> | |||
<property name="spacing"> | |||
<number>1</number> | |||
</property> | |||
<property name="leftMargin"> | |||
<number>0</number> | |||
</property> | |||
<property name="topMargin"> | |||
<number>0</number> | |||
</property> | |||
<property name="rightMargin"> | |||
<number>0</number> | |||
</property> | |||
<property name="bottomMargin"> | |||
<number>4</number> | |||
</property> | |||
<item> | |||
<widget class="DigitalPeakMeter" name="peak_out" native="true"> | |||
<property name="minimumSize"> | |||
<size> | |||
<width>150</width> | |||
<height>0</height> | |||
</size> | |||
</property> | |||
<property name="maximumSize"> | |||
<size> | |||
<width>150</width> | |||
<height>16777215</height> | |||
</size> | |||
</property> | |||
</widget> | |||
</item> | |||
</layout> | |||
</item> | |||
<item> | |||
<widget class="QWidget" name="w_screws_right" native="true"> | |||
<property name="minimumSize"> | |||
<size> | |||
<width>20</width> | |||
<height>0</height> | |||
</size> | |||
</property> | |||
<property name="maximumSize"> | |||
<size> | |||
<width>20</width> | |||
<height>16777215</height> | |||
</size> | |||
</property> | |||
</widget> | |||
</item> | |||
</layout> | |||
</item> | |||
</layout> | |||
</widget> | |||
<customwidgets> | |||
<customwidget> | |||
<class>PixmapDial</class> | |||
<extends>QDial</extends> | |||
<header>pixmapdial.h</header> | |||
</customwidget> | |||
<customwidget> | |||
<class>DigitalPeakMeter</class> | |||
<extends>QWidget</extends> | |||
<header>digitalpeakmeter.h</header> | |||
<container>1</container> | |||
</customwidget> | |||
<customwidget> | |||
<class>LEDButton</class> | |||
<extends>QPushButton</extends> | |||
<header>ledbutton.h</header> | |||
</customwidget> | |||
<customwidget> | |||
<class>PixmapButton</class> | |||
<extends>QPushButton</extends> | |||
<header>pixmapbutton.h</header> | |||
</customwidget> | |||
</customwidgets> | |||
<resources> | |||
<include location="../resources.qrc"/> | |||
</resources> | |||
<connections/> | |||
</ui> |
@@ -38,6 +38,7 @@ else: | |||
import ui_carla_plugin_default | |||
import ui_carla_plugin_basic_fx | |||
import ui_carla_plugin_calf | |||
import ui_carla_plugin_sf2 | |||
import ui_carla_plugin_zita | |||
import ui_carla_plugin_zynfx | |||
@@ -283,14 +284,14 @@ class AbstractPluginSlot(QFrame, PluginEditParentMeta): | |||
self.led_audio_out.setEnabled(False) | |||
if self.peak_in is not None: | |||
self.peak_in.setColor(self.peak_in.GREEN) | |||
self.peak_in.setColor(DigitalPeakMeter.GREEN) | |||
self.peak_in.setChannels(self.fPeaksInputCount) | |||
self.peak_in.setOrientation(self.peak_in.HORIZONTAL) | |||
self.peak_in.setOrientation(DigitalPeakMeter.HORIZONTAL) | |||
if self.peak_out is not None: | |||
self.peak_out.setColor(self.peak_in.BLUE) | |||
self.peak_out.setColor(DigitalPeakMeter.BLUE) | |||
self.peak_out.setChannels(self.fPeaksOutputCount) | |||
self.peak_out.setOrientation(self.peak_out.HORIZONTAL) | |||
self.peak_out.setOrientation(DigitalPeakMeter.HORIZONTAL) | |||
for paramIndex, paramWidget in self.fParameterList: | |||
paramWidget.setContextMenuPolicy(Qt.CustomContextMenu) | |||
@@ -1440,6 +1441,119 @@ class PluginSlot_Nekobi(AbstractPluginSlot): | |||
# ------------------------------------------------------------------------------------------------------------ | |||
class PluginSlot_SF2(AbstractPluginSlot): | |||
def __init__(self, parent, host, pluginId): | |||
AbstractPluginSlot.__init__(self, parent, host, pluginId) | |||
self.ui = ui_carla_plugin_sf2.Ui_PluginWidget() | |||
self.ui.setupUi(self) | |||
# ------------------------------------------------------------- | |||
# Set-up GUI | |||
#labelFont = self.ui.label_name.font() | |||
#labelFont.setBold(True) | |||
#labelFont.setPointSize(9) | |||
#self.ui.label_name.setFont(labelFont) | |||
self.setStyleSheet(""" | |||
PluginSlot_SF2#PluginWidget { | |||
background-image: url(:/bitmaps/background_3bandeq.png); | |||
background-repeat: repeat-xy; | |||
} | |||
QLabel#label_name { | |||
color: #BBB; | |||
} | |||
""") | |||
self.ui.b_enable.setPixmaps(":/bitmaps/button_off.png", ":/bitmaps/button_on.png", ":/bitmaps/button_off.png") | |||
self.ui.b_edit.setPixmaps(":/bitmaps/button_edit.png", ":/bitmaps/button_edit_down.png", ":/bitmaps/button_edit_hover.png") | |||
# ------------------------------------------------------------- | |||
# Set-up parameters | |||
parameterCount = self.host.get_parameter_count(self.fPluginId) | |||
index = 0 | |||
for i in range(parameterCount): | |||
if index >= 8: | |||
break | |||
paramInfo = self.host.get_parameter_info(self.fPluginId, i) | |||
paramData = self.host.get_parameter_data(self.fPluginId, i) | |||
paramRanges = self.host.get_parameter_ranges(self.fPluginId, i) | |||
if paramData['type'] != PARAMETER_INPUT: | |||
continue | |||
if paramData['hints'] & PARAMETER_IS_BOOLEAN: | |||
continue | |||
if (paramData['hints'] & PARAMETER_IS_ENABLED) == 0: | |||
continue | |||
paramName = getParameterShortName(paramInfo['name']) | |||
widget = PixmapDial(self, i) | |||
widget.setPixmap(3) | |||
widget.setLabel(paramName) | |||
widget.setMinimum(paramRanges['min']) | |||
widget.setMaximum(paramRanges['max']) | |||
if (paramData['hints'] & PARAMETER_IS_ENABLED) == 0: | |||
widget.setEnabled(False) | |||
self.ui.w_knobs.layout().insertWidget(index, widget) | |||
index += 1 | |||
self.fParameterList.append([i, widget]) | |||
self.ui.dial_vol.setIndex(PARAMETER_VOLUME) | |||
self.ui.dial_vol.setPixmap(3) | |||
self.ui.dial_vol.setLabel("Volume") | |||
self.ui.dial_vol.setCustomPaintMode(PixmapDial.CUSTOM_PAINT_MODE_CARLA_VOL) | |||
self.ui.dial_vol.setMinimum(0.0) | |||
self.ui.dial_vol.setMaximum(1.27) | |||
self.ui.dial_vol.forceWhiteLabelGradientText() | |||
self.ui.dial_vol.setVisible(self.fPluginInfo['hints'] & PLUGIN_CAN_VOLUME) | |||
self.fParameterList.append([PARAMETER_VOLUME, self.ui.dial_vol]) | |||
# ------------------------------------------------------------- | |||
self.b_enable = self.ui.b_enable | |||
self.b_edit = self.ui.b_edit | |||
self.label_name = self.ui.label_name | |||
self.led_control = self.ui.led_control | |||
self.led_midi = self.ui.led_midi | |||
self.led_audio_out = self.ui.led_audio_out | |||
self.peak_out = self.ui.peak_out | |||
self.ready() | |||
self.customContextMenuRequested.connect(self.slot_showDefaultCustomMenu) | |||
#------------------------------------------------------------------ | |||
def getFixedHeight(self): | |||
return 79 | |||
#------------------------------------------------------------------ | |||
def paintEvent(self, event): | |||
painter = QPainter(self) | |||
painter.setBrush(Qt.transparent) | |||
painter.setPen(QPen(QColor(42, 42, 42), 1)) | |||
painter.drawRect(0, 1, self.width()-1, 79-3) | |||
painter.setPen(QPen(QColor(60, 60, 60), 1)) | |||
painter.drawLine(0, 0, self.width(), 0) | |||
AbstractPluginSlot.paintEvent(self, event) | |||
# ------------------------------------------------------------------------------------------------------------ | |||
class PluginSlot_ZitaRev(AbstractPluginSlot): | |||
def __init__(self, parent, host, pluginId): | |||
AbstractPluginSlot.__init__(self, parent, host, pluginId) | |||
@@ -1819,6 +1933,9 @@ def createPluginSlot(parent, host, pluginId, useSkins): | |||
#pluginIcon = pluginInfo['iconName'] | |||
if pluginInfo['type'] == PLUGIN_SF2: | |||
return PluginSlot_SF2(parent, host, pluginId) | |||
if pluginMaker == "OpenAV Productions": | |||
return PluginSlot_OpenAV(parent, host, pluginId) | |||