annotate Source/Mappings/Vibrato/TouchkeyVibratoMappingShortEditor.cpp @ 56:b4a2d2ae43cf tip

merge
author Andrew McPherson <andrewm@eecs.qmul.ac.uk>
date Fri, 23 Nov 2018 15:48:14 +0000
parents 114427cb39f0
children
rev   line source
andrewm@0 1 /*
andrewm@0 2 ==============================================================================
andrewm@0 3
andrewm@0 4 This is an automatically generated GUI class created by the Introjucer!
andrewm@0 5
andrewm@0 6 Be careful when adding custom code to these files, as only the code within
andrewm@0 7 the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded
andrewm@0 8 and re-saved.
andrewm@0 9
andrewm@0 10 Created with Introjucer version: 3.1.0
andrewm@0 11
andrewm@0 12 ------------------------------------------------------------------------------
andrewm@0 13
andrewm@0 14 The Introjucer is part of the JUCE library - "Jules' Utility Class Extensions"
andrewm@0 15 Copyright 2004-13 by Raw Material Software Ltd.
andrewm@0 16
andrewm@0 17 ==============================================================================
andrewm@0 18 */
andrewm@0 19
andrewm@0 20 //[Headers] You can add your own extra header files here...
andrewm@50 21 #ifndef TOUCHKEYS_NO_GUI
andrewm@0 22 //[/Headers]
andrewm@0 23
andrewm@0 24 #include "TouchkeyVibratoMappingShortEditor.h"
andrewm@0 25
andrewm@0 26
andrewm@0 27 //[MiscUserDefs] You can add your own user definitions and misc code here...
andrewm@0 28 //[/MiscUserDefs]
andrewm@0 29
andrewm@0 30 //==============================================================================
andrewm@0 31 TouchkeyVibratoMappingShortEditor::TouchkeyVibratoMappingShortEditor (TouchkeyVibratoMappingFactory& factory)
andrewm@0 32 : factory_(factory)
andrewm@0 33 {
andrewm@0 34 addAndMakeVisible (rangeEditor = new TextEditor ("range text editor"));
andrewm@0 35 rangeEditor->setMultiLine (false);
andrewm@0 36 rangeEditor->setReturnKeyStartsNewLine (false);
andrewm@0 37 rangeEditor->setReadOnly (false);
andrewm@0 38 rangeEditor->setScrollbarsShown (true);
andrewm@0 39 rangeEditor->setCaretVisible (true);
andrewm@0 40 rangeEditor->setPopupMenuEnabled (true);
andrewm@0 41 rangeEditor->setText (String::empty);
andrewm@0 42
andrewm@0 43 addAndMakeVisible (rangeLabel = new Label ("range label",
andrewm@0 44 "Range:"));
andrewm@0 45 rangeLabel->setFont (Font (15.00f, Font::plain));
andrewm@0 46 rangeLabel->setJustificationType (Justification::centredLeft);
andrewm@0 47 rangeLabel->setEditable (false, false, false);
andrewm@0 48 rangeLabel->setColour (TextEditor::textColourId, Colours::black);
andrewm@0 49 rangeLabel->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
andrewm@0 50
andrewm@0 51 addAndMakeVisible (thresholdEditor = new TextEditor ("threshold text editor"));
andrewm@0 52 thresholdEditor->setMultiLine (false);
andrewm@0 53 thresholdEditor->setReturnKeyStartsNewLine (false);
andrewm@0 54 thresholdEditor->setReadOnly (false);
andrewm@0 55 thresholdEditor->setScrollbarsShown (true);
andrewm@0 56 thresholdEditor->setCaretVisible (true);
andrewm@0 57 thresholdEditor->setPopupMenuEnabled (true);
andrewm@0 58 thresholdEditor->setText (String::empty);
andrewm@0 59
andrewm@0 60 addAndMakeVisible (thresholdLabel = new Label ("threshold label",
andrewm@0 61 "Threshold:"));
andrewm@0 62 thresholdLabel->setFont (Font (15.00f, Font::plain));
andrewm@0 63 thresholdLabel->setJustificationType (Justification::centredLeft);
andrewm@0 64 thresholdLabel->setEditable (false, false, false);
andrewm@0 65 thresholdLabel->setColour (TextEditor::textColourId, Colours::black);
andrewm@0 66 thresholdLabel->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
andrewm@0 67
andrewm@0 68 addAndMakeVisible (controlLabel = new Label ("control label",
andrewm@0 69 "Control:"));
andrewm@0 70 controlLabel->setFont (Font (15.00f, Font::plain));
andrewm@0 71 controlLabel->setJustificationType (Justification::centredLeft);
andrewm@0 72 controlLabel->setEditable (false, false, false);
andrewm@0 73 controlLabel->setColour (TextEditor::textColourId, Colours::black);
andrewm@0 74 controlLabel->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
andrewm@0 75
andrewm@0 76 addAndMakeVisible (controlComboBox = new ComboBox ("control combo box"));
andrewm@0 77 controlComboBox->setEditableText (false);
andrewm@0 78 controlComboBox->setJustificationType (Justification::centredLeft);
andrewm@0 79 controlComboBox->setTextWhenNothingSelected (String::empty);
andrewm@0 80 controlComboBox->setTextWhenNoChoicesAvailable ("(no choices)");
andrewm@0 81 controlComboBox->addListener (this);
andrewm@0 82
andrewm@0 83
andrewm@0 84 //[UserPreSize]
andrewm@0 85 // Populate controllers field
andrewm@0 86 controlComboBox->addItem("Pitch Wheel", MidiKeyboardSegment::kControlPitchWheel);
andrewm@0 87 for(int i = 1; i <= 120; i++) {
andrewm@0 88 controlComboBox->addItem(String(i), i);
andrewm@0 89 }
andrewm@0 90 //[/UserPreSize]
andrewm@0 91
andrewm@0 92 setSize (328, 71);
andrewm@0 93
andrewm@0 94
andrewm@0 95 //[Constructor] You can add your own custom stuff here..
andrewm@0 96 rangeEditor->addListener(this);
andrewm@0 97 thresholdEditor->addListener(this);
andrewm@0 98 //[/Constructor]
andrewm@0 99 }
andrewm@0 100
andrewm@0 101 TouchkeyVibratoMappingShortEditor::~TouchkeyVibratoMappingShortEditor()
andrewm@0 102 {
andrewm@0 103 //[Destructor_pre]. You can add your own custom destruction code here..
andrewm@0 104 //[/Destructor_pre]
andrewm@0 105
andrewm@0 106 rangeEditor = nullptr;
andrewm@0 107 rangeLabel = nullptr;
andrewm@0 108 thresholdEditor = nullptr;
andrewm@0 109 thresholdLabel = nullptr;
andrewm@0 110 controlLabel = nullptr;
andrewm@0 111 controlComboBox = nullptr;
andrewm@0 112
andrewm@0 113
andrewm@0 114 //[Destructor]. You can add your own custom destruction code here..
andrewm@0 115 //[/Destructor]
andrewm@0 116 }
andrewm@0 117
andrewm@0 118 //==============================================================================
andrewm@0 119 void TouchkeyVibratoMappingShortEditor::paint (Graphics& g)
andrewm@0 120 {
andrewm@0 121 //[UserPrePaint] Add your own custom painting code here..
andrewm@0 122 //[/UserPrePaint]
andrewm@0 123
andrewm@0 124 g.fillAll (Colours::white);
andrewm@0 125
andrewm@0 126 //[UserPaint] Add your own custom painting code here..
andrewm@0 127 //[/UserPaint]
andrewm@0 128 }
andrewm@0 129
andrewm@0 130 void TouchkeyVibratoMappingShortEditor::resized()
andrewm@0 131 {
andrewm@0 132 rangeEditor->setBounds (64, 8, 88, 24);
andrewm@0 133 rangeLabel->setBounds (8, 8, 56, 24);
andrewm@0 134 thresholdEditor->setBounds (232, 8, 88, 24);
andrewm@0 135 thresholdLabel->setBounds (160, 8, 72, 24);
andrewm@0 136 controlLabel->setBounds (8, 40, 56, 24);
andrewm@0 137 controlComboBox->setBounds (64, 40, 88, 24);
andrewm@0 138 //[UserResized] Add your own custom resize handling here..
andrewm@0 139 //[/UserResized]
andrewm@0 140 }
andrewm@0 141
andrewm@0 142 void TouchkeyVibratoMappingShortEditor::comboBoxChanged (ComboBox* comboBoxThatHasChanged)
andrewm@0 143 {
andrewm@0 144 //[UsercomboBoxChanged_Pre]
andrewm@0 145 //[/UsercomboBoxChanged_Pre]
andrewm@0 146
andrewm@0 147 if (comboBoxThatHasChanged == controlComboBox)
andrewm@0 148 {
andrewm@0 149 //[UserComboBoxCode_controlComboBox] -- add your combo box handling code here..
andrewm@0 150 int control = controlComboBox->getSelectedId();
andrewm@0 151 factory_.setVibratoControl(control);
andrewm@0 152 //[/UserComboBoxCode_controlComboBox]
andrewm@0 153 }
andrewm@0 154
andrewm@0 155 //[UsercomboBoxChanged_Post]
andrewm@0 156 //[/UsercomboBoxChanged_Post]
andrewm@0 157 }
andrewm@0 158
andrewm@0 159
andrewm@0 160
andrewm@0 161 //[MiscUserCode] You can add your own definitions of your custom methods or any other code here...
andrewm@0 162
andrewm@0 163 void TouchkeyVibratoMappingShortEditor::textEditorReturnKeyPressed(TextEditor &editor)
andrewm@0 164 {
andrewm@0 165 if(&editor == rangeEditor) {
andrewm@0 166 float range = atof(rangeEditor->getText().toUTF8());
andrewm@0 167 factory_.setVibratoRange(range);
andrewm@0 168 }
andrewm@0 169 else if(&editor == thresholdEditor) {
andrewm@0 170 float threshold = atof(thresholdEditor->getText().toUTF8());
andrewm@0 171 factory_.setVibratoThreshold(threshold);
andrewm@0 172 }
andrewm@0 173 }
andrewm@0 174
andrewm@0 175 void TouchkeyVibratoMappingShortEditor::textEditorEscapeKeyPressed(TextEditor &editor)
andrewm@0 176 {
andrewm@0 177
andrewm@0 178 }
andrewm@0 179
andrewm@0 180 void TouchkeyVibratoMappingShortEditor::textEditorFocusLost(TextEditor &editor)
andrewm@0 181 {
andrewm@0 182 textEditorReturnKeyPressed(editor);
andrewm@0 183 }
andrewm@0 184
andrewm@0 185 void TouchkeyVibratoMappingShortEditor::synchronize()
andrewm@0 186 {
andrewm@0 187 // Update the editors to reflect the current status
andrewm@0 188 if(!rangeEditor->hasKeyboardFocus(true)) {
andrewm@0 189 float value = factory_.getVibratoRange();
andrewm@0 190 char st[16];
andrewm@20 191 #ifdef _MSC_VER
andrewm@20 192 _snprintf_s(st, 16, _TRUNCATE, "%.2f", value);
andrewm@20 193 #else
andrewm@0 194 snprintf(st, 16, "%.2f", value);
andrewm@20 195 #endif
andrewm@0 196
andrewm@0 197 rangeEditor->setText(st);
andrewm@0 198 }
andrewm@0 199
andrewm@0 200 if(!thresholdEditor->hasKeyboardFocus(true)) {
andrewm@0 201 float value = factory_.getVibratoThreshold();
andrewm@0 202 char st[16];
andrewm@20 203 #ifdef _MSC_VER
andrewm@20 204 _snprintf_s(st, 16, _TRUNCATE, "%.2f", value);
andrewm@20 205 #else
andrewm@0 206 snprintf(st, 16, "%.2f", value);
andrewm@20 207 #endif
andrewm@0 208
andrewm@0 209 thresholdEditor->setText(st);
andrewm@0 210 }
andrewm@0 211
andrewm@0 212 controlComboBox->setSelectedId(factory_.getVibratoControl(), dontSendNotification);
andrewm@0 213 }
andrewm@0 214 //[/MiscUserCode]
andrewm@0 215
andrewm@0 216
andrewm@0 217 //==============================================================================
andrewm@0 218 #if 0
andrewm@0 219 /* -- Introjucer information section --
andrewm@0 220
andrewm@0 221 This is where the Introjucer stores the metadata that describe this GUI layout, so
andrewm@0 222 make changes in here at your peril!
andrewm@0 223
andrewm@0 224 BEGIN_JUCER_METADATA
andrewm@0 225
andrewm@0 226 <JUCER_COMPONENT documentType="Component" className="TouchkeyVibratoMappingShortEditor"
andrewm@0 227 componentName="" parentClasses="public MappingEditorComponent, public TextEditor::Listener"
andrewm@0 228 constructorParams="TouchkeyVibratoMappingFactory&amp; factory"
andrewm@0 229 variableInitialisers="factory_(factory)" snapPixels="8" snapActive="1"
andrewm@0 230 snapShown="1" overlayOpacity="0.330000013" fixedSize="1" initialWidth="328"
andrewm@0 231 initialHeight="71">
andrewm@0 232 <BACKGROUND backgroundColour="ffffffff"/>
andrewm@0 233 <TEXTEDITOR name="range text editor" id="db0f62c03a58af03" memberName="rangeEditor"
andrewm@0 234 virtualName="" explicitFocusOrder="0" pos="64 8 88 24" initialText=""
andrewm@0 235 multiline="0" retKeyStartsLine="0" readonly="0" scrollbars="1"
andrewm@0 236 caret="1" popupmenu="1"/>
andrewm@0 237 <LABEL name="range label" id="1ca2d422f4c37b7f" memberName="rangeLabel"
andrewm@0 238 virtualName="" explicitFocusOrder="0" pos="8 8 56 24" edTextCol="ff000000"
andrewm@0 239 edBkgCol="0" labelText="Range:" editableSingleClick="0" editableDoubleClick="0"
andrewm@0 240 focusDiscardsChanges="0" fontname="Default font" fontsize="15"
andrewm@0 241 bold="0" italic="0" justification="33"/>
andrewm@0 242 <TEXTEDITOR name="threshold text editor" id="854a054d84eaf552" memberName="thresholdEditor"
andrewm@0 243 virtualName="" explicitFocusOrder="0" pos="232 8 88 24" initialText=""
andrewm@0 244 multiline="0" retKeyStartsLine="0" readonly="0" scrollbars="1"
andrewm@0 245 caret="1" popupmenu="1"/>
andrewm@0 246 <LABEL name="threshold label" id="864de4f55b5481ee" memberName="thresholdLabel"
andrewm@0 247 virtualName="" explicitFocusOrder="0" pos="160 8 72 24" edTextCol="ff000000"
andrewm@0 248 edBkgCol="0" labelText="Threshold:" editableSingleClick="0" editableDoubleClick="0"
andrewm@0 249 focusDiscardsChanges="0" fontname="Default font" fontsize="15"
andrewm@0 250 bold="0" italic="0" justification="33"/>
andrewm@0 251 <LABEL name="control label" id="f953b12999632418" memberName="controlLabel"
andrewm@0 252 virtualName="" explicitFocusOrder="0" pos="8 40 56 24" edTextCol="ff000000"
andrewm@0 253 edBkgCol="0" labelText="Control:" editableSingleClick="0" editableDoubleClick="0"
andrewm@0 254 focusDiscardsChanges="0" fontname="Default font" fontsize="15"
andrewm@0 255 bold="0" italic="0" justification="33"/>
andrewm@0 256 <COMBOBOX name="control combo box" id="f1c84bb5fd2730fb" memberName="controlComboBox"
andrewm@0 257 virtualName="" explicitFocusOrder="0" pos="64 40 88 24" editable="0"
andrewm@0 258 layout="33" items="" textWhenNonSelected="" textWhenNoItems="(no choices)"/>
andrewm@0 259 </JUCER_COMPONENT>
andrewm@0 260
andrewm@0 261 END_JUCER_METADATA
andrewm@0 262 */
andrewm@0 263 #endif
andrewm@0 264
andrewm@0 265
andrewm@0 266 //[EndFile] You can add extra defines here...
andrewm@50 267 #endif // TOUCHKEYS_NO_GUI
andrewm@0 268 //[/EndFile]