Browse Source

Ildaeil: support read only params

Signed-off-by: falkTX <falktx@falktx.com>
tags/22.02
falkTX 4 years ago
parent
commit
46c333a0fe
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
1 changed files with 26 additions and 7 deletions
  1. +26
    -7
      plugins/Cardinal/src/Ildaeil.cpp

+ 26
- 7
plugins/Cardinal/src/Ildaeil.cpp View File

@@ -578,7 +578,7 @@ struct IldaeilWidget : ImGuiWidget, IdleCallback, Thread {
char* name;
char* format;
uint32_t rindex;
bool boolean, bvalue, log;
bool boolean, bvalue, log, readonly;
float min, max, power;
Parameter()
: name(nullptr),
@@ -587,6 +587,7 @@ struct IldaeilWidget : ImGuiWidget, IdleCallback, Thread {
boolean(false),
bvalue(false),
log(false),
readonly(false),
min(0.0f),
max(1.0f) {}
~Parameter()
@@ -639,6 +640,7 @@ struct IldaeilWidget : ImGuiWidget, IdleCallback, Thread {
int fPluginSelected = -1;
bool fPluginScanningFinished = false;
bool fPluginHasCustomUI = false;
bool fPluginHasOutputParameters = false;
bool fPluginRunning = false;
bool fPluginWillRunInBridgeMode = false;
PluginInfoCache* fPlugins = nullptr;
@@ -785,6 +787,8 @@ struct IldaeilWidget : ImGuiWidget, IdleCallback, Thread {
title += info->maker;
ui->title = title.getAndReleaseBuffer();

fPluginHasOutputParameters = false;

const uint32_t pcount = ui->parameterCount = carla_get_parameter_count(handle, 0);

// make count of valid parameters
@@ -792,13 +796,14 @@ struct IldaeilWidget : ImGuiWidget, IdleCallback, Thread {
{
const ParameterData* const pdata = carla_get_parameter_data(handle, 0, i);

if (pdata->type != PARAMETER_INPUT ||
(pdata->hints & PARAMETER_IS_ENABLED) == 0x0 ||
(pdata->hints & PARAMETER_IS_READ_ONLY) != 0x0)
if ((pdata->hints & PARAMETER_IS_ENABLED) == 0x0)
{
--ui->parameterCount;
continue;
}

if (pdata->type == PARAMETER_OUTPUT)
fPluginHasOutputParameters = true;
}

ui->parameters = new PluginGenericUI::Parameter[ui->parameterCount];
@@ -809,9 +814,7 @@ struct IldaeilWidget : ImGuiWidget, IdleCallback, Thread {
{
const ParameterData* const pdata = carla_get_parameter_data(handle, 0, i);

if (pdata->type != PARAMETER_INPUT ||
(pdata->hints & PARAMETER_IS_ENABLED) == 0x0 ||
(pdata->hints & PARAMETER_IS_READ_ONLY) != 0x0)
if ((pdata->hints & PARAMETER_IS_ENABLED) == 0x0)
continue;

const CarlaParameterInfo* const pinfo = carla_get_parameter_info(handle, 0, i);
@@ -832,8 +835,10 @@ struct IldaeilWidget : ImGuiWidget, IdleCallback, Thread {
param.rindex = i;
param.boolean = pdata->hints & PARAMETER_IS_BOOLEAN;
param.log = pdata->hints & PARAMETER_IS_LOGARITHMIC;
param.readonly = pdata->type != PARAMETER_INPUT || (pdata->hints & PARAMETER_IS_READ_ONLY);
param.min = pranges->min;
param.max = pranges->max;

ui->values[j] = carla_get_current_parameter_value(handle, 0, i);

if (param.boolean)
@@ -971,6 +976,12 @@ struct IldaeilWidget : ImGuiWidget, IdleCallback, Thread {
fileBrowserHandle = nullptr;
}

if (fDrawingState == kDrawingPluginGenericUI && fPluginGenericUI != nullptr && fPluginHasOutputParameters)
{
updatePluginGenericUI(handle);
setDirty(true);
}

switch (fIdleState)
{
case kIdleInit:
@@ -1267,6 +1278,14 @@ struct IldaeilWidget : ImGuiWidget, IdleCallback, Thread {
{
PluginGenericUI::Parameter& param(ui->parameters[i]);

if (param.readonly)
{
ImGui::BeginDisabled();
ImGui::SliderFloat(param.name, &ui->values[i], param.min, param.max, param.format, ImGuiSliderFlags_NoInput);
ImGui::EndDisabled();
continue;
}

if (param.boolean)
{
if (ImGui::Checkbox(param.name, &ui->parameters[i].bvalue))


Loading…
Cancel
Save