Browse Source

Cleanup

tags/1.9.5
falkTX 11 years ago
parent
commit
af4d74f3dc
5 changed files with 203 additions and 232 deletions
  1. +4
    -4
      source/carla_backend.py
  2. +1
    -1
      source/carla_patchbay.py
  3. +15
    -7
      source/carla_skin.py
  4. +181
    -216
      source/carla_widgets.py
  5. +2
    -4
      source/widgets/paramspinbox.py

+ 4
- 4
source/carla_backend.py View File

@@ -1237,8 +1237,8 @@ else:
# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------
# Carla Host object (Meta) # Carla Host object (Meta)


#class CarlaHostMeta(object):
class CarlaHostMeta(metaclass=ABCMeta):
class CarlaHostMeta(object):
#class CarlaHostMeta(metaclass=ABCMeta):
def __init__(self): def __init__(self):
# info about this host object # info about this host object
self.isControl = False self.isControl = False
@@ -2718,8 +2718,8 @@ class PluginStoreInfo(object):
# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------
# Carla Host object for plugins (using pipes) # Carla Host object for plugins (using pipes)


#class CarlaHostPlugin(CarlaHostMeta):
class CarlaHostPlugin(CarlaHostMeta, metaclass=ABCMeta):
class CarlaHostPlugin(CarlaHostMeta):
#class CarlaHostPlugin(CarlaHostMeta, metaclass=ABCMeta):
def __init__(self): def __init__(self):
CarlaHostMeta.__init__(self) CarlaHostMeta.__init__(self)




+ 1
- 1
source/carla_patchbay.py View File

@@ -256,7 +256,7 @@ class CarlaPatchbayW(QFrame, PluginEditParentMeta, metaclass=PyQtMetaClass):
if self.fIsOnlyPatchbay: if self.fIsOnlyPatchbay:
pitem = PluginEdit(self, gCarla.host, pluginId) pitem = PluginEdit(self, gCarla.host, pluginId)
else: else:
pitem = PluginInfo(self, gCarla.host, pluginId)
pitem = PluginInfo(self, pluginId)


self.fPluginList.append(pitem) self.fPluginList.append(pitem)
self.fPluginCount += 1 self.fPluginCount += 1


+ 15
- 7
source/carla_skin.py View File

@@ -208,11 +208,15 @@ class AbstractPluginSlot(QFrame, PluginEditParentMeta, metaclass=PyQtMetaClass):


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


def setActive(self, active, sendGui=False, sendCallback=True):
def setActive(self, active, sendCallback=False, sendHost=True):
self.fIsActive = active self.fIsActive = active


if sendGui: self.activeChanged(active)
if sendCallback: gCarla.host.set_active(self.fPluginId, active)
if sendCallback:
self.fParameterIconTimer = ICON_STATE_ON
self.activeChanged(active)

if sendHost:
gCarla.host.set_active(self.fPluginId, active)


if active: if active:
self.fEditDialog.clearNotes() self.fEditDialog.clearNotes()
@@ -254,14 +258,13 @@ class AbstractPluginSlot(QFrame, PluginEditParentMeta, metaclass=PyQtMetaClass):
#------------------------------------------------------------------ #------------------------------------------------------------------


def setParameterValue(self, parameterId, value, sendCallback): def setParameterValue(self, parameterId, value, sendCallback):
self.fParameterIconTimer = ICON_STATE_ON

if parameterId == PARAMETER_ACTIVE: if parameterId == PARAMETER_ACTIVE:
return self.setActive(bool(value), True, False) return self.setActive(bool(value), True, False)


self.fEditDialog.setParameterValue(parameterId, value) self.fEditDialog.setParameterValue(parameterId, value)


if sendCallback: if sendCallback:
self.fParameterIconTimer = ICON_STATE_ON
self.parameterValueChanged(parameterId, value) self.parameterValueChanged(parameterId, value)


def setParameterDefault(self, parameterId, value): def setParameterDefault(self, parameterId, value):
@@ -276,17 +279,17 @@ class AbstractPluginSlot(QFrame, PluginEditParentMeta, metaclass=PyQtMetaClass):
#------------------------------------------------------------------ #------------------------------------------------------------------


def setProgram(self, index, sendCallback): def setProgram(self, index, sendCallback):
self.fParameterIconTimer = ICON_STATE_ON
self.fEditDialog.setProgram(index) self.fEditDialog.setProgram(index)


if sendCallback: if sendCallback:
self.fParameterIconTimer = ICON_STATE_ON
self.programChanged(index) self.programChanged(index)


def setMidiProgram(self, index, sendCallback): def setMidiProgram(self, index, sendCallback):
self.fParameterIconTimer = ICON_STATE_ON
self.fEditDialog.setMidiProgram(index) self.fEditDialog.setMidiProgram(index)


if sendCallback: if sendCallback:
self.fParameterIconTimer = ICON_STATE_ON
self.midiProgramChanged(index) self.midiProgramChanged(index)


#------------------------------------------------------------------ #------------------------------------------------------------------
@@ -361,6 +364,9 @@ class AbstractPluginSlot(QFrame, PluginEditParentMeta, metaclass=PyQtMetaClass):
def pluginHintsChanged(self, hints): def pluginHintsChanged(self, hints):
self.fPluginInfo['hints'] = hints self.fPluginInfo['hints'] = hints


self.ui.dial_drywet.setVisible(hints & PLUGIN_CAN_DRYWET)
self.ui.dial_vol.setVisible(hints & PLUGIN_CAN_VOLUME)

if self.b_gui is not None: if self.b_gui is not None:
self.b_gui.setEnabled(bool(hints & PLUGIN_HAS_CUSTOM_UI)) self.b_gui.setEnabled(bool(hints & PLUGIN_HAS_CUSTOM_UI))


@@ -908,6 +914,7 @@ class PluginSlot_BasicFX(AbstractPluginSlot):
self.ui.dial_drywet.setMinimum(0.0) self.ui.dial_drywet.setMinimum(0.0)
self.ui.dial_drywet.setMaximum(1.0) self.ui.dial_drywet.setMaximum(1.0)
self.ui.dial_drywet.forceWhiteLabelGradientText() self.ui.dial_drywet.forceWhiteLabelGradientText()
self.ui.dial_drywet.setVisible(self.fPluginInfo['hints'] & PLUGIN_CAN_DRYWET)


self.ui.dial_vol.setIndex(PARAMETER_VOLUME) self.ui.dial_vol.setIndex(PARAMETER_VOLUME)
self.ui.dial_vol.setPixmap(3) self.ui.dial_vol.setPixmap(3)
@@ -916,6 +923,7 @@ class PluginSlot_BasicFX(AbstractPluginSlot):
self.ui.dial_vol.setMinimum(0.0) self.ui.dial_vol.setMinimum(0.0)
self.ui.dial_vol.setMaximum(1.27) self.ui.dial_vol.setMaximum(1.27)
self.ui.dial_vol.forceWhiteLabelGradientText() self.ui.dial_vol.forceWhiteLabelGradientText()
self.ui.dial_vol.setVisible(self.fPluginInfo['hints'] & PLUGIN_CAN_VOLUME)


self.fParameterList.append([PARAMETER_DRYWET, self.ui.dial_drywet]) self.fParameterList.append([PARAMETER_DRYWET, self.ui.dial_drywet])
self.fParameterList.append([PARAMETER_VOLUME, self.ui.dial_vol]) self.fParameterList.append([PARAMETER_VOLUME, self.ui.dial_vol])


+ 181
- 216
source/carla_widgets.py View File

@@ -267,7 +267,7 @@ class PluginParameter(QWidget):
self.ui.widget.setMinimum(pInfo['minimum']) self.ui.widget.setMinimum(pInfo['minimum'])
self.ui.widget.setMaximum(pInfo['maximum']) self.ui.widget.setMaximum(pInfo['maximum'])
self.ui.widget.setDefault(pInfo['default']) self.ui.widget.setDefault(pInfo['default'])
self.ui.widget.setValue(pInfo['current'], False)
self.ui.widget.setValue(pInfo['current'])
self.ui.widget.setLabel(pInfo['unit']) self.ui.widget.setLabel(pInfo['unit'])
self.ui.widget.setStep(pInfo['step']) self.ui.widget.setStep(pInfo['step'])
self.ui.widget.setStepSmall(pInfo['stepSmall']) self.ui.widget.setStepSmall(pInfo['stepSmall'])
@@ -328,8 +328,10 @@ class PluginParameter(QWidget):
def setDefault(self, value): def setDefault(self, value):
self.ui.widget.setDefault(value) self.ui.widget.setDefault(value)


def setValue(self, value, send=True):
self.ui.widget.setValue(value, send)
def setValue(self, value):
self.ui.widget.blockSignals(True)
self.ui.widget.setValue(value)
self.ui.widget.blockSignals(False)


def setMidiControl(self, control): def setMidiControl(self, control):
self.fMidiControl = control self.fMidiControl = control
@@ -411,8 +413,8 @@ class PluginParameter(QWidget):
# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------
# Plugin Editor Parent (Meta class) # Plugin Editor Parent (Meta class)


#class PluginEditParentMeta():
class PluginEditParentMeta(metaclass=ABCMeta):
class PluginEditParentMeta():
#class PluginEditParentMeta(metaclass=ABCMeta):
@abstractmethod @abstractmethod
def editDialogChanged(self, visible): def editDialogChanged(self, visible):
raise NotImplementedError raise NotImplementedError
@@ -454,6 +456,7 @@ class PluginEdit(QDialog):
self.ui.setupUi(self) self.ui.setupUi(self)


if False: if False:
# kdevelop likes this :)
parent = PluginEditParentMeta() parent = PluginEditParentMeta()
host = CarlaHostMeta() host = CarlaHostMeta()


@@ -461,64 +464,60 @@ class PluginEdit(QDialog):
# Internal stuff # Internal stuff


self.fGeometry = QByteArray() self.fGeometry = QByteArray()
self.fParent = parent
self.fPluginId = pluginId self.fPluginId = pluginId
self.fPuginInfo = None
self.fRealParent = parent
self.fPluginInfo = None


self.fCurrentProgram = -1
self.fCurrentMidiProgram = -1
self.fCurrentStateFilename = None self.fCurrentStateFilename = None
self.fControlChannel = int(host.get_internal_parameter_value(pluginId, PARAMETER_CTRL_CHANNEL)) self.fControlChannel = int(host.get_internal_parameter_value(pluginId, PARAMETER_CTRL_CHANNEL))
self.fFirstInit = True self.fFirstInit = True


self.fParameterCount = 0
self.fParameterList = [] # (type, id, widget)
self.fParameterList = [] # (type, id, widget)
self.fParametersToUpdate = [] # (id, value) self.fParametersToUpdate = [] # (id, value)


self.fPlayingNotes = [] # (channel, note) self.fPlayingNotes = [] # (channel, note)


self.fTabIconOff = QIcon(":/bitmaps/led_off.png")
self.fTabIconOn = QIcon(":/bitmaps/led_yellow.png")
self.fTabIconCount = 0
self.fTabIconOff = QIcon(":/bitmaps/led_off.png")
self.fTabIconOn = QIcon(":/bitmaps/led_yellow.png")
self.fTabIconTimers = [] self.fTabIconTimers = []


# ------------------------------------------------------------- # -------------------------------------------------------------
# Set-up GUI # Set-up GUI


self.ui.dial_drywet.setCustomPaintMode(self.ui.dial_drywet.CUSTOM_PAINT_MODE_CARLA_WET)
#self.ui.dial_drywet.setCustomPaintMode(self.ui.dial_drywet.CUSTOM_PAINT_MODE_CARLA_WET)
self.ui.dial_drywet.setPixmap(3) self.ui.dial_drywet.setPixmap(3)
self.ui.dial_drywet.setLabel("Dry/Wet") self.ui.dial_drywet.setLabel("Dry/Wet")
self.ui.dial_drywet.setCustomPaintMode(self.ui.dial_drywet.CUSTOM_PAINT_MODE_CARLA_WET)
self.ui.dial_drywet.setMinimum(0.0) self.ui.dial_drywet.setMinimum(0.0)
self.ui.dial_drywet.setMaximum(1.0) self.ui.dial_drywet.setMaximum(1.0)
self.ui.dial_drywet.setValue(host.get_internal_parameter_value(pluginId, PARAMETER_DRYWET))


self.ui.dial_vol.setCustomPaintMode(self.ui.dial_vol.CUSTOM_PAINT_MODE_CARLA_VOL) self.ui.dial_vol.setCustomPaintMode(self.ui.dial_vol.CUSTOM_PAINT_MODE_CARLA_VOL)
self.ui.dial_vol.setPixmap(3) self.ui.dial_vol.setPixmap(3)
self.ui.dial_vol.setLabel("Volume") self.ui.dial_vol.setLabel("Volume")
self.ui.dial_vol.setMinimum(0.0) self.ui.dial_vol.setMinimum(0.0)
self.ui.dial_vol.setMaximum(1.27) self.ui.dial_vol.setMaximum(1.27)
self.ui.dial_vol.setValue(host.get_internal_parameter_value(pluginId, PARAMETER_VOLUME))


self.ui.dial_b_left.setCustomPaintMode(self.ui.dial_b_left.CUSTOM_PAINT_MODE_CARLA_L) self.ui.dial_b_left.setCustomPaintMode(self.ui.dial_b_left.CUSTOM_PAINT_MODE_CARLA_L)
self.ui.dial_b_left.setPixmap(4) self.ui.dial_b_left.setPixmap(4)
self.ui.dial_b_left.setLabel("L") self.ui.dial_b_left.setLabel("L")
self.ui.dial_b_left.setMinimum(-1.0) self.ui.dial_b_left.setMinimum(-1.0)
self.ui.dial_b_left.setMaximum(1.0) self.ui.dial_b_left.setMaximum(1.0)
self.ui.dial_b_left.setValue(host.get_internal_parameter_value(pluginId, PARAMETER_BALANCE_LEFT))


self.ui.dial_b_right.setCustomPaintMode(self.ui.dial_b_right.CUSTOM_PAINT_MODE_CARLA_R) self.ui.dial_b_right.setCustomPaintMode(self.ui.dial_b_right.CUSTOM_PAINT_MODE_CARLA_R)
self.ui.dial_b_right.setPixmap(4) self.ui.dial_b_right.setPixmap(4)
self.ui.dial_b_right.setLabel("R") self.ui.dial_b_right.setLabel("R")
self.ui.dial_b_right.setMinimum(-1.0) self.ui.dial_b_right.setMinimum(-1.0)
self.ui.dial_b_right.setMaximum(1.0) self.ui.dial_b_right.setMaximum(1.0)
self.ui.dial_b_right.setValue(host.get_internal_parameter_value(pluginId, PARAMETER_BALANCE_RIGHT))


self.ui.dial_pan.setCustomPaintMode(self.ui.dial_b_right.CUSTOM_PAINT_MODE_CARLA_PAN) self.ui.dial_pan.setCustomPaintMode(self.ui.dial_b_right.CUSTOM_PAINT_MODE_CARLA_PAN)
self.ui.dial_pan.setPixmap(4) self.ui.dial_pan.setPixmap(4)
self.ui.dial_pan.setLabel("Pan") self.ui.dial_pan.setLabel("Pan")
self.ui.dial_pan.setMinimum(-1.0) self.ui.dial_pan.setMinimum(-1.0)
self.ui.dial_pan.setMaximum(1.0) self.ui.dial_pan.setMaximum(1.0)

self.ui.dial_drywet.setValue(host.get_internal_parameter_value(pluginId, PARAMETER_DRYWET))
self.ui.dial_vol.setValue(host.get_internal_parameter_value(pluginId, PARAMETER_VOLUME))
self.ui.dial_b_left.setValue(host.get_internal_parameter_value(pluginId, PARAMETER_BALANCE_LEFT))
self.ui.dial_b_right.setValue(host.get_internal_parameter_value(pluginId, PARAMETER_BALANCE_RIGHT))
self.ui.dial_pan.setValue(host.get_internal_parameter_value(pluginId, PARAMETER_PANNING)) self.ui.dial_pan.setValue(host.get_internal_parameter_value(pluginId, PARAMETER_PANNING))


self.ui.sb_ctrl_channel.setValue(self.fControlChannel+1) self.ui.sb_ctrl_channel.setValue(self.fControlChannel+1)
@@ -536,6 +535,8 @@ class PluginEdit(QDialog):


self.reloadAll() self.reloadAll()


self.fFirstInit = False

# ------------------------------------------------------------- # -------------------------------------------------------------
# Set-up connections # Set-up connections


@@ -596,7 +597,7 @@ class PluginEdit(QDialog):


# Update all parameter values # Update all parameter values
for paramType, paramId, paramWidget in self.fParameterList: for paramType, paramId, paramWidget in self.fParameterList:
paramWidget.setValue(self.host.get_current_parameter_value(self.fPluginId, paramId), False)
paramWidget.setValue(self.host.get_current_parameter_value(self.fPluginId, paramId))
paramWidget.update() paramWidget.update()


self.fParametersToUpdate = [] self.fParametersToUpdate = []
@@ -616,10 +617,8 @@ class PluginEdit(QDialog):
if not self.ui.scrollArea.isEnabled(): if not self.ui.scrollArea.isEnabled():
self.resize(self.width(), self.height()-self.ui.scrollArea.height()) self.resize(self.width(), self.height()-self.ui.scrollArea.height())


self.fFirstInit = False

# Workaround for a Qt4 bug, see https://bugreports.qt-project.org/browse/QTBUG-7792 # Workaround for a Qt4 bug, see https://bugreports.qt-project.org/browse/QTBUG-7792
QTimer.singleShot(0, self.slot_fixNameWordWrap)
if LINUX: QTimer.singleShot(0, self.slot_fixNameWordWrap)


@pyqtSlot() @pyqtSlot()
def slot_fixNameWordWrap(self): def slot_fixNameWordWrap(self):
@@ -629,7 +628,7 @@ class PluginEdit(QDialog):
#------------------------------------------------------------------ #------------------------------------------------------------------


def reloadInfo(self): def reloadInfo(self):
pluginName = self.host.get_real_plugin_name(self.fPluginId)
realPluginName = self.host.get_real_plugin_name(self.fPluginId)
#audioCountInfo = self.host.get_audio_port_count_info(self.fPluginId) #audioCountInfo = self.host.get_audio_port_count_info(self.fPluginId)
midiCountInfo = self.host.get_midi_port_count_info(self.fPluginId) midiCountInfo = self.host.get_midi_port_count_info(self.fPluginId)
#paramCountInfo = self.host.get_parameter_count_info(self.fPluginId) #paramCountInfo = self.host.get_parameter_count_info(self.fPluginId)
@@ -638,60 +637,30 @@ class PluginEdit(QDialog):


self.ui.le_type.setText(getPluginTypeAsString(self.fPluginInfo['type'])) self.ui.le_type.setText(getPluginTypeAsString(self.fPluginInfo['type']))


if pluginName:
self.ui.label_name.setEnabled(True)
self.ui.le_name.setEnabled(True)
self.ui.le_name.setText(pluginName)
self.ui.le_name.setToolTip(pluginName)
else:
self.ui.label_name.setEnabled(False)
self.ui.le_name.setEnabled(False)
self.ui.le_name.setText("")
self.ui.le_name.setToolTip("")

if self.fPluginInfo['label']:
self.ui.label_label.setEnabled(True)
self.ui.le_label.setEnabled(True)
self.ui.le_label.setText(self.fPluginInfo['label'])
self.ui.le_label.setToolTip(self.fPluginInfo['label'])
else:
self.ui.label_label.setEnabled(False)
self.ui.le_label.setEnabled(False)
self.ui.le_label.setText("")
self.ui.le_label.setToolTip("")

if self.fPluginInfo['maker']:
self.ui.label_maker.setEnabled(True)
self.ui.le_maker.setEnabled(True)
self.ui.le_maker.setText(self.fPluginInfo['maker'])
self.ui.le_maker.setToolTip(self.fPluginInfo['maker'])
else:
self.ui.label_maker.setEnabled(False)
self.ui.le_maker.setEnabled(False)
self.ui.le_maker.setText("")
self.ui.le_maker.setToolTip("")

if self.fPluginInfo['copyright']:
self.ui.label_copyright.setEnabled(True)
self.ui.le_copyright.setEnabled(True)
self.ui.le_copyright.setText(self.fPluginInfo['copyright'])
self.ui.le_copyright.setToolTip(self.fPluginInfo['copyright'])
else:
self.ui.label_copyright.setEnabled(False)
self.ui.le_copyright.setEnabled(False)
self.ui.le_copyright.setText("")
self.ui.le_copyright.setToolTip("")

if self.fPluginInfo['uniqueId'] != 0:
self.ui.label_unique_id.setEnabled(True)
self.ui.le_unique_id.setEnabled(True)
self.ui.le_unique_id.setText(str(self.fPluginInfo['uniqueId']))
self.ui.le_unique_id.setToolTip(str(self.fPluginInfo['uniqueId']))
else:
self.ui.label_unique_id.setEnabled(False)
self.ui.le_unique_id.setEnabled(False)
self.ui.le_unique_id.setText("")
self.ui.le_unique_id.setToolTip("")
self.ui.label_name.setEnabled(bool(realPluginName))
self.ui.le_name.setEnabled(bool(realPluginName))
self.ui.le_name.setText(realPluginName)
self.ui.le_name.setToolTip(realPluginName)

self.ui.label_label.setEnabled(bool(self.fPluginInfo['label']))
self.ui.le_label.setEnabled(bool(self.fPluginInfo['label']))
self.ui.le_label.setText(self.fPluginInfo['label'])
self.ui.le_label.setToolTip(self.fPluginInfo['label'])

self.ui.label_maker.setEnabled(bool(self.fPluginInfo['maker']))
self.ui.le_maker.setEnabled(bool(self.fPluginInfo['maker']))
self.ui.le_maker.setText(self.fPluginInfo['maker'])
self.ui.le_maker.setToolTip(self.fPluginInfo['maker'])

self.ui.label_copyright.setEnabled(bool(self.fPluginInfo['copyright']))
self.ui.le_copyright.setEnabled(bool(self.fPluginInfo['copyright']))
self.ui.le_copyright.setText(self.fPluginInfo['copyright'])
self.ui.le_copyright.setToolTip(self.fPluginInfo['copyright'])

self.ui.label_unique_id.setEnabled(bool(self.fPluginInfo['uniqueId']))
self.ui.le_unique_id.setEnabled(bool(self.fPluginInfo['uniqueId']))
self.ui.le_unique_id.setText(str(self.fPluginInfo['uniqueId']))
self.ui.le_unique_id.setToolTip(str(self.fPluginInfo['uniqueId']))


self.ui.label_plugin.setText("\n%s\n" % self.fPluginInfo['name']) self.ui.label_plugin.setText("\n%s\n" % self.fPluginInfo['name'])
self.setWindowTitle(self.fPluginInfo['name']) self.setWindowTitle(self.fPluginInfo['name'])
@@ -728,18 +697,15 @@ class PluginEdit(QDialog):
self.ui.scrollArea.setEnabled(showKeyboard) self.ui.scrollArea.setEnabled(showKeyboard)
self.ui.scrollArea.setVisible(showKeyboard) self.ui.scrollArea.setVisible(showKeyboard)


# Force-Update parent for new hints
if self.fRealParent and not self.fFirstInit:
self.fRealParent.pluginHintsChanged(pluginHints)
# Force-update parent for new hints
if self.fParent is not None and not self.fFirstInit:
self.fParent.pluginHintsChanged(pluginHints)


def reloadParameters(self): def reloadParameters(self):
# Reset # Reset
self.fParameterCount = 0
self.fParameterList = []
self.fParameterList = []
self.fParametersToUpdate = [] self.fParametersToUpdate = []

self.fTabIconCount = 0
self.fTabIconTimers = []
self.fTabIconTimers = []


# Remove all previous parameters # Remove all previous parameters
for x in range(self.ui.tabWidget.count()-1): for x in range(self.ui.tabWidget.count()-1):
@@ -748,104 +714,14 @@ class PluginEdit(QDialog):


parameterCount = self.host.get_parameter_count(self.fPluginId) parameterCount = self.host.get_parameter_count(self.fPluginId)


if parameterCount <= 0:
pass

elif parameterCount <= gCarla.maxParameters:
paramInputListFull = []
paramOutputListFull = []

paramInputList = [] # ([params], width)
paramInputWidth = 0
paramOutputList = [] # ([params], width)
paramOutputWidth = 0

for i in range(parameterCount):
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)
paramValue = self.host.get_current_parameter_value(self.fPluginId, i)

if paramData['type'] not in (PARAMETER_INPUT, PARAMETER_OUTPUT):
continue
if (paramData['hints'] & PARAMETER_IS_ENABLED) == 0:
continue

parameter = {
'type': paramData['type'],
'hints': paramData['hints'],
'name': paramInfo['name'],
'unit': paramInfo['unit'],
'scalePoints': [],

'index': paramData['index'],
'default': paramRanges['def'],
'minimum': paramRanges['min'],
'maximum': paramRanges['max'],
'step': paramRanges['step'],
'stepSmall': paramRanges['stepSmall'],
'stepLarge': paramRanges['stepLarge'],
'midiCC': paramData['midiCC'],
'midiChannel': paramData['midiChannel']+1,

'current': paramValue
}

for j in range(paramInfo['scalePointCount']):
scalePointInfo = self.host.get_parameter_scalepoint_info(self.fPluginId, i, j)

parameter['scalePoints'].append({
'value': scalePointInfo['value'],
'label': scalePointInfo['label']
})

#parameter['name'] = parameter['name'][:30] + (parameter['name'][30:] and "...")

# -----------------------------------------------------------------
# Get width values, in packs of 10

if parameter['type'] == PARAMETER_INPUT:
paramInputWidthTMP = QFontMetrics(self.font()).width(parameter['name'])

if paramInputWidthTMP > paramInputWidth:
paramInputWidth = paramInputWidthTMP

paramInputList.append(parameter)

if len(paramInputList) == self.kParamsPerPage:
paramInputListFull.append((paramInputList, paramInputWidth))
paramInputList = []
paramInputWidth = 0
# -----------------------------------------------------------------


else:
paramOutputWidthTMP = QFontMetrics(self.font()).width(parameter['name'])

if paramOutputWidthTMP > paramOutputWidth:
paramOutputWidth = paramOutputWidthTMP

paramOutputList.append(parameter)

if len(paramOutputList) == self.kParamsPerPage:
paramOutputListFull.append((paramOutputList, paramOutputWidth))
paramOutputList = []
paramOutputWidth = 0

# for i in range(parameterCount)
else:
# Final page width values
if 0 < len(paramInputList) < 10:
paramInputListFull.append((paramInputList, paramInputWidth))

if 0 < len(paramOutputList) < 10:
paramOutputListFull.append((paramOutputList, paramOutputWidth))

# -----------------------------------------------------------------
# Create parameter tabs + widgets
if parameterCount <= 0:
return


self._createParameterWidgets(PARAMETER_INPUT, paramInputListFull, self.tr("Parameters"))
self._createParameterWidgets(PARAMETER_OUTPUT, paramOutputListFull, self.tr("Outputs"))
# -----------------------------------------------------------------


else: # > gCarla.maxParameters
if parameterCount > gCarla.maxParameters:
fakeName = self.tr("This plugin has too many parameters to display here!") fakeName = self.tr("This plugin has too many parameters to display here!")


paramFakeListFull = [] paramFakeListFull = []
@@ -876,6 +752,100 @@ class PluginEdit(QDialog):
paramFakeListFull.append((paramFakeList, paramFakeWidth)) paramFakeListFull.append((paramFakeList, paramFakeWidth))


self._createParameterWidgets(PARAMETER_UNKNOWN, paramFakeListFull, self.tr("Information")) self._createParameterWidgets(PARAMETER_UNKNOWN, paramFakeListFull, self.tr("Information"))
return

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

paramInputList = []
paramOutputList = []
paramInputWidth = 0
paramOutputWidth = 0

paramInputListFull = [] # ([params], width)
paramOutputListFull = [] # ([params], width)

for i in range(parameterCount):
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)
paramValue = self.host.get_current_parameter_value(self.fPluginId, i)

if paramData['type'] not in (PARAMETER_INPUT, PARAMETER_OUTPUT):
continue
if (paramData['hints'] & PARAMETER_IS_ENABLED) == 0:
continue

parameter = {
'type': paramData['type'],
'hints': paramData['hints'],
'name': paramInfo['name'],
'unit': paramInfo['unit'],
'scalePoints': [],

'index': paramData['index'],
'default': paramRanges['def'],
'minimum': paramRanges['min'],
'maximum': paramRanges['max'],
'step': paramRanges['step'],
'stepSmall': paramRanges['stepSmall'],
'stepLarge': paramRanges['stepLarge'],
'midiCC': paramData['midiCC'],
'midiChannel': paramData['midiChannel']+1,

'current': paramValue
}

for j in range(paramInfo['scalePointCount']):
scalePointInfo = self.host.get_parameter_scalepoint_info(self.fPluginId, i, j)

parameter['scalePoints'].append({
'value': scalePointInfo['value'],
'label': scalePointInfo['label']
})

#parameter['name'] = parameter['name'][:30] + (parameter['name'][30:] and "...")

# -----------------------------------------------------------------
# Get width values, in packs of 10

if parameter['type'] == PARAMETER_INPUT:
paramInputWidthTMP = QFontMetrics(self.font()).width(parameter['name'])

if paramInputWidthTMP > paramInputWidth:
paramInputWidth = paramInputWidthTMP

paramInputList.append(parameter)

if len(paramInputList) == self.kParamsPerPage:
paramInputListFull.append((paramInputList, paramInputWidth))
paramInputList = []
paramInputWidth = 0

else:
paramOutputWidthTMP = QFontMetrics(self.font()).width(parameter['name'])

if paramOutputWidthTMP > paramOutputWidth:
paramOutputWidth = paramOutputWidthTMP

paramOutputList.append(parameter)

if len(paramOutputList) == self.kParamsPerPage:
paramOutputListFull.append((paramOutputList, paramOutputWidth))
paramOutputList = []
paramOutputWidth = 0

# for i in range(parameterCount)
else:
# Final page width values
if 0 < len(paramInputList) < 10:
paramInputListFull.append((paramInputList, paramInputWidth))

if 0 < len(paramOutputList) < 10:
paramOutputListFull.append((paramOutputList, paramOutputWidth))

# Create parameter tabs + widgets
self._createParameterWidgets(PARAMETER_INPUT, paramInputListFull, self.tr("Parameters"))
self._createParameterWidgets(PARAMETER_OUTPUT, paramOutputListFull, self.tr("Outputs"))


def reloadPrograms(self): def reloadPrograms(self):
# Programs # Programs
@@ -893,11 +863,9 @@ class PluginEdit(QDialog):
#pName = pName[:40] + (pName[40:] and "...") #pName = pName[:40] + (pName[40:] and "...")
self.ui.cb_programs.addItem(pName) self.ui.cb_programs.addItem(pName)


self.fCurrentProgram = self.host.get_current_program_index(self.fPluginId)
self.ui.cb_programs.setCurrentIndex(self.fCurrentProgram)
self.ui.cb_programs.setCurrentIndex(self.host.get_current_program_index(self.fPluginId))


else: else:
self.fCurrentProgram = -1
self.ui.cb_programs.setEnabled(False) self.ui.cb_programs.setEnabled(False)
self.ui.label_programs.setEnabled(False) self.ui.label_programs.setEnabled(False)


@@ -922,11 +890,9 @@ class PluginEdit(QDialog):


self.ui.cb_midi_programs.addItem("%03i:%03i - %s" % (mpBank+1, mpProg+1, mpName)) self.ui.cb_midi_programs.addItem("%03i:%03i - %s" % (mpBank+1, mpProg+1, mpName))


self.fCurrentMidiProgram = self.host.get_current_midi_program_index(self.fPluginId)
self.ui.cb_midi_programs.setCurrentIndex(self.fCurrentMidiProgram)
self.ui.cb_midi_programs.setCurrentIndex(self.host.get_current_midi_program_index(self.fPluginId))


else: else:
self.fCurrentMidiProgram = -1
self.ui.cb_midi_programs.setEnabled(False) self.ui.cb_midi_programs.setEnabled(False)
self.ui.label_midi_programs.setEnabled(False) self.ui.label_midi_programs.setEnabled(False)


@@ -1108,7 +1074,7 @@ class PluginEdit(QDialog):
if paramId != index: if paramId != index:
continue continue


paramWidget.setValue(value, False)
paramWidget.setValue(value)


if paramType == PARAMETER_INPUT: if paramType == PARAMETER_INPUT:
tabIndex = paramWidget.getTabIndex() tabIndex = paramWidget.getTabIndex()
@@ -1125,9 +1091,10 @@ class PluginEdit(QDialog):


# Update parameter outputs # Update parameter outputs
for paramType, paramId, paramWidget in self.fParameterList: for paramType, paramId, paramWidget in self.fParameterList:
if paramType == PARAMETER_OUTPUT:
value = self.host.get_current_parameter_value(self.fPluginId, paramId)
paramWidget.setValue(value, False)
if paramType != PARAMETER_OUTPUT:
continue

paramWidget.setValue(self.host.get_current_parameter_value(self.fPluginId, paramId))


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


@@ -1224,36 +1191,36 @@ class PluginEdit(QDialog):
def slot_dryWetChanged(self, value): def slot_dryWetChanged(self, value):
self.host.set_drywet(self.fPluginId, value) self.host.set_drywet(self.fPluginId, value)


if self.fRealParent is not None:
self.fRealParent.parameterValueChanged(PARAMETER_DRYWET, value)
if self.fParent is not None:
self.fParent.parameterValueChanged(PARAMETER_DRYWET, value)


@pyqtSlot(int) @pyqtSlot(int)
def slot_volumeChanged(self, value): def slot_volumeChanged(self, value):
self.host.set_volume(self.fPluginId, value) self.host.set_volume(self.fPluginId, value)


if self.fRealParent is not None:
self.fRealParent.parameterValueChanged(PARAMETER_VOLUME, value)
if self.fParent is not None:
self.fParent.parameterValueChanged(PARAMETER_VOLUME, value)


@pyqtSlot(int) @pyqtSlot(int)
def slot_balanceLeftChanged(self, value): def slot_balanceLeftChanged(self, value):
self.host.set_balance_left(self.fPluginId, value) self.host.set_balance_left(self.fPluginId, value)


if self.fRealParent is not None:
self.fRealParent.parameterValueChanged(PARAMETER_BALANCE_LEFT, value)
if self.fParent is not None:
self.fParent.parameterValueChanged(PARAMETER_BALANCE_LEFT, value)


@pyqtSlot(int) @pyqtSlot(int)
def slot_balanceRightChanged(self, value): def slot_balanceRightChanged(self, value):
self.host.set_balance_right(self.fPluginId, value) self.host.set_balance_right(self.fPluginId, value)


if self.fRealParent is not None:
self.fRealParent.parameterValueChanged(PARAMETER_BALANCE_RIGHT, value)
if self.fParent is not None:
self.fParent.parameterValueChanged(PARAMETER_BALANCE_RIGHT, value)


@pyqtSlot(int) @pyqtSlot(int)
def slot_panChanged(self, value): def slot_panChanged(self, value):
self.host.set_panning(self.fPluginId, value) self.host.set_panning(self.fPluginId, value)


if self.fRealParent is not None:
self.fRealParent.parameterValueChanged(PARAMETER_PANNING, value)
if self.fParent is not None:
self.fParent.parameterValueChanged(PARAMETER_PANNING, value)


@pyqtSlot(int) @pyqtSlot(int)
def slot_ctrlChannelChanged(self, value): def slot_ctrlChannelChanged(self, value):
@@ -1269,8 +1236,8 @@ class PluginEdit(QDialog):
def slot_parameterValueChanged(self, parameterId, value): def slot_parameterValueChanged(self, parameterId, value):
self.host.set_parameter_value(self.fPluginId, parameterId, value) self.host.set_parameter_value(self.fPluginId, parameterId, value)


if self.fRealParent is not None:
self.fRealParent.parameterValueChanged(parameterId, value)
if self.fParent is not None:
self.fParent.parameterValueChanged(parameterId, value)


@pyqtSlot(int, int) @pyqtSlot(int, int)
def slot_parameterMidiControlChanged(self, parameterId, control): def slot_parameterMidiControlChanged(self, parameterId, control):
@@ -1284,19 +1251,17 @@ class PluginEdit(QDialog):


@pyqtSlot(int) @pyqtSlot(int)
def slot_programIndexChanged(self, index): def slot_programIndexChanged(self, index):
self.fCurrentProgram = index
self.host.set_program(self.fPluginId, index) self.host.set_program(self.fPluginId, index)


if self.fRealParent is not None:
self.fRealParent.programChanged(index)
if self.fParent is not None:
self.fParent.programChanged(index)


@pyqtSlot(int) @pyqtSlot(int)
def slot_midiProgramIndexChanged(self, index): def slot_midiProgramIndexChanged(self, index):
self.fCurrentMidiProgram = index
self.host.set_midi_program(self.fPluginId, index) self.host.set_midi_program(self.fPluginId, index)


if self.fRealParent is not None:
self.fRealParent.midiProgramChanged(index)
if self.fParent is not None:
self.fParent.midiProgramChanged(index)


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


@@ -1305,23 +1270,23 @@ class PluginEdit(QDialog):
if self.fControlChannel >= 0: if self.fControlChannel >= 0:
self.host.send_midi_note(self.fPluginId, self.fControlChannel, note, 100) self.host.send_midi_note(self.fPluginId, self.fControlChannel, note, 100)


if self.fRealParent is not None:
self.fRealParent.notePressed(note)
if self.fParent is not None:
self.fParent.notePressed(note)


@pyqtSlot(int) @pyqtSlot(int)
def slot_noteOff(self, note): def slot_noteOff(self, note):
if self.fControlChannel >= 0: if self.fControlChannel >= 0:
self.host.send_midi_note(self.fPluginId, self.fControlChannel, note, 0) self.host.send_midi_note(self.fPluginId, self.fControlChannel, note, 0)


if self.fRealParent is not None:
self.fRealParent.noteReleased(note)
if self.fParent is not None:
self.fParent.noteReleased(note)


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


@pyqtSlot() @pyqtSlot()
def slot_finished(self): def slot_finished(self):
if self.fRealParent is not None:
self.fRealParent.editDialogChanged(False)
if self.fParent is not None:
self.fParent.editDialogChanged(False)


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




+ 2
- 4
source/widgets/paramspinbox.py View File

@@ -246,7 +246,7 @@ class ParamSpinBox(QAbstractSpinBox):
self.fMaximum = value self.fMaximum = value
self.fBar.setMaximum(value) self.fBar.setMaximum(value)


def setValue(self, value, send=True):
def setValue(self, value):
value = geFixedValue(self.fName, value, self.fMinimum, self.fMaximum) value = geFixedValue(self.fName, value, self.fMinimum, self.fMaximum)


if self.fValue == value: if self.fValue == value:
@@ -258,9 +258,7 @@ class ParamSpinBox(QAbstractSpinBox):
if self.fUseScalePoints: if self.fUseScalePoints:
self._setScalePointValue(value) self._setScalePointValue(value)


if send:
self.valueChanged.emit(value)

self.valueChanged.emit(value)
self.update() self.update()


return True return True


Loading…
Cancel
Save