| 
							- /*
 -  ==============================================================================
 - 
 -  This file is part of the JUCETICE project - Copyright 2008 by Lucio Asnaghi.
 - 
 -  JUCETICE is based around the JUCE library - "Jules' Utility Class Extensions"
 -  Copyright 2008 by Julian Storer.
 - 
 -  ------------------------------------------------------------------------------
 - 
 -  JUCE and JUCETICE can be redistributed and/or modified under the terms of
 -  the GNU Lesser General Public License, as published by the Free Software
 -  Foundation; either version 2 of the License, or (at your option) any later
 -  version.
 - 
 -  JUCE and JUCETICE are distributed in the hope that they 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.
 - 
 -  You should have received a copy of the GNU Lesser General Public License
 -  along with JUCE and JUCETICE; if not, visit www.gnu.org/licenses or write to
 -  Free Software Foundation, Inc., 59 Temple Place, Suite 330,
 -  Boston, MA 02111-1307 USA
 - 
 -  ==============================================================================
 - 
 -    @author  rockhardbuns
 -    @tweaker Lucio Asnaghi
 -    @tweaker falkTX
 - 
 -  ==============================================================================
 - */
 - 
 - #ifndef DISTRHO_VEX_PEGGYVIEWCOMPONENT_HEADER_INCLUDED
 - #define DISTRHO_VEX_PEGGYVIEWCOMPONENT_HEADER_INCLUDED
 - 
 - #include "VexArpSettings.h"
 - 
 - #include "gui/BoolGridComponent.h"
 - #include "gui/SliderFieldComponent.h"
 - #include "lookandfeel/MyLookAndFeel.h"
 - 
 - class PeggyViewComponent : public Component,
 -                            public ChangeListener,
 -                            public SliderListener,
 -                            public ComboBoxListener,
 -                            public ButtonListener
 - {
 - public:
 -     class Callback
 -     {
 -     public:
 -         virtual ~Callback() {}
 -         virtual void arpParameterChanged(const uint32_t id) = 0;
 -     };
 - 
 -     PeggyViewComponent(VexArpSettings& arpSet, Callback* const callback, const bool isStandalone = false)
 -         : fArpSettings(arpSet),
 -           fCallback(callback),
 -           fIsStandalone(isStandalone)
 -     {
 -         addAndMakeVisible(boolGrid = new BoolGridComponent());
 -         boolGrid->addChangeListener(this);
 - 
 -         addAndMakeVisible(sliderField = new SliderFieldComponent());
 -         sliderField->addChangeListener(this);
 - 
 -         addAndMakeVisible(length = new Slider("sdf"));
 -         length->setRange(1, 16, 1);
 -         length->setTextBoxStyle(Slider::NoTextBox, true, 0, 0 );
 -         length->addListener(this);
 - 
 -         addAndMakeVisible(timeMode = new ComboBox("a"));
 -         timeMode->setEditableText (false);
 -         timeMode->setJustificationType (Justification::centredLeft);
 -         timeMode->setTextWhenNothingSelected (String("_"));
 -         timeMode->setTextWhenNoChoicesAvailable (String("_"));
 -         timeMode->setColour(ComboBox::backgroundColourId, Colours::black);
 -         timeMode->setColour(ComboBox::textColourId, Colours::lightgrey);
 -         timeMode->setColour(ComboBox::outlineColourId, Colours::grey);
 -         timeMode->setColour(ComboBox::buttonColourId, Colours::grey);
 -         timeMode->setWantsKeyboardFocus(false);
 -         timeMode->addItem("1/8",  1);
 -         timeMode->addItem("1/16", 2);
 -         timeMode->addItem("1/32", 3);
 -         timeMode->addListener(this);
 - 
 -         addAndMakeVisible(syncMode = new ComboBox("a"));
 -         syncMode->setEditableText (false);
 -         syncMode->setJustificationType (Justification::centredLeft);
 -         syncMode->setTextWhenNothingSelected (String("_"));
 -         syncMode->setTextWhenNoChoicesAvailable (String("_"));
 -         syncMode->setColour(ComboBox::backgroundColourId, Colours::black);
 -         syncMode->setColour(ComboBox::textColourId, Colours::lightgrey);
 -         syncMode->setColour(ComboBox::outlineColourId, Colours::grey);
 -         syncMode->setColour(ComboBox::buttonColourId, Colours::grey);
 -         syncMode->setWantsKeyboardFocus(false);
 -         syncMode->addItem("Key Sync", 1);
 -         syncMode->addItem("Bar Sync", 2);
 -         syncMode->addListener(this);
 - 
 -         addAndMakeVisible(failMode = new ComboBox("a"));
 -         failMode->setEditableText(false);
 -         failMode->setJustificationType (Justification::centredLeft);
 -         failMode->setTextWhenNothingSelected (String("_"));
 -         failMode->setTextWhenNoChoicesAvailable (String("_"));
 -         failMode->setColour(ComboBox::backgroundColourId, Colours::black);
 -         failMode->setColour(ComboBox::textColourId, Colours::lightgrey);
 -         failMode->setColour(ComboBox::outlineColourId, Colours::grey);
 -         failMode->setColour(ComboBox::buttonColourId, Colours::grey);
 -         failMode->setWantsKeyboardFocus(false);
 -         failMode->addItem("Silent Step", 1);
 -         failMode->addItem("Skip One", 2);
 -         failMode->addItem("Skip Two", 3);
 -         failMode->addListener(this);
 - 
 -         addAndMakeVisible(velMode = new ComboBox("a"));
 -         velMode->setEditableText(false);
 -         velMode->setJustificationType(Justification::centredLeft);
 -         velMode->setTextWhenNothingSelected (String("_"));
 -         velMode->setTextWhenNoChoicesAvailable (String("_"));
 -         velMode->setColour(ComboBox::backgroundColourId, Colours::black);
 -         velMode->setColour(ComboBox::textColourId, Colours::lightgrey);
 -         velMode->setColour(ComboBox::outlineColourId, Colours::grey);
 -         velMode->setColour(ComboBox::buttonColourId, Colours::grey);
 -         velMode->setWantsKeyboardFocus(false);
 -         velMode->addItem("Pattern Velocity", 1);
 -         velMode->addItem("Input Velocity", 2);
 -         velMode->addItem("Sum Velocities", 3);
 -         velMode->addListener(this);
 - 
 -         addAndMakeVisible(onOffBtn = new ToggleButton ("new button"));
 -         onOffBtn->setButtonText(String( "On"));
 -         onOffBtn->addListener(this);
 -         onOffBtn->setClickingTogglesState(true);
 - 
 -         if (isStandalone)
 -         {
 -             static MyLookAndFeel mlaf;
 -             setLookAndFeel(&mlaf);
 -         }
 - 
 -         update();
 -     }
 - 
 -     ~PeggyViewComponent() override
 -     {
 -         //deleteAllChildren();
 -         removeAllChildren();
 -     }
 - 
 -     void resized() override
 -     {
 -         boolGrid->setBounds(5, 5, 193, 63);
 -         sliderField->setBounds(5, 68, 193, 63);
 -         length->setBounds(4, 140, 194, 16);
 -         timeMode->setBounds(6, 160, 93, 23);
 -         syncMode->setBounds(102, 160, 93, 23);
 -         failMode->setBounds(6, 190, 189, 23);
 -         velMode-> setBounds(6, 220, 189, 23);
 -         onOffBtn->setBounds(6, 250, 60, 24);
 -     }
 - 
 -     void paint(Graphics& g) override
 -     {
 -         g.setColour(Colours::black.withAlpha(.5f));
 -         g.fillRect(5,5,getWidth(), getHeight());
 - 
 -         g.setGradientFill(ColourGradient(Colour(0xffffffff), 0.0f, 0.0f,
 -                           Colour(0xff888899), (float)getWidth(), (float)getHeight(), false));
 - 
 -         if (fIsStandalone)
 -         {
 -             g.fillRect(0, 0, getWidth(), getHeight());
 -         }
 -         else
 -         {
 -             g.fillRect(0, 0, getWidth() - 5, getHeight() - 5);
 - 
 -             g.setColour(Colours::black);
 -             g.drawRect(0, 0, getWidth() - 5, getHeight() - 5);
 -         }
 -     }
 - 
 -     void changeListenerCallback(ChangeBroadcaster* caller) override
 -     {
 -         if (caller == boolGrid)
 -         {
 -             int i = boolGrid->getLastChanged();
 -             fArpSettings.grid[i] = boolGrid->getCellState(i);
 -             fCallback->arpParameterChanged(6+VexArpSettings::kVelocitiesSize+i);
 -         }
 -         else if (caller == sliderField)
 -         {
 -             int i = sliderField->getLastSlider();
 -             fArpSettings.velocities[i] = jlimit(0.0f, 1.0f, sliderField->getValue(i));
 -             fCallback->arpParameterChanged(6+i);
 -         }
 -     }
 - 
 -     void comboBoxChanged(ComboBox* caller) override
 -     {
 -         if (caller == timeMode)
 -         {
 -             fArpSettings.timeMode = timeMode->getSelectedId();
 -             fCallback->arpParameterChanged(2);
 -         }
 -         else if (caller == syncMode)
 -         {
 -             fArpSettings.syncMode = syncMode->getSelectedId();
 -             fCallback->arpParameterChanged(3);
 -         }
 -         else if (caller == failMode)
 -         {
 -             fArpSettings.failMode = failMode->getSelectedId();
 -             fCallback->arpParameterChanged(4);
 -         }
 -         else if (caller == velMode)
 -         {
 -             fArpSettings.velMode = velMode->getSelectedId();
 -             fCallback->arpParameterChanged(5);
 -         }
 -     }
 - 
 -     void sliderValueChanged(Slider* /*caller*/) override
 -     {
 -         boolGrid->setLength((int)length->getValue());
 -         sliderField->setLength((int)length->getValue());
 -         fArpSettings.length = (int)length->getValue();
 -         fCallback->arpParameterChanged(1);
 -     }
 - 
 -     void buttonClicked(Button* /*caller*/) override
 -     {
 -         fArpSettings.on = onOffBtn->getToggleState();
 -         fCallback->arpParameterChanged(0);
 -     }
 - 
 -     void update()
 -     {
 -         onOffBtn->setToggleState(fArpSettings.on, dontSendNotification);
 - 
 -         sliderField->setLength(fArpSettings.length);
 -         boolGrid->setLength(fArpSettings.length);
 -         length->setValue(fArpSettings.length);
 - 
 -         for (int i = 0; i < VexArpSettings::kVelocitiesSize; ++i)
 -             sliderField->setValue(i, fArpSettings.velocities[i]);
 - 
 -         for (int i = 0; i < VexArpSettings::kGridSize; ++i)
 -             boolGrid->setCellState(i, fArpSettings.grid[i]);
 - 
 -         timeMode->setSelectedId(fArpSettings.timeMode);
 -         syncMode->setSelectedId(fArpSettings.syncMode);
 -         failMode->setSelectedId(fArpSettings.failMode);
 -         velMode->setSelectedId(fArpSettings.velMode);
 -     }
 - 
 - private:
 -     VexArpSettings& fArpSettings;
 -     Callback* const fCallback;
 -     const bool fIsStandalone;
 - 
 -     ScopedPointer<BoolGridComponent> boolGrid;
 -     ScopedPointer<SliderFieldComponent> sliderField;
 - 
 -     ScopedPointer<ComboBox> timeMode;
 -     ScopedPointer<ComboBox> syncMode;
 -     ScopedPointer<ComboBox> failMode;
 -     ScopedPointer<ComboBox> velMode;
 - 
 -     ScopedPointer<ToggleButton> onOffBtn;
 -     ScopedPointer<Slider> length;
 - 
 -     JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(PeggyViewComponent)
 - };
 - 
 - #endif // DISTRHO_VEX_PEGGYVIEWCOMPONENT_HEADER_INCLUDED
 
 
  |