============================================================================== ModulationMatrixRow Implementation ==============================================================================
| 56 | // ModulationMatrixRow Implementation |
| 57 | //============================================================================== |
| 58 | ModulationMatrixRow::ModulationMatrixRow(FireAudioProcessor& p, int routingIndex, std::function<void()> onDelete) |
| 59 | : processor(p), index(routingIndex), onDeleteCallback(onDelete) |
| 60 | { |
| 61 | setLookAndFeel(&fireLookAndFeel); |
| 62 | // SOURCE MENU |
| 63 | addAndMakeVisible(sourceMenu); |
| 64 | for (int i = 1; i <= 4; ++i) |
| 65 | sourceMenu.addItem("LFO " + juce::String(i), i); |
| 66 | sourceMenu.setSelectedId(processor.getLfoManager().getModulationRoutings()[index].sourceLfoIndex + 1, juce::dontSendNotification); |
| 67 | sourceMenu.addListener(this); |
| 68 | sourceMenu.setColour(juce::ComboBox::backgroundColourId, COLOUR6); |
| 69 | sourceMenu.setColour(juce::ComboBox::outlineColourId, COLOUR7); |
| 70 | sourceMenu.setColour(juce::ComboBox::textColourId, COLOUR1); |
| 71 | |
| 72 | // AMOUNT SLIDER |
| 73 | addAndMakeVisible(amountSlider); |
| 74 | amountSlider.setRange(-1.0, 1.0, 0.01); |
| 75 | amountSlider.setValue(processor.getLfoManager().getModulationRoutings()[index].depth, juce::dontSendNotification); |
| 76 | amountSlider.setSliderStyle(juce::Slider::LinearHorizontal); |
| 77 | amountSlider.setTextBoxStyle(juce::Slider::TextBoxRight, false, 60, 20); |
| 78 | amountSlider.setScrollWheelEnabled(false); |
| 79 | amountSlider.addListener(this); |
| 80 | |
| 81 | // BIPOLAR BUTTON |
| 82 | addAndMakeVisible(bipolarButton); |
| 83 | bipolarButton.setComponentID("rounded"); |
| 84 | bipolarButton.setColour(juce::TextButton::buttonColourId, COLOUR6); |
| 85 | bipolarButton.setColour(juce::TextButton::buttonOnColourId, COLOUR6); |
| 86 | bipolarButton.setColour(juce::TextButton::textColourOnId, COLOUR1); |
| 87 | bipolarButton.setColour(juce::TextButton::textColourOffId, COLOUR1); |
| 88 | bipolarButton.setColour(juce::ComboBox::outlineColourId, COLOUR6); |
| 89 | bipolarButton.setClickingTogglesState(true); |
| 90 | bipolarButton.setToggleState(processor.getLfoManager().getModulationRoutings()[index].isBipolar, juce::dontSendNotification); |
| 91 | bipolarButton.setButtonText(bipolarButton.getToggleState() ? "Bi" : "Uni"); |
| 92 | bipolarButton.onStateChange = [this] |
| 93 | { |
| 94 | bipolarButton.setButtonText(bipolarButton.getToggleState() ? "Bi" : "Uni"); |
| 95 | processor.getLfoManager().getModulationRoutings().getReference(index).isBipolar = bipolarButton.getToggleState(); |
| 96 | }; |
| 97 | |
| 98 | // BYPASS BUTTON |
| 99 | addAndMakeVisible(bypassButton); |
| 100 | bypassButton.setComponentID("rounded"); |
| 101 | bypassButton.setColour(juce::TextButton::buttonColourId, COLOUR6); |
| 102 | bypassButton.setColour(juce::TextButton::buttonOnColourId, COLOUR6); |
| 103 | bypassButton.setColour(juce::TextButton::textColourOnId, COLOUR1); |
| 104 | bypassButton.setColour(juce::TextButton::textColourOffId, COLOUR1); |
| 105 | bypassButton.setColour(juce::ComboBox::outlineColourId, COLOUR6); |
| 106 | bypassButton.setClickingTogglesState(true); |
| 107 | bypassButton.setToggleState(processor.getLfoManager().getModulationRoutings()[index].isBypassed, juce::dontSendNotification); |
| 108 | bypassButton.setButtonText(bypassButton.getToggleState() ? "On" : "Off"); |
| 109 | bypassButton.onStateChange = [this] |
| 110 | { |
| 111 | bypassButton.setButtonText(bypassButton.getToggleState() ? "On" : "Off"); |
| 112 | processor.getLfoManager().getModulationRoutings().getReference(index).isBypassed = bypassButton.getToggleState(); |
| 113 | }; |
| 114 | |
| 115 | // === DESTINATION MENU === |
nothing calls this directly
no test coverage detected