Ildaeil: Add plugin type selector
Signed-off-by: falkTX <falktx@falktx.com>
This commit is contained in:
parent
b3d96ca6d0
commit
7fbf0bd8e7
1 changed files with 68 additions and 7 deletions
|
|
@ -628,12 +628,14 @@ struct IldaeilWidget : ImGuiWidget, IdleCallback, Thread {
|
||||||
kIdleShowCustomUI,
|
kIdleShowCustomUI,
|
||||||
kIdleHidePluginUI,
|
kIdleHidePluginUI,
|
||||||
kIdleGiveIdleToUI,
|
kIdleGiveIdleToUI,
|
||||||
|
kIdleChangePluginType,
|
||||||
kIdleNothing
|
kIdleNothing
|
||||||
} fIdleState = kIdleInit;
|
} fIdleState = kIdleInit;
|
||||||
|
|
||||||
PluginType fPluginType = PLUGIN_LV2;
|
PluginType fPluginType = PLUGIN_LV2;
|
||||||
|
PluginType fNextPluginType = fPluginType;
|
||||||
uint fPluginCount = 0;
|
uint fPluginCount = 0;
|
||||||
uint fPluginSelected = false;
|
int fPluginSelected = -1;
|
||||||
bool fPluginScanningFinished = false;
|
bool fPluginScanningFinished = false;
|
||||||
bool fPluginHasCustomUI = false;
|
bool fPluginHasCustomUI = false;
|
||||||
bool fPluginRunning = false;
|
bool fPluginRunning = false;
|
||||||
|
|
@ -984,6 +986,15 @@ struct IldaeilWidget : ImGuiWidget, IdleCallback, Thread {
|
||||||
module->fCarlaPluginDescriptor->ui_idle(module->fCarlaPluginHandle);
|
module->fCarlaPluginDescriptor->ui_idle(module->fCarlaPluginHandle);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case kIdleChangePluginType:
|
||||||
|
fIdleState = kIdleNothing;
|
||||||
|
fPluginSelected = -1;
|
||||||
|
if (isThreadRunning())
|
||||||
|
stopThread(-1);
|
||||||
|
fPluginType = fNextPluginType;
|
||||||
|
startThread();
|
||||||
|
break;
|
||||||
|
|
||||||
case kIdleNothing:
|
case kIdleNothing:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -991,6 +1002,8 @@ struct IldaeilWidget : ImGuiWidget, IdleCallback, Thread {
|
||||||
|
|
||||||
void loadSelectedPlugin(const CarlaHostHandle handle)
|
void loadSelectedPlugin(const CarlaHostHandle handle)
|
||||||
{
|
{
|
||||||
|
DISTRHO_SAFE_ASSERT_RETURN(fPluginSelected >= 0,);
|
||||||
|
|
||||||
const PluginInfoCache& info(fPlugins[fPluginSelected]);
|
const PluginInfoCache& info(fPlugins[fPluginSelected]);
|
||||||
|
|
||||||
const char* label = nullptr;
|
const char* label = nullptr;
|
||||||
|
|
@ -1283,6 +1296,14 @@ struct IldaeilWidget : ImGuiWidget, IdleCallback, Thread {
|
||||||
|
|
||||||
void drawPluginList()
|
void drawPluginList()
|
||||||
{
|
{
|
||||||
|
static const char* pluginTypes[] = {
|
||||||
|
getPluginTypeAsString(PLUGIN_INTERNAL),
|
||||||
|
getPluginTypeAsString(PLUGIN_LV2),
|
||||||
|
#ifdef DISTRHO_OS_MAC
|
||||||
|
getPluginTypeAsString(PLUGIN_AU),
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
setupMainWindowPos();
|
setupMainWindowPos();
|
||||||
|
|
||||||
if (ImGui::Begin("Plugin List", nullptr, ImGuiWindowFlags_NoTitleBar|ImGuiWindowFlags_NoResize))
|
if (ImGui::Begin("Plugin List", nullptr, ImGuiWindowFlags_NoTitleBar|ImGuiWindowFlags_NoResize))
|
||||||
|
|
@ -1315,13 +1336,52 @@ struct IldaeilWidget : ImGuiWidget, IdleCallback, Thread {
|
||||||
ImGui::SetKeyboardFocusHere();
|
ImGui::SetKeyboardFocusHere();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ImGui::InputText("", fPluginSearchString, sizeof(fPluginSearchString)-1, ImGuiInputTextFlags_CharsNoBlank|ImGuiInputTextFlags_AutoSelectAll))
|
if (ImGui::InputText("", fPluginSearchString, sizeof(fPluginSearchString)-1,
|
||||||
|
ImGuiInputTextFlags_CharsNoBlank|ImGuiInputTextFlags_AutoSelectAll))
|
||||||
fPluginSearchActive = true;
|
fPluginSearchActive = true;
|
||||||
|
|
||||||
|
ImGui::SameLine();
|
||||||
|
ImGui::PushItemWidth(-1.0f);
|
||||||
|
|
||||||
|
int current;
|
||||||
|
switch (fPluginType)
|
||||||
|
{
|
||||||
|
case PLUGIN_LV2:
|
||||||
|
current = 1;
|
||||||
|
break;
|
||||||
|
#ifdef DISTRHO_OS_MAC
|
||||||
|
case PLUGIN_AU:
|
||||||
|
current = 2;
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
default:
|
||||||
|
current = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ImGui::Combo("", ¤t, pluginTypes, ARRAY_SIZE(pluginTypes)))
|
||||||
|
{
|
||||||
|
fIdleState = kIdleChangePluginType;
|
||||||
|
switch (current)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
fNextPluginType = PLUGIN_INTERNAL;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
fNextPluginType = PLUGIN_LV2;
|
||||||
|
break;
|
||||||
|
#ifdef DISTRHO_OS_MAC
|
||||||
|
case 2:
|
||||||
|
fNextPluginType = PLUGIN_AU;
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (ImGui::IsKeyDown(ImGuiKey_Escape))
|
if (ImGui::IsKeyDown(ImGuiKey_Escape))
|
||||||
fPluginSearchActive = false;
|
fPluginSearchActive = false;
|
||||||
|
|
||||||
ImGui::BeginDisabled(!fPluginScanningFinished);
|
ImGui::BeginDisabled(!fPluginScanningFinished || fPluginSelected < 0);
|
||||||
|
|
||||||
if (ImGui::Button("Load Plugin"))
|
if (ImGui::Button("Load Plugin"))
|
||||||
fIdleState = kIdleLoadSelectedPlugin;
|
fIdleState = kIdleLoadSelectedPlugin;
|
||||||
|
|
@ -1329,6 +1389,8 @@ struct IldaeilWidget : ImGuiWidget, IdleCallback, Thread {
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
ImGui::Checkbox("Run in bridge mode", &fPluginWillRunInBridgeMode);
|
ImGui::Checkbox("Run in bridge mode", &fPluginWillRunInBridgeMode);
|
||||||
|
|
||||||
|
ImGui::EndDisabled();
|
||||||
|
|
||||||
if (fPluginRunning)
|
if (fPluginRunning)
|
||||||
{
|
{
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
|
|
@ -1337,8 +1399,6 @@ struct IldaeilWidget : ImGuiWidget, IdleCallback, Thread {
|
||||||
fDrawingState = kDrawingPluginGenericUI;
|
fDrawingState = kDrawingPluginGenericUI;
|
||||||
}
|
}
|
||||||
|
|
||||||
ImGui::EndDisabled();
|
|
||||||
|
|
||||||
if (ImGui::BeginChild("pluginlistwindow"))
|
if (ImGui::BeginChild("pluginlistwindow"))
|
||||||
{
|
{
|
||||||
if (ImGui::BeginTable("pluginlist", 2, ImGuiTableFlags_NoSavedSettings))
|
if (ImGui::BeginTable("pluginlist", 2, ImGuiTableFlags_NoSavedSettings))
|
||||||
|
|
@ -1348,8 +1408,9 @@ struct IldaeilWidget : ImGuiWidget, IdleCallback, Thread {
|
||||||
switch (fPluginType)
|
switch (fPluginType)
|
||||||
{
|
{
|
||||||
case PLUGIN_INTERNAL:
|
case PLUGIN_INTERNAL:
|
||||||
// case PLUGIN_JSFX:
|
case PLUGIN_AU:
|
||||||
case PLUGIN_SFZ:
|
case PLUGIN_SFZ:
|
||||||
|
// case PLUGIN_JSFX:
|
||||||
ImGui::TableSetupColumn("Name");
|
ImGui::TableSetupColumn("Name");
|
||||||
ImGui::TableSetupColumn("Label");
|
ImGui::TableSetupColumn("Label");
|
||||||
ImGui::TableHeadersRow();
|
ImGui::TableHeadersRow();
|
||||||
|
|
@ -1370,7 +1431,7 @@ struct IldaeilWidget : ImGuiWidget, IdleCallback, Thread {
|
||||||
if (search != nullptr && ildaeil::strcasestr(info.name, search) == nullptr)
|
if (search != nullptr && ildaeil::strcasestr(info.name, search) == nullptr)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
bool selected = fPluginSelected == i;
|
bool selected = fPluginSelected >= 0 && static_cast<uint>(fPluginSelected) == i;
|
||||||
|
|
||||||
switch (fPluginType)
|
switch (fPluginType)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue