| @@ -323,6 +323,25 @@ public: | |||
| } | |||
| } | |||
| bool loadPlugin(const CarlaHostHandle handle, const char* const label) | |||
| { | |||
| if (carla_get_current_plugin_count(handle) != 0) | |||
| { | |||
| hidePluginUI(); | |||
| carla_replace_plugin(handle, 0); | |||
| } | |||
| if (carla_add_plugin(handle, BINARY_NATIVE, PLUGIN_LV2, nullptr, nullptr, | |||
| label, 0, 0x0, PLUGIN_OPTIONS_NULL)) | |||
| { | |||
| fPluginGenericUI = nullptr; | |||
| showPluginUI(handle); | |||
| return true; | |||
| } | |||
| return false; | |||
| } | |||
| protected: | |||
| void pluginWindowResized(uint width, uint height) override | |||
| { | |||
| @@ -444,6 +463,13 @@ protected: | |||
| setSize(kInitialWidth * scaleFactor, kInitialHeight * scaleFactor); | |||
| } | |||
| ImGui::SameLine(); | |||
| if (ImGui::Button("Reset")) | |||
| { | |||
| loadPlugin(handle, carla_get_plugin_info(handle, 0)->label); | |||
| } | |||
| if (fDrawingState == kDrawingPluginGenericUI && fPluginHasCustomUI) | |||
| { | |||
| ImGui::SameLine(); | |||
| @@ -574,7 +600,6 @@ protected: | |||
| setupMainWindowPos(); | |||
| const CarlaHostHandle handle = fPlugin->fCarlaHostHandle; | |||
| const bool pluginIsRunning = carla_get_current_plugin_count(handle) != 0; | |||
| if (ImGui::Begin("Plugin List", nullptr, ImGuiWindowFlags_NoTitleBar|ImGuiWindowFlags_NoResize)) | |||
| { | |||
| @@ -585,12 +610,6 @@ protected: | |||
| if (ImGui::Button("Load Plugin")) | |||
| { | |||
| if (pluginIsRunning) | |||
| { | |||
| hidePluginUI(); | |||
| carla_replace_plugin(handle, 0); | |||
| } | |||
| do { | |||
| const PluginInfoCache& info(fPlugins[fPluginSelected]); | |||
| @@ -599,22 +618,16 @@ protected: | |||
| d_stdout("Loading %s...", info.name); | |||
| if (carla_add_plugin(handle, BINARY_NATIVE, PLUGIN_LV2, nullptr, nullptr, | |||
| slash+1, 0, 0x0, PLUGIN_OPTIONS_NULL)) | |||
| if (loadPlugin(handle, slash+1)) | |||
| { | |||
| fPluginGenericUI = nullptr; | |||
| showPluginUI(handle); | |||
| ImGui::EndDisabled(); | |||
| ImGui::End(); | |||
| return; | |||
| } | |||
| } while (false); | |||
| } | |||
| ImGui::EndDisabled(); | |||
| if (pluginIsRunning) | |||
| if (carla_get_current_plugin_count(handle) != 0) | |||
| { | |||
| ImGui::SameLine(); | |||
| @@ -624,6 +637,8 @@ protected: | |||
| } | |||
| } | |||
| ImGui::EndDisabled(); | |||
| if (ImGui::BeginChild("pluginlistwindow")) | |||
| { | |||
| if (ImGui::BeginTable("pluginlist", 3, ImGuiTableFlags_NoSavedSettings|ImGuiTableFlags_NoClip)) | |||