Browse Source

Ensure that TextPropertyComponent and ChoicePropertyComponent are updated when the ValueWithDefault default is changed

tags/2021-05-28
ed 7 years ago
parent
commit
89d1e60595
6 changed files with 37 additions and 11 deletions
  1. +1
    -1
      extras/Projucer/Source/Utility/Helpers/jucer_MiscUtilities.h
  2. +2
    -2
      extras/Projucer/Source/Utility/UI/PropertyComponents/jucer_PropertyComponentsWithEnablement.h
  3. +24
    -4
      modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.cpp
  4. +2
    -2
      modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.h
  5. +7
    -1
      modules/juce_gui_basics/properties/juce_TextPropertyComponent.cpp
  6. +1
    -1
      modules/juce_gui_basics/properties/juce_TextPropertyComponent.h

+ 1
- 1
extras/Projucer/Source/Utility/Helpers/jucer_MiscUtilities.h View File

@@ -94,7 +94,7 @@ struct PropertyListBuilder
mainHelpText + " Use semi-colons or new-lines to separate multiple paths.");
}
void addSearchPathProperty (const ValueWithDefault& value, const String& name, const String& mainHelpText)
void addSearchPathProperty (ValueWithDefault& value, const String& name, const String& mainHelpText)
{
add (new TextPropertyComponent (value, name, 16384, true),
mainHelpText + " Use semi-colons or new-lines to separate multiple paths.");


+ 2
- 2
extras/Projucer/Source/Utility/UI/PropertyComponents/jucer_PropertyComponentsWithEnablement.h View File

@@ -32,7 +32,7 @@ class TextPropertyComponentWithEnablement : public TextPropertyComponent,
private Value::Listener
{
public:
TextPropertyComponentWithEnablement (const ValueWithDefault& valueToControl,
TextPropertyComponentWithEnablement (ValueWithDefault& valueToControl,
ValueWithDefault valueToListenTo,
const String& propertyName,
int maxNumChars,
@@ -59,7 +59,7 @@ class ChoicePropertyComponentWithEnablement : public ChoicePropertyComponent,
private Value::Listener
{
public:
ChoicePropertyComponentWithEnablement (const ValueWithDefault& valueToControl,
ChoicePropertyComponentWithEnablement (ValueWithDefault& valueToControl,
ValueWithDefault valueToListenTo,
const String& propertyName,
const StringArray& choices,


+ 24
- 4
modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.cpp View File

@@ -73,7 +73,7 @@ class ChoicePropertyComponent::RemapperValueSourceWithDefault : public Value:
private Value::Listener
{
public:
RemapperValueSourceWithDefault (const ValueWithDefault& vwd, const Array<var>& map)
RemapperValueSourceWithDefault (ValueWithDefault& vwd, const Array<var>& map)
: valueWithDefault (vwd),
sourceValue (valueWithDefault.getPropertyAsValue()),
mappings (map)
@@ -113,7 +113,7 @@ public:
}
private:
ValueWithDefault valueWithDefault;
ValueWithDefault& valueWithDefault;
Value sourceValue;
Array<var> mappings;
@@ -155,7 +155,7 @@ ChoicePropertyComponent::ChoicePropertyComponent (const Value& valueToControl,
correspondingValues)));
}
ChoicePropertyComponent::ChoicePropertyComponent (const ValueWithDefault& valueToControl,
ChoicePropertyComponent::ChoicePropertyComponent (ValueWithDefault& valueToControl,
const String& name,
const StringArray& choiceList,
const Array<var>& correspondingValues)
@@ -165,9 +165,19 @@ ChoicePropertyComponent::ChoicePropertyComponent (const ValueWithDefault& valueT
comboBox.getSelectedIdAsValue().referTo (Value (new RemapperValueSourceWithDefault (valueToControl,
correspondingValues)));
valueToControl.onDefaultChange = [this, &valueToControl, choiceList, correspondingValues]
{
auto selectedId = comboBox.getSelectedId();
comboBox.clear();
createComboBoxWithDefault (choiceList [correspondingValues.indexOf (valueToControl.getDefault())]);
comboBox.setSelectedId (selectedId);
};
}
ChoicePropertyComponent::ChoicePropertyComponent (const ValueWithDefault& valueToControl,
ChoicePropertyComponent::ChoicePropertyComponent (ValueWithDefault& valueToControl,
const String& name)
: PropertyComponent (name),
choices ({ "Enabled", "Disabled" })
@@ -176,6 +186,16 @@ ChoicePropertyComponent::ChoicePropertyComponent (const ValueWithDefault& valueT
comboBox.getSelectedIdAsValue().referTo (Value (new RemapperValueSourceWithDefault (valueToControl,
{ true, false })));
valueToControl.onDefaultChange = [this, &valueToControl]
{
auto selectedId = comboBox.getSelectedId();
comboBox.clear();
createComboBoxWithDefault (valueToControl.getDefault() ? "Enabled" : "Disabled");
comboBox.setSelectedId (selectedId);
};
}
ChoicePropertyComponent::~ChoicePropertyComponent()


+ 2
- 2
modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.h View File

@@ -88,7 +88,7 @@ public:
as the choices array
*/
ChoicePropertyComponent (const ValueWithDefault& valueToControl,
ChoicePropertyComponent (ValueWithDefault& valueToControl,
const String& propertyName,
const StringArray& choices,
const Array<var>& correspondingValues);
@@ -98,7 +98,7 @@ public:
This is useful for simple on/off choices that also need a default value.
*/
ChoicePropertyComponent (const ValueWithDefault& valueToControl,
ChoicePropertyComponent (ValueWithDefault& valueToControl,
const String& propertyName);
/** Destructor. */


+ 7
- 1
modules/juce_gui_basics/properties/juce_TextPropertyComponent.cpp View File

@@ -169,7 +169,7 @@ TextPropertyComponent::TextPropertyComponent (const Value& valueToControl,
textEditor->getTextValue().referTo (valueToControl);
}
TextPropertyComponent::TextPropertyComponent (const ValueWithDefault& valueToControl,
TextPropertyComponent::TextPropertyComponent (ValueWithDefault& valueToControl,
const String& name,
int maxNumChars,
bool isMultiLine,
@@ -178,6 +178,12 @@ TextPropertyComponent::TextPropertyComponent (const ValueWithDefault& valueToCon
{
textEditor->getTextValue().referTo (Value (new RemapperValueSourceWithDefault (valueToControl)));
textEditor->setTextToDisplayWhenEmpty (valueToControl.getDefault(), 0.5f);
valueToControl.onDefaultChange = [this, &valueToControl]
{
textEditor->setTextToDisplayWhenEmpty (valueToControl.getDefault(), 0.5f);
repaint();
};
}
TextPropertyComponent::~TextPropertyComponent()


+ 1
- 1
modules/juce_gui_basics/properties/juce_TextPropertyComponent.h View File

@@ -83,7 +83,7 @@ public:
@see TextEditor, setEditable
*/
TextPropertyComponent (const ValueWithDefault& valueToControl,
TextPropertyComponent (ValueWithDefault& valueToControl,
const String& propertyName,
int maxNumChars,
bool isMultiLine,


Loading…
Cancel
Save