#pragma once #include #include #include "PluginBridgeProcessor.h" class PluginBridgeEditor : public juce::AudioProcessorEditor, private juce::Timer { public: PluginBridgeEditor(PluginBridgeProcessor& p); ~PluginBridgeEditor() override; void paint(juce::Graphics& g) override; void resized() override; private: void timerCallback() override; void showPluginMenu(); void embedPluginEditor(); void removePluginEditor(); PluginBridgeProcessor& processorRef; // Top bar controls (always visible) juce::Label titleLabel; juce::Label mcpStatusLabel; juce::Label pluginStatusLabel; juce::TextButton selectButton{"Select Plugin"}; // Embedded plugin editor std::unique_ptr hostedEditor; static constexpr int kTopBarHeight = 40; static constexpr int kDefaultWidth = 400; static constexpr int kDefaultHeight = 60; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(PluginBridgeEditor) };