upgrade to JUCE 5.4.3. Remove (probably) unused JUCE modules. Remove VST2 target (it's been end-of-life'd by Steinberg and by JUCE)

This commit is contained in:
Alex Birch
2019-06-22 20:41:38 +01:00
parent d22c2cd4fa
commit 9ee566b251
1140 changed files with 67534 additions and 105952 deletions

View File

@ -71,7 +71,7 @@ public:
const String& buttonText);
/** Destructor. */
~BooleanPropertyComponent();
~BooleanPropertyComponent() override;
//==============================================================================
/** Called to change the state of the boolean value. */

View File

@ -51,7 +51,7 @@ public:
bool triggerOnMouseDown);
/** Destructor. */
~ButtonPropertyComponent();
~ButtonPropertyComponent() override;
//==============================================================================
/** Called when the user clicks the button.
@ -66,7 +66,7 @@ public:
//==============================================================================
/** @internal */
void refresh();
void refresh() override;
private:
TextButton button;

View File

@ -73,9 +73,9 @@ class ChoicePropertyComponent::RemapperValueSourceWithDefault : public Value:
private Value::Listener
{
public:
RemapperValueSourceWithDefault (ValueWithDefault& vwd, const Array<var>& map)
RemapperValueSourceWithDefault (ValueWithDefault* vwd, const Array<var>& map)
: valueWithDefault (vwd),
sourceValue (valueWithDefault.getPropertyAsValue()),
sourceValue (valueWithDefault->getPropertyAsValue()),
mappings (map)
{
sourceValue.addListener (this);
@ -83,7 +83,10 @@ public:
var getValue() const override
{
if (valueWithDefault.isUsingDefault())
if (valueWithDefault == nullptr)
return {};
if (valueWithDefault->isUsingDefault())
return -1;
auto targetValue = sourceValue.getValue();
@ -97,28 +100,31 @@ public:
void setValue (const var& newValue) override
{
if (valueWithDefault == nullptr)
return;
auto newValueInt = static_cast<int> (newValue);
if (newValueInt == -1)
{
valueWithDefault.resetToDefault();
valueWithDefault->resetToDefault();
}
else
{
auto remappedVal = mappings [newValueInt - 1];
if (! remappedVal.equalsWithSameType (sourceValue))
valueWithDefault = remappedVal;
*valueWithDefault = remappedVal;
}
}
private:
ValueWithDefault& valueWithDefault;
void valueChanged (Value&) override { sendChangeMessage (true); }
WeakReference<ValueWithDefault> valueWithDefault;
Value sourceValue;
Array<var> mappings;
void valueChanged (Value&) override { sendChangeMessage (true); }
//==============================================================================
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (RemapperValueSourceWithDefault)
};
@ -161,17 +167,19 @@ ChoicePropertyComponent::ChoicePropertyComponent (ValueWithDefault& valueToContr
const Array<var>& correspondingValues)
: ChoicePropertyComponent (name, choiceList, correspondingValues)
{
createComboBoxWithDefault (choiceList [correspondingValues.indexOf (valueToControl.getDefault())]);
valueWithDefault = &valueToControl;
comboBox.getSelectedIdAsValue().referTo (Value (new RemapperValueSourceWithDefault (valueToControl,
createComboBoxWithDefault (choiceList [correspondingValues.indexOf (valueWithDefault->getDefault())]);
comboBox.getSelectedIdAsValue().referTo (Value (new RemapperValueSourceWithDefault (valueWithDefault,
correspondingValues)));
valueToControl.onDefaultChange = [this, &valueToControl, choiceList, correspondingValues]
valueWithDefault->onDefaultChange = [this, choiceList, correspondingValues]
{
auto selectedId = comboBox.getSelectedId();
comboBox.clear();
createComboBoxWithDefault (choiceList [correspondingValues.indexOf (valueToControl.getDefault())]);
createComboBoxWithDefault (choiceList [correspondingValues.indexOf (valueWithDefault->getDefault())]);
comboBox.setSelectedId (selectedId);
};
@ -182,17 +190,19 @@ ChoicePropertyComponent::ChoicePropertyComponent (ValueWithDefault& valueToContr
: PropertyComponent (name),
choices ({ "Enabled", "Disabled" })
{
createComboBoxWithDefault (valueToControl.getDefault() ? "Enabled" : "Disabled");
valueWithDefault = &valueToControl;
comboBox.getSelectedIdAsValue().referTo (Value (new RemapperValueSourceWithDefault (valueToControl,
createComboBoxWithDefault (valueWithDefault->getDefault() ? "Enabled" : "Disabled");
comboBox.getSelectedIdAsValue().referTo (Value (new RemapperValueSourceWithDefault (valueWithDefault,
{ true, false })));
valueToControl.onDefaultChange = [this, &valueToControl]
valueWithDefault->onDefaultChange = [this]
{
auto selectedId = comboBox.getSelectedId();
comboBox.clear();
createComboBoxWithDefault (valueToControl.getDefault() ? "Enabled" : "Disabled");
createComboBoxWithDefault (valueWithDefault->getDefault() ? "Enabled" : "Disabled");
comboBox.setSelectedId (selectedId);
};
@ -200,6 +210,8 @@ ChoicePropertyComponent::ChoicePropertyComponent (ValueWithDefault& valueToContr
ChoicePropertyComponent::~ChoicePropertyComponent()
{
if (valueWithDefault != nullptr)
valueWithDefault->onDefaultChange = nullptr;
}
//==============================================================================

View File

@ -50,6 +50,10 @@ namespace juce
*/
class JUCE_API ChoicePropertyComponent : public PropertyComponent
{
private:
/** Delegating constructor. */
ChoicePropertyComponent (const String&, const StringArray&, const Array<var>&);
protected:
/** Creates the component.
Your subclass's constructor must add a list of options to the choices member variable.
@ -79,7 +83,7 @@ public:
/** Creates the component using a ValueWithDefault object. This will add an item to the ComboBox for the
default value with an ID of -1.
@param valueToControl the ValueWithDefault object that contains the Value object that the combo box will read and control
@param valueToControl the ValueWithDefault object that contains the Value object that the combo box will read and control.
@param propertyName the name of the property
@param choices the list of possible values that the drop-down list will contain
@param correspondingValues a list of values corresponding to each item in the 'choices' StringArray.
@ -102,7 +106,7 @@ public:
const String& propertyName);
/** Destructor. */
~ChoicePropertyComponent();
~ChoicePropertyComponent() override;
//==============================================================================
/** Called when the user selects an item from the combo box.
@ -135,20 +139,23 @@ protected:
StringArray choices;
private:
/** Delegating constructor. */
ChoicePropertyComponent (const String&, const StringArray&, const Array<var>&);
ComboBox comboBox;
bool isCustomClass = false;
//==============================================================================
class RemapperValueSource;
class RemapperValueSourceWithDefault;
//==============================================================================
void createComboBox();
void createComboBoxWithDefault (const String&);
void changeIndex();
//==============================================================================
ComboBox comboBox;
bool isCustomClass = false;
WeakReference<ValueWithDefault> valueWithDefault;
//==============================================================================
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ChoicePropertyComponent)
};

View File

@ -106,10 +106,10 @@ class MultiChoicePropertyComponent::MultiChoiceRemapperSourceWithDefault : pu
private Value::Listener
{
public:
MultiChoiceRemapperSourceWithDefault (ValueWithDefault& vwd, var v, int c, ToggleButton* b)
MultiChoiceRemapperSourceWithDefault (ValueWithDefault* vwd, var v, int c, ToggleButton* b)
: valueWithDefault (vwd),
varToControl (v),
sourceValue (valueWithDefault.getPropertyAsValue()),
sourceValue (valueWithDefault->getPropertyAsValue()),
maxChoices (c),
buttonToControl (b)
{
@ -118,7 +118,10 @@ public:
var getValue() const override
{
auto v = valueWithDefault.get();
if (valueWithDefault == nullptr)
return {};
auto v = valueWithDefault->get();
if (auto* arr = v.getArray())
{
@ -134,11 +137,14 @@ public:
void setValue (const var& newValue) override
{
auto v = valueWithDefault.get();
if (valueWithDefault == nullptr)
return;
auto v = valueWithDefault->get();
OptionalScopedPointer<Array<var>> arrayToControl;
if (valueWithDefault.isUsingDefault())
if (valueWithDefault->isUsingDefault())
arrayToControl.set (new Array<var>(), true); // use an empty array so the default values are overwritten
else
arrayToControl.set (v.getArray(), false);
@ -149,7 +155,7 @@ public:
bool newState = newValue;
if (valueWithDefault.isUsingDefault())
if (valueWithDefault->isUsingDefault())
{
if (auto* defaultArray = v.getArray())
{
@ -171,15 +177,27 @@ public:
StringComparator c;
temp.sort (c);
valueWithDefault = temp;
*valueWithDefault = temp;
if (temp.size() == 0)
valueWithDefault.resetToDefault();
valueWithDefault->resetToDefault();
}
}
private:
ValueWithDefault& valueWithDefault;
//==============================================================================
void valueChanged (Value&) override { sendChangeMessage (true); }
void updateButtonTickColour() const noexcept
{
auto alpha = valueWithDefault->isUsingDefault() ? 0.4f : 1.0f;
auto baseColour = buttonToControl->findColour (ToggleButton::tickColourId);
buttonToControl->setColour (ToggleButton::tickColourId, baseColour.withAlpha (alpha));
}
//==============================================================================
WeakReference<ValueWithDefault> valueWithDefault;
var varToControl;
Value sourceValue;
@ -187,17 +205,6 @@ private:
ToggleButton* buttonToControl;
//==============================================================================
void valueChanged (Value&) override { sendChangeMessage (true); }
void updateButtonTickColour() const noexcept
{
auto alpha = valueWithDefault.isUsingDefault() ? 0.4f : 1.0f;
auto baseColour = buttonToControl->findColour (ToggleButton::tickColourId);
buttonToControl->setColour (ToggleButton::tickColourId, baseColour.withAlpha (alpha));
}
//==============================================================================
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MultiChoiceRemapperSourceWithDefault)
};
@ -254,16 +261,24 @@ MultiChoicePropertyComponent::MultiChoicePropertyComponent (ValueWithDefault& va
int maxChoices)
: MultiChoicePropertyComponent (propertyName, choices, correspondingValues)
{
valueWithDefault = &valueToControl;
// The value to control must be an array!
jassert (valueToControl.get().isArray());
jassert (valueWithDefault->get().isArray());
for (int i = 0; i < choiceButtons.size(); ++i)
choiceButtons[i]->getToggleStateValue().referTo (Value (new MultiChoiceRemapperSourceWithDefault (valueToControl,
choiceButtons[i]->getToggleStateValue().referTo (Value (new MultiChoiceRemapperSourceWithDefault (valueWithDefault,
correspondingValues[i],
maxChoices,
choiceButtons[i])));
valueToControl.onDefaultChange = [this] { repaint(); };
valueWithDefault->onDefaultChange = [this] { repaint(); };
}
MultiChoicePropertyComponent::~MultiChoicePropertyComponent()
{
if (valueWithDefault != nullptr)
valueWithDefault->onDefaultChange = nullptr;
}
void MultiChoicePropertyComponent::paint (Graphics& g)

View File

@ -41,6 +41,10 @@ namespace juce
*/
class MultiChoicePropertyComponent : public PropertyComponent
{
private:
/** Delegating constructor. */
MultiChoicePropertyComponent (const String&, const StringArray&, const Array<var>&);
public:
/** Creates the component. Note that the underlying var object that the Value refers to must be an array.
@ -62,7 +66,7 @@ public:
/** Creates the component using a ValueWithDefault object. This will select the default options.
@param valueToControl the ValueWithDefault object that contains the Value object that the ToggleButtons will read and control
@param valueToControl the ValueWithDefault object that contains the Value object that the ToggleButtons will read and control.
@param propertyName the name of the property
@param choices the list of possible values that will be represented
@param correspondingValues a list of values corresponding to each item in the 'choices' StringArray.
@ -78,6 +82,8 @@ public:
const Array<var>& correspondingValues,
int maxChoices = -1);
~MultiChoicePropertyComponent() override;
//==============================================================================
/** Returns true if the list of options is expanded. */
bool isExpanded() const noexcept { return expanded; }
@ -104,8 +110,7 @@ public:
void refresh() override {}
private:
MultiChoicePropertyComponent (const String&, const StringArray&, const Array<var>&);
//==============================================================================
class MultiChoiceRemapperSource;
class MultiChoiceRemapperSourceWithDefault;
@ -113,6 +118,8 @@ private:
void lookAndFeelChanged() override;
//==============================================================================
WeakReference<ValueWithDefault> valueWithDefault;
int maxHeight = 0;
int numHidden = 0;
bool expanded = false;

View File

@ -27,8 +27,8 @@
namespace juce
{
PropertyComponent::PropertyComponent (const String& name, const int preferredHeight_)
: Component (name), preferredHeight (preferredHeight_)
PropertyComponent::PropertyComponent (const String& name, int height)
: Component (name), preferredHeight (height)
{
jassert (name.isNotEmpty());
}
@ -37,7 +37,7 @@ PropertyComponent::~PropertyComponent() {}
void PropertyComponent::paint (Graphics& g)
{
LookAndFeel& lf = getLookAndFeel();
auto& lf = getLookAndFeel();
lf.drawPropertyComponentBackground (g, getWidth(), getHeight(), *this);
lf.drawPropertyComponentLabel (g, getWidth(), getHeight(), *this);
@ -45,7 +45,7 @@ void PropertyComponent::paint (Graphics& g)
void PropertyComponent::resized()
{
if (Component* const c = getChildComponent(0))
if (auto c = getChildComponent(0))
c->setBounds (getLookAndFeel().getPropertyComponentContentPosition (*this));
}

View File

@ -64,7 +64,7 @@ public:
int preferredHeight = 25);
/** Destructor. */
~PropertyComponent();
~PropertyComponent() override;
//==============================================================================
/** Returns this item's preferred height.
@ -123,7 +123,7 @@ public:
/** This abstract base class is implemented by LookAndFeel classes. */
struct JUCE_API LookAndFeelMethods
{
virtual ~LookAndFeelMethods() {}
virtual ~LookAndFeelMethods() = default;
virtual void drawPropertyPanelSectionHeader (Graphics&, const String& name, bool isOpen, int width, int height) = 0;
virtual void drawPropertyComponentBackground (Graphics&, int width, int height, PropertyComponent&) = 0;

View File

@ -45,7 +45,7 @@ struct PropertyPanel::SectionComponent : public Component
}
}
~SectionComponent()
~SectionComponent() override
{
propertyComps.clear();
}

View File

@ -52,7 +52,7 @@ public:
PropertyPanel (const String& name);
/** Destructor. */
~PropertyPanel();
~PropertyPanel() override;
//==============================================================================
/** Deletes all property components from the panel. */

View File

@ -75,7 +75,7 @@ public:
bool symmetricSkew = false);
/** Destructor. */
~SliderPropertyComponent();
~SliderPropertyComponent() override;
//==============================================================================
@ -92,7 +92,7 @@ public:
//==============================================================================
/** @internal */
void refresh();
void refresh() override;
protected:
/** The slider component being used in this component.

View File

@ -96,8 +96,9 @@ public:
{
if (getText().isEmpty() && ! isBeingEdited())
{
auto textArea = getBorderSize().subtractedFrom (getLocalBounds());
auto labelFont = owner.getLookAndFeel().getLabelFont (*this);
auto& lf = owner.getLookAndFeel();
auto textArea = lf.getLabelBorderSize (*this).subtractedFrom (getLocalBounds());
auto labelFont = lf.getLabelFont (*this);
g.setColour (owner.findColour (TextPropertyComponent::textColourId).withAlpha (alphaToUseForEmptyText));
g.setFont (labelFont);
@ -123,26 +124,32 @@ private:
class TextPropertyComponent::RemapperValueSourceWithDefault : public Value::ValueSource
{
public:
RemapperValueSourceWithDefault (const ValueWithDefault& vwd)
RemapperValueSourceWithDefault (ValueWithDefault* vwd)
: valueWithDefault (vwd)
{
}
var getValue() const override
{
return valueWithDefault.isUsingDefault() ? var() : valueWithDefault.get();
if (valueWithDefault == nullptr || valueWithDefault->isUsingDefault())
return {};
return valueWithDefault->get();
}
void setValue (const var& newValue) override
{
if (valueWithDefault == nullptr)
return;
if (newValue.toString().isEmpty())
valueWithDefault.resetToDefault();
valueWithDefault->resetToDefault();
else
valueWithDefault = newValue;
*valueWithDefault = newValue;
}
private:
ValueWithDefault valueWithDefault;
WeakReference<ValueWithDefault> valueWithDefault;
//==============================================================================
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (RemapperValueSourceWithDefault)
@ -159,35 +166,33 @@ TextPropertyComponent::TextPropertyComponent (const String& name,
createEditor (maxNumChars, isEditable);
}
TextPropertyComponent::TextPropertyComponent (const Value& valueToControl,
const String& name,
int maxNumChars,
bool isMultiLine,
bool isEditable)
: TextPropertyComponent (name, maxNumChars, isMultiLine, isEditable)
TextPropertyComponent::TextPropertyComponent (const Value& valueToControl, const String& name,
int maxNumChars, bool multiLine, bool isEditable)
: TextPropertyComponent (name, maxNumChars, multiLine, isEditable)
{
textEditor->getTextValue().referTo (valueToControl);
}
TextPropertyComponent::TextPropertyComponent (ValueWithDefault& valueToControl,
const String& name,
int maxNumChars,
bool isMultiLine,
bool isEditable)
: TextPropertyComponent (name, maxNumChars, isMultiLine, isEditable)
TextPropertyComponent::TextPropertyComponent (ValueWithDefault& valueToControl, const String& name,
int maxNumChars, bool multiLine, bool isEditable)
: TextPropertyComponent (name, maxNumChars, multiLine, isEditable)
{
textEditor->getTextValue().referTo (Value (new RemapperValueSourceWithDefault (valueToControl)));
textEditor->setTextToDisplayWhenEmpty (valueToControl.getDefault(), 0.5f);
valueWithDefault = &valueToControl;
valueToControl.onDefaultChange = [this, &valueToControl]
textEditor->getTextValue().referTo (Value (new RemapperValueSourceWithDefault (valueWithDefault)));
textEditor->setTextToDisplayWhenEmpty (valueWithDefault->getDefault(), 0.5f);
valueWithDefault->onDefaultChange = [this]
{
textEditor->setTextToDisplayWhenEmpty (valueToControl.getDefault(), 0.5f);
textEditor->setTextToDisplayWhenEmpty (valueWithDefault->getDefault(), 0.5f);
repaint();
};
}
TextPropertyComponent::~TextPropertyComponent()
{
if (valueWithDefault != nullptr)
valueWithDefault->onDefaultChange = nullptr;
}
void TextPropertyComponent::setText (const String& newText)

View File

@ -74,7 +74,7 @@ public:
/** Creates a text property component with a default value.
@param valueToControl The ValueWithDefault that is controlled by the TextPropertyComponent
@param valueToControl The ValueWithDefault that is controlled by the TextPropertyComponent.
@param propertyName The name of the property
@param maxNumChars If not zero, then this specifies the maximum allowable length of
the string. If zero, then the string will have no length limit.
@ -90,7 +90,7 @@ public:
bool isEditable = true);
/** Destructor. */
~TextPropertyComponent();
~TextPropertyComponent() override;
//==============================================================================
/** Called when the user edits the text.
@ -133,7 +133,7 @@ public:
{
public:
/** Destructor. */
virtual ~Listener() {}
virtual ~Listener() = default;
/** Called when text has finished being entered (i.e. not per keypress) has changed. */
virtual void textPropertyComponentChanged (TextPropertyComponent*) = 0;
@ -168,19 +168,23 @@ public:
virtual void textWasEdited();
private:
bool isMultiLine;
class RemapperValueSourceWithDefault;
class LabelComp;
friend class LabelComp;
//==============================================================================
void callListeners();
void createEditor (int maxNumChars, bool isEditable);
//==============================================================================
bool isMultiLine;
std::unique_ptr<LabelComp> textEditor;
ListenerList<Listener> listenerList;
void callListeners();
void createEditor (int maxNumChars, bool isEditable);
WeakReference<ValueWithDefault> valueWithDefault;
//==============================================================================
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (TextPropertyComponent)
};