/* ============================================================================== This is an automatically generated GUI class created by the Introjucer! 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. Created with Introjucer version: 3.1.0 ------------------------------------------------------------------------------ The Introjucer is part of the JUCE library - "Jules' Utility Class Extensions" Copyright 2004-13 by Raw Material Software Ltd. ============================================================================== */ //[Headers] You can add your own extra header files here... #include "Dexed.h" //[/Headers] #include "ParamDialog.h" //[MiscUserDefs] You can add your own user definitions and misc code here... //[/MiscUserDefs] //============================================================================== ParamDialog::ParamDialog () { addAndMakeVisible (pitchRange = new Slider ("pitchRange")); pitchRange->setRange (0, 12, 1); pitchRange->setSliderStyle (Slider::RotaryVerticalDrag); pitchRange->setTextBoxStyle (Slider::TextBoxLeft, false, 80, 20); pitchRange->addListener (this); addAndMakeVisible (pitchStep = new Slider ("pitchStep")); pitchStep->setRange (0, 12, 1); pitchStep->setSliderStyle (Slider::RotaryVerticalDrag); pitchStep->setTextBoxStyle (Slider::TextBoxLeft, false, 80, 20); pitchStep->addListener (this); addAndMakeVisible (sysexIn = new ComboBox ("sysexIn")); sysexIn->setEditableText (false); sysexIn->setJustificationType (Justification::centredLeft); sysexIn->setTextWhenNothingSelected (String::empty); sysexIn->setTextWhenNoChoicesAvailable (TRANS("(no choices)")); sysexIn->addListener (this); addAndMakeVisible (sysexOut = new ComboBox ("sysexOut")); sysexOut->setEditableText (false); sysexOut->setJustificationType (Justification::centredLeft); sysexOut->setTextWhenNothingSelected (String::empty); sysexOut->setTextWhenNoChoicesAvailable (TRANS("(no choices)")); sysexOut->addListener (this); addAndMakeVisible (sysexChl = new Slider ("sysexChl")); sysexChl->setRange (1, 16, 1); sysexChl->setSliderStyle (Slider::RotaryVerticalDrag); sysexChl->setTextBoxStyle (Slider::TextBoxLeft, false, 80, 20); sysexChl->addListener (this); addAndMakeVisible (engineReso = new ComboBox ("new combo box")); engineReso->setEditableText (false); engineReso->setJustificationType (Justification::centredLeft); engineReso->setTextWhenNothingSelected (String::empty); engineReso->setTextWhenNoChoicesAvailable (TRANS("(no choices)")); engineReso->addItem (TRANS("Modern (Direct)"), 1); engineReso->addItem (TRANS("Mark I"), 2); engineReso->addItem (TRANS("OPL Series"), 3); engineReso->addListener (this); addAndMakeVisible (showKeyboard = new ToggleButton ("showKeyboard")); showKeyboard->setButtonText (String::empty); //[UserPreSize] //[/UserPreSize] setSize (350, 350); //[Constructor] You can add your own custom stuff here.. pitchRange->setEnabled(pitchStep->getValue() == 0); StringArray input; input.add("None"); input.addArray(MidiInput::getDevices()); sysexIn->addItemList(input, 2); StringArray output; output.add("None"); output.addArray(MidiOutput::getDevices()); sysexOut->addItemList(output, 2); //[/Constructor] } ParamDialog::~ParamDialog() { //[Destructor_pre]. You can add your own custom destruction code here.. //[/Destructor_pre] pitchRange = nullptr; pitchStep = nullptr; sysexIn = nullptr; sysexOut = nullptr; sysexChl = nullptr; engineReso = nullptr; showKeyboard = nullptr; //[Destructor]. You can add your own custom destruction code here.. //[/Destructor] } //============================================================================== void ParamDialog::paint (Graphics& g) { //[UserPrePaint] Add your own custom painting code here.. //[/UserPrePaint] g.fillAll (Colour (0xff3c322f)); g.setColour (Colours::white); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("Pitch Bend Range"), 20, 16, 276, 23, Justification::centredLeft, true); g.setColour (Colours::white); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("Pitch Bend Step"), 20, 56, 276, 23, Justification::centredLeft, true); g.setColour (Colours::white); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("DX7 In"), 20, 224, 131, 23, Justification::centredLeft, true); g.setColour (Colours::white); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("DX7 Out"), 20, 264, 131, 23, Justification::centredLeft, true); g.setColour (Colours::white); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("DX7 Channel"), 20, 304, 245, 23, Justification::centredLeft, true); g.setColour (Colours::white); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("Engine Resolution"), 20, 156, 276, 23, Justification::centredLeft, true); g.setColour (Colours::black); g.fillRect (22, 138, 306, 1); g.setColour (Colours::black); g.fillRect (22, 195, 306, 1); g.setColour (Colours::white); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("Show Keyboard"), 20, 96, 276, 23, Justification::centredLeft, true); //[UserPaint] Add your own custom painting code here.. //[/UserPaint] } void ParamDialog::resized() { pitchRange->setBounds (264, 16, 72, 24); pitchStep->setBounds (264, 56, 72, 24); sysexIn->setBounds (104, 224, 224, 24); sysexOut->setBounds (104, 264, 224, 24); sysexChl->setBounds (264, 304, 72, 24); engineReso->setBounds (160, 156, 168, 24); showKeyboard->setBounds (264, 96, 56, 24); //[UserResized] Add your own custom resize handling here.. //[/UserResized] } void ParamDialog::sliderValueChanged (Slider* sliderThatWasMoved) { //[UsersliderValueChanged_Pre] //[/UsersliderValueChanged_Pre] if (sliderThatWasMoved == pitchRange) { //[UserSliderCode_pitchRange] -- add your slider handling code here.. //[/UserSliderCode_pitchRange] } else if (sliderThatWasMoved == pitchStep) { //[UserSliderCode_pitchStep] -- add your slider handling code here.. pitchRange->setEnabled(pitchStep->getValue() == 0); //[/UserSliderCode_pitchStep] } else if (sliderThatWasMoved == sysexChl) { //[UserSliderCode_sysexChl] -- add your slider handling code here.. //[/UserSliderCode_sysexChl] } //[UsersliderValueChanged_Post] //[/UsersliderValueChanged_Post] } void ParamDialog::comboBoxChanged (ComboBox* comboBoxThatHasChanged) { //[UsercomboBoxChanged_Pre] //[/UsercomboBoxChanged_Pre] if (comboBoxThatHasChanged == sysexIn) { //[UserComboBoxCode_sysexIn] -- add your combo box handling code here.. //[/UserComboBoxCode_sysexIn] } else if (comboBoxThatHasChanged == sysexOut) { //[UserComboBoxCode_sysexOut] -- add your combo box handling code here.. //[/UserComboBoxCode_sysexOut] } else if (comboBoxThatHasChanged == engineReso) { //[UserComboBoxCode_engineReso] -- add your combo box handling code here.. //[/UserComboBoxCode_engineReso] } //[UsercomboBoxChanged_Post] //[/UsercomboBoxChanged_Post] } //[MiscUserCode] You can add your own definitions of your custom methods or any other code here... void ParamDialog::setDialogValues(Controllers &c, SysexComm &mgr, int reso, bool showKey) { pitchRange->setValue(c.values_[kControllerPitchRange]); pitchStep->setValue(c.values_[kControllerPitchStep]); sysexChl->setValue(mgr.getChl() + 1); StringArray inputs = MidiInput::getDevices(); int idx = inputs.indexOf(mgr.getInput()); idx = idx == -1 ? 0 : idx + 1; sysexIn->setSelectedItemIndex(idx); StringArray outputs = MidiOutput::getDevices(); idx = outputs.indexOf(mgr.getOutput()); idx = idx == -1 ? 0 : idx + 1; sysexOut->setSelectedItemIndex(idx); engineReso->setSelectedItemIndex(reso); showKeyboard->setToggleState(showKey, false); } bool ParamDialog::getDialogValues(Controllers &c, SysexComm &mgr, int *reso, bool *showKey) { bool ret = true; c.values_[kControllerPitchRange] = pitchRange->getValue(); c.values_[kControllerPitchStep] = pitchStep->getValue(); ret &= mgr.setInput(sysexIn->getItemText(sysexIn->getSelectedItemIndex())); ret &= mgr.setOutput(sysexOut->getItemText(sysexOut->getSelectedItemIndex())); mgr.setChl(sysexChl->getValue() - 1); *reso = engineReso->getSelectedItemIndex(); *showKey = showKeyboard->getToggleState(); return ret; } //[/MiscUserCode] //============================================================================== #if 0 /* -- Introjucer information section -- This is where the Introjucer stores the metadata that describe this GUI layout, so make changes in here at your peril! BEGIN_JUCER_METADATA END_JUCER_METADATA */ #endif //[EndFile] You can add extra defines here... //[/EndFile]