Hello, im trying to change slider colours when the plugin ‘mode’ is changed to give the user some visual aid. The colour does change however, it only does so when i hover the cursor over each of them.
is there something that can force update sliders?
Thanks in advance!
#include "PluginProcessor.h"
#include "PluginEditor.h"
//==============================================================================
CW2DelayAudioProcessorEditor::CW2DelayAudioProcessorEditor (CW2DelayAudioProcessor& p, juce::AudioProcessorValueTreeState& vts)
: AudioProcessorEditor (&p), audioProcessor (p), treeState(vts)
{
setSize (550, 450);
delayTimeValue = std::make_unique<juce::AudioProcessorValueTreeState::SliderAttachment>(treeState, "delayTime", delayTimeDial);
delayTimeDial.setSliderStyle(juce::Slider::RotaryVerticalDrag);
delayTimeDial.setRange(10, 3000, 0.1);
delayTimeDial.getLookAndFeel().setColour(juce::Slider::rotarySliderOutlineColourId, juce::Colour(38, 38, 38));
delayTimeDial.setTextBoxStyle(juce::Slider::TextEntryBoxPosition::TextBoxBelow, false, 60, 20);
addAndMakeVisible(&delayTimeDial);
delayFeedbackValue = std::make_unique<juce::AudioProcessorValueTreeState::SliderAttachment>(treeState, "delayFeedback", delayFeedbackDial);
delayFeedbackDial.setSliderStyle(juce::Slider::RotaryVerticalDrag);
delayFeedbackDial.setRange(0.0, 0.99, 0.01);
delayFeedbackDial.setTextBoxStyle(juce::Slider::TextEntryBoxPosition::TextBoxBelow, false, 60, 20);
addAndMakeVisible(&delayFeedbackDial);
dryWetMixValue = std::make_unique<juce::AudioProcessorValueTreeState::SliderAttachment>(treeState, "dryWetMix", dryWetMixDial);
dryWetMixDial.setSliderStyle(juce::Slider::RotaryVerticalDrag);
dryWetMixDial.setRange(0.0, 1.0, 0.01);
dryWetMixDial.setTextBoxStyle(juce::Slider::TextEntryBoxPosition::TextBoxBelow, false, 60, 20);
addAndMakeVisible(&dryWetMixDial);
modeValue = std::make_unique<juce::AudioProcessorValueTreeState::SliderAttachment>(treeState, "mode", modeDial);
modeDial.setSliderStyle(juce::Slider::RotaryVerticalDrag);
modeDial.setRange(0.0, 1.0, 0.5);
modeDial.setTextBoxStyle(juce::Slider::TextEntryBoxPosition::NoTextBox, true, 0, 0);
addAndMakeVisible(&modeDial);
}
CW2DelayAudioProcessorEditor::~CW2DelayAudioProcessorEditor()
{
}
//==============================================================================
void CW2DelayAudioProcessorEditor::paint (juce::Graphics& g)
{
background = juce::ImageCache::getFromMemory(BinaryData::background_png, BinaryData::background_pngSize);
g.drawImage(background, 0, 0, 550, 450, 0, 0, 5500, 4500);
if (modeDial.getValue() == 0.5)
{
delayTimeDial.getLookAndFeel().setColour(juce::Slider::thumbColourId, juce::Colours::grey);
delayTimeDial.getLookAndFeel().setColour(juce::Slider::rotarySliderFillColourId, juce::Colours::grey);
return;
}
else if (modeDial.getValue() == 0)
{
delayTimeDial.getLookAndFeel().setColour(juce::Slider::thumbColourId, juce::Colours::red);
delayTimeDial.getLookAndFeel().setColour(juce::Slider::rotarySliderFillColourId, juce::Colours::red);
return;
}
else if (modeDial.getValue() == 1)
{
delayTimeDial.getLookAndFeel().setColour(juce::Slider::thumbColourId, juce::Colours::green);
delayTimeDial.getLookAndFeel().setColour(juce::Slider::rotarySliderFillColourId, juce::Colours::green);
return;
}
}
void CW2DelayAudioProcessorEditor::resized()
{
delayTimeDial.setBounds(50, 50, 150, 150);
delayFeedbackDial.setBounds(200, 50, 150, 150);
dryWetMixDial.setBounds(350, 50, 150, 150);
modeDial.setBounds(210, 250, 125, 125);
}
