The JUCE cross-platform C++ framework, with DISTRHO/KXStudio specific changes
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.

80 lines
2.7KB

  1. /*
  2. ==============================================================================
  3. This file is part of the JUCE library.
  4. Copyright (c) 2013 - Raw Material Software Ltd.
  5. Permission is granted to use this software under the terms of either:
  6. a) the GPL v2 (or any later version)
  7. b) the Affero GPL v3
  8. Details of these licenses can be found at: www.gnu.org/licenses
  9. JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
  10. WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
  11. A PARTICULAR PURPOSE. See the GNU General Public License for more details.
  12. ------------------------------------------------------------------------------
  13. To release a closed-source product which uses JUCE, commercial licenses are
  14. available: visit www.juce.com for more information.
  15. ==============================================================================
  16. */
  17. #ifndef __JUCE_TOOLBARITEMPALETTE_JUCEHEADER__
  18. #define __JUCE_TOOLBARITEMPALETTE_JUCEHEADER__
  19. #include "juce_Toolbar.h"
  20. #include "../layout/juce_Viewport.h"
  21. //==============================================================================
  22. /**
  23. A component containing a list of toolbar items, which the user can drag onto
  24. a toolbar to add them.
  25. You can use this class directly, but it's a lot easier to call Toolbar::showCustomisationDialog(),
  26. which automatically shows one of these in a dialog box with lots of extra controls.
  27. @see Toolbar
  28. */
  29. class JUCE_API ToolbarItemPalette : public Component,
  30. public DragAndDropContainer
  31. {
  32. public:
  33. //==============================================================================
  34. /** Creates a palette of items for a given factory, with the aim of adding them
  35. to the specified toolbar.
  36. The ToolbarItemFactory::getAllToolbarItemIds() method is used to create the
  37. set of items that are shown in this palette.
  38. The toolbar and factory must not be deleted while this object exists.
  39. */
  40. ToolbarItemPalette (ToolbarItemFactory& factory,
  41. Toolbar* toolbar);
  42. /** Destructor. */
  43. ~ToolbarItemPalette();
  44. //==============================================================================
  45. /** @internal */
  46. void resized();
  47. private:
  48. ToolbarItemFactory& factory;
  49. Toolbar* toolbar;
  50. Viewport viewport;
  51. OwnedArray <ToolbarItemComponent> items;
  52. friend class Toolbar;
  53. void replaceComponent (ToolbarItemComponent* comp);
  54. void addComponent (int itemId, int index);
  55. JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ToolbarItemPalette)
  56. };
  57. #endif // __JUCE_TOOLBARITEMPALETTE_JUCEHEADER__