You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

46 lines
1.7KB

  1. #pragma once
  2. #include <JuceHeader.h>
  3. #include "PluginSelectorList.h"
  4. #include "PluginScanStatusBar.h"
  5. #include "SelectorComponentStyle.h"
  6. class PluginSelectorComponent : public juce::Component,
  7. public juce::TextEditor::Listener,
  8. public juce::Button::Listener {
  9. public:
  10. PluginSelectorComponent(PluginSelectorListParameters selectorListParameters,
  11. std::function<void()> onCloseCallback,
  12. const SelectorComponentStyle& style);
  13. ~PluginSelectorComponent() override;
  14. void textEditorTextChanged(juce::TextEditor& textEditor) override;
  15. void resized() override;
  16. void paint(juce::Graphics& g) override;
  17. void buttonClicked(juce::Button* buttonThatWasClicked) override;
  18. bool keyPressed(const juce::KeyPress& key) override;
  19. /**
  20. * Restores the scroll position from the stored state. This must be done only after the
  21. * component bounds have been restored, otherwise it'll scroll to the wrong place.
  22. */
  23. void restoreScrollPosition();
  24. private:
  25. PluginSelectorState& _state;
  26. std::function<void()> _onCloseCallback;
  27. const juce::Colour _backgroundColour;
  28. std::unique_ptr<juce::TextEditor> searchEdt;
  29. std::unique_ptr<juce::TextButton> vstBtn;
  30. std::unique_ptr<juce::TextButton> vst3Btn;
  31. std::unique_ptr<juce::TextButton> auBtn;
  32. std::unique_ptr<PluginSelectorTableListBox> pluginTableListBox;
  33. std::unique_ptr<PluginScanStatusBar> statusBar;
  34. void _setupHeaderRow(const SelectorComponentStyle& style);
  35. JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(PluginSelectorComponent)
  36. };