Skip to content

Instantly share code, notes, and snippets.

@ffAudio
Created December 5, 2021 18:53
Show Gist options
  • Save ffAudio/ed82a29181bf3a878b425bf2adb7006b to your computer and use it in GitHub Desktop.
Save ffAudio/ed82a29181bf3a878b425bf2adb7006b to your computer and use it in GitHub Desktop.
Test for a ThreeValueSlider with TextBoxes
/*
==============================================================================
ThreeValueSlider.h
Created: 5 Dec 2021 6:50:04pm
Author: Daniel Walz
==============================================================================
*/
#pragma once
class ThreeValueSlider : public juce::Component,
public juce::Slider::Listener,
public juce::TextEditor::Listener
{
public:
ThreeValueSlider()
{
slider.addListener (this);
minValue.addListener (this);
maxValue.addListener (this);
value.addListener (this);
addAndMakeVisible (slider);
addAndMakeVisible (minValue);
addAndMakeVisible (maxValue);
addAndMakeVisible (value);
updateEditorText();
}
void sliderValueChanged (juce::Slider* changed) override
{
updateEditorText();
}
void textEditorReturnKeyPressed (juce::TextEditor& editor) override
{
if (&editor == &minValue)
slider.setMinValue (slider.getValueFromText (minValue.getText()), juce::dontSendNotification);
else if (&editor == &value)
slider.setValue (slider.getValueFromText (value.getText()), juce::dontSendNotification);
else if (&editor == &maxValue)
slider.setMaxValue (slider.getValueFromText (maxValue.getText()), juce::dontSendNotification);
updateEditorText();
}
void resized() override
{
auto bounds = getLocalBounds();
slider.setBounds (bounds.removeFromTop (getHeight() / 2));
minValue.setBounds (bounds.removeFromLeft (getWidth() / 3));
maxValue.setBounds (bounds.removeFromRight (getWidth() / 3));
value.setBounds (bounds);
}
juce::Slider slider { juce::Slider::ThreeValueHorizontal, juce::Slider::NoTextBox };
private:
void updateEditorText()
{
value.setText (slider.getTextFromValue (slider.getValue()), juce::dontSendNotification);
minValue.setText (slider.getTextFromValue (slider.getMinValue()), juce::dontSendNotification);
maxValue.setText (slider.getTextFromValue (slider.getMaxValue()), juce::dontSendNotification);
}
juce::TextEditor minValue;
juce::TextEditor maxValue;
juce::TextEditor value;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ThreeValueSlider)
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment