/* ============================================================================== This is an automatically generated file created by the Jucer! Creation date: 19 Aug 2012 10:54:59am Be careful when adding custom code to these files, as only the code within the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded and re-saved. Jucer version: 1.12 ------------------------------------------------------------------------------ The Jucer is part of the JUCE library - "Jules' Utility Class Extensions" Copyright 2004-6 by Raw Material Software ltd. ============================================================================== */ #ifndef __JUCER_HEADER_MIDICCPOPUP_MIDICCPOPUP_EA70576__ #define __JUCER_HEADER_MIDICCPOPUP_MIDICCPOPUP_EA70576__ //[Headers] -- You can add your own extra header files here -- #include "../JuceLibraryCode/JuceHeader.h" #include "PluginProcessor.h" //#include "juce.h" class MidiCC_PopUp_Listener { public: virtual void MidiCC_PopUp_event(int /*event*/) {}; }; //[/Headers] //============================================================================== /** //[Comments] An auto-generated component, created by the Jucer. Describe your class and how it works here! //[/Comments] */ class MidiCC_PopUp : public Component, public ButtonListener, public LabelListener, public SliderListener { public: //============================================================================== MidiCC_PopUp (JaySynthMidiCC *pMidiCC, int paramID, synth_float_t currParamValue, JaySynth::midiCC_info_t *pCurrMidiCCinfo, String name, MidiCC_PopUp_Listener *listener); ~MidiCC_PopUp(); //============================================================================== //[UserMethods] -- You can add your own custom methods in this section. enum { POPUP_DELETED = 0, POPUP_CREATED, POPUP_SHOW, POPUP_PARAM_CHANGED, POPUP_OK }; void addListener(MidiCC_PopUp_Listener *listener) { listeners.add (listener); } void show(void) { this->setVisible(true); listeners.call (&MidiCC_PopUp_Listener::MidiCC_PopUp_event, POPUP_SHOW); } bool isEnabled(void) { return pMidiCC->isAssigned(pMidiCC_container); } bool doChangeParameter(void) { return pMidiCC->doChangeParameter(pMidiCC_container); } void setControllerID(int controllerID) { lastMidiCCvalue = pSavedMidiCCinfo[pMidiCC->getControllerID(pMidiCC_container)].value; if (isEnabled()) { currentParamValue = toParam(pMidiCC->getParam(pMidiCC_container), (synth_float_t)lastMidiCCvalue); currentControlValue = toParam(pMidiCC->getControl(pMidiCC_container), (synth_float_t)lastMidiCCvalue); } restoreTestSlider(); TestValueUpdate(); if (!button_midi_learn->getToggleState()) return; label_MidiCC_ID->setText(String(controllerID), juce::NotificationType::sendNotification); } synth_float_t getCurrentControlValue(void) { return currentControlValue; } synth_float_t getCurrentParamValue(void) { return currentParamValue; } int getParamID(void) { return pMidiCC->getParamID(pMidiCC_container); } void TestValueUpdate() { if (doChangeParameter()) { currentControlValue = 0; currentParamValue = toParam(pMidiCC->getParam(pMidiCC_container), (synth_float_t)slider_test->getValue()); } else { currentParamValue = savedParamValue; currentControlValue = toParam(pMidiCC->getControl(pMidiCC_container), (synth_float_t)slider_test->getValue()); } listeners.call (&MidiCC_PopUp_Listener::MidiCC_PopUp_event, POPUP_PARAM_CHANGED); } void restoreTestSlider() { if (doChangeParameter()) { slider_test->setValue(toSlider(pMidiCC->getParam(pMidiCC_container), (synth_float_t)currentParamValue), juce::NotificationType::sendNotification); } else { slider_test->setValue(toSlider(pMidiCC->getControl(pMidiCC_container), (synth_float_t)currentControlValue), juce::NotificationType::sendNotification); } } void GetMin(); void GetMax(); void SetMin(); void SetMax(); ComponentDragger myDragger; void mouseDown (const MouseEvent& e) { myDragger.startDraggingComponent (this, e); } void mouseDrag (const MouseEvent& e) { myDragger.dragComponent (this, e, nullptr); } void mouseWheelMove(const MouseEvent &event, const MouseWheelDetails &wheel); //[/UserMethods] void paint (Graphics& g); void resized(); void buttonClicked (Button* buttonThatWasClicked); void labelTextChanged (Label* labelThatHasChanged); void sliderValueChanged (Slider* sliderThatWasMoved); //============================================================================== juce_UseDebuggingNewOperator private: //[UserVariables] -- You can add your own custom variables in this section. JaySynthMidiCC *pMidiCC; midiCC_container_t *pMidiCC_container; ListenerList listeners; JaySynth::midiCC_info_t *pSavedMidiCCinfo; synth_float_t lastMidiCCvalue; synth_float_t savedParamValue; synth_float_t currentParamValue; synth_float_t currentControlValue; synth_float_t lastControlValue; synth_float_t lastParamValue; //[/UserVariables] //============================================================================== TextButton* textButton_OK; Label* label_MidiCC_ID; Label* label_control_min; Label* label_control_max; Slider* slider_test; ToggleButton* button_move_sliders_enable; ToggleButton* button_assign_enable; ToggleButton* button_midi_learn; Label* label_parameter_name; ToggleButton* button_apply_on_patch_init; //============================================================================== // (prevent copy constructor and operator= being generated..) MidiCC_PopUp (const MidiCC_PopUp&); const MidiCC_PopUp& operator= (const MidiCC_PopUp&); }; #endif // __JUCER_HEADER_MIDICCPOPUP_MIDICCPOPUP_EA70576__