|
- /*
- ==============================================================================
-
- This file is part of the JUCE library.
- Copyright (c) 2013 - Raw Material Software Ltd.
-
- Permission is granted to use this software under the terms of either:
- a) the GPL v2 (or any later version)
- b) the Affero GPL v3
-
- Details of these licenses can be found at: www.gnu.org/licenses
-
- JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
- A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
- ------------------------------------------------------------------------------
-
- To release a closed-source product which uses JUCE, commercial licenses are
- available: visit www.juce.com for more information.
-
- ==============================================================================
- */
-
- #ifndef __JUCER_CONFIGPAGE_JUCEHEADER__
- #define __JUCER_CONFIGPAGE_JUCEHEADER__
-
- #include "jucer_Project.h"
- #include "../Utility/jucer_JucerTreeViewBase.h"
-
- //==============================================================================
- JucerTreeViewBase* createProjectConfigTreeViewRoot (Project& project);
-
-
- //==============================================================================
- class PropertyGroup : public Component
- {
- public:
- PropertyGroup() {}
-
- void setProperties (const PropertyListBuilder& newProps)
- {
- properties.clear();
- properties.addArray (newProps.components);
-
- for (int i = properties.size(); --i >= 0;)
- addAndMakeVisible (properties.getUnchecked(i));
- }
-
- int updateSize (int x, int y, int width)
- {
- int height = 38;
-
- for (int i = 0; i < properties.size(); ++i)
- {
- PropertyComponent* pp = properties.getUnchecked(i);
- pp->setBounds (10, height, width - 20, pp->getPreferredHeight());
- height += pp->getHeight();
- }
-
- height += 16;
- setBounds (x, y, width, height);
- return height;
- }
-
- void paint (Graphics& g)
- {
- const Colour bkg (findColour (mainBackgroundColourId));
-
- g.setColour (Colours::white.withAlpha (0.35f));
- g.fillRect (0, 30, getWidth(), getHeight() - 38);
-
- g.setFont (Font (15.0f, Font::bold));
- g.setColour (bkg.contrasting (0.7f));
- g.drawFittedText (getName(), 12, 0, getWidth() - 16, 25, Justification::bottomLeft, 1);
- }
-
- OwnedArray<PropertyComponent> properties;
-
- private:
- JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (PropertyGroup)
- };
-
- //==============================================================================
- class PropertyPanelViewport : public Component
- {
- public:
- PropertyPanelViewport (Component* content)
- {
- addAndMakeVisible (&viewport);
- addAndMakeVisible (&rolloverHelp);
- viewport.setViewedComponent (content, true);
- }
-
- void paint (Graphics& g)
- {
- IntrojucerLookAndFeel::fillWithBackgroundTexture (*this, g);
- }
-
- void resized()
- {
- Rectangle<int> r (getLocalBounds());
- rolloverHelp.setBounds (r.removeFromBottom (70).reduced (10, 0));
- viewport.setBounds (r);
- }
-
- Viewport viewport;
- RolloverHelpComp rolloverHelp;
-
- private:
- JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (PropertyPanelViewport)
- };
-
- //==============================================================================
- class SettingsTreeViewItemBase : public JucerTreeViewBase,
- public ValueTree::Listener
- {
- public:
- SettingsTreeViewItemBase() {}
-
- void showSettingsPage (Component* content);
- void closeSettingsPage();
-
- void deleteAllSelectedItems()
- {
- TreeView* const tree = getOwnerView();
- jassert (tree->getNumSelectedItems() <= 1); // multi-select should be disabled
-
- if (SettingsTreeViewItemBase* s = dynamic_cast <SettingsTreeViewItemBase*> (tree->getSelectedItem (0)))
- s->deleteItem();
- }
-
- void itemOpennessChanged (bool isNowOpen)
- {
- if (isNowOpen)
- refreshSubItems();
- }
-
- void valueTreePropertyChanged (ValueTree&, const Identifier&) {}
- void valueTreeChildAdded (ValueTree&, ValueTree&) {}
- void valueTreeChildRemoved (ValueTree&, ValueTree&) {}
- void valueTreeChildOrderChanged (ValueTree&) {}
- void valueTreeParentChanged (ValueTree&) {}
-
- static void updateSize (Component& comp, PropertyGroup& group)
- {
- const int width = jmax (550, comp.getParentWidth() - 20);
-
- int y = 0;
- y += group.updateSize (12, y, width - 12);
-
- comp.setSize (width, y);
- }
- };
-
-
- #endif // __JUCER_CONFIGPAGE_JUCEHEADER__
|