n2xParts.cpp (1185B)
1 #include "n2xParts.h" 2 3 #include "n2xController.h" 4 #include "n2xEditor.h" 5 6 namespace n2xJucePlugin 7 { 8 Parts::Parts(Editor& _editor): m_editor(_editor) 9 { 10 m_parts[0] = _editor.findComponentT<Part>("PerfSlotActiveA"); 11 m_parts[1] = _editor.findComponentT<Part>("PerfSlotActiveB"); 12 m_parts[2] = _editor.findComponentT<Part>("PerfSlotActiveC"); 13 m_parts[3] = _editor.findComponentT<Part>("PerfSlotActiveD"); 14 15 m_partLeds[0].reset(new PartLed(_editor, 0)); 16 m_partLeds[1].reset(new PartLed(_editor, 1)); 17 m_partLeds[2].reset(new PartLed(_editor, 2)); 18 m_partLeds[3].reset(new PartLed(_editor, 3)); 19 20 for(uint8_t p=0; p<static_cast<uint8_t>(m_parts.size()); ++p) 21 { 22 auto* part = m_parts[p]; 23 part->initalize(p); 24 } 25 26 onCurrentPartChanged.set(_editor.getN2xController().onCurrentPartChanged, [this](const uint8_t& _part) 27 { 28 setCurrentPart(_part); 29 }); 30 31 setCurrentPart(0); 32 } 33 34 void Parts::setCurrentPart(const uint8_t _part) const 35 { 36 juce::MessageManager::callAsync([this, _part] 37 { 38 for(uint8_t p=0; p<static_cast<uint8_t>(m_parts.size()); ++p) 39 { 40 auto* part = m_parts[p]; 41 part->setToggleState(_part == p, juce::dontSendNotification); 42 } 43 }); 44 } 45 }