annotate Source/Mappings/Control/TouchkeyControlMappingShortEditor.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 "TouchkeyControlMappingShortEditor.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 TouchkeyControlMappingShortEditor::TouchkeyControlMappingShortEditor (TouchkeyControlMappingFactory& factory)
andrewm@0 32 : factory_(factory)
andrewm@0 33 {
andrewm@0 34 addAndMakeVisible (inputRangeLowEditor = new TextEditor ("range low text editor"));
andrewm@0 35 inputRangeLowEditor->setMultiLine (false);
andrewm@0 36 inputRangeLowEditor->setReturnKeyStartsNewLine (false);
andrewm@0 37 inputRangeLowEditor->setReadOnly (false);
andrewm@0 38 inputRangeLowEditor->setScrollbarsShown (true);
andrewm@0 39 inputRangeLowEditor->setCaretVisible (true);
andrewm@0 40 inputRangeLowEditor->setPopupMenuEnabled (true);
andrewm@0 41 inputRangeLowEditor->setText (String::empty);
andrewm@0 42
andrewm@0 43 addAndMakeVisible (rangeLabel = new Label ("range label",
andrewm@0 44 "Input 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 (controlLabel = new Label ("control label",
andrewm@0 52 "Control:"));
andrewm@0 53 controlLabel->setFont (Font (15.00f, Font::plain));
andrewm@0 54 controlLabel->setJustificationType (Justification::centredLeft);
andrewm@0 55 controlLabel->setEditable (false, false, false);
andrewm@0 56 controlLabel->setColour (TextEditor::textColourId, Colours::black);
andrewm@0 57 controlLabel->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
andrewm@0 58
andrewm@0 59 addAndMakeVisible (controlComboBox = new ComboBox ("control combo box"));
andrewm@0 60 controlComboBox->setEditableText (false);
andrewm@0 61 controlComboBox->setJustificationType (Justification::centredLeft);
andrewm@0 62 controlComboBox->setTextWhenNothingSelected (String::empty);
andrewm@0 63 controlComboBox->setTextWhenNoChoicesAvailable ("(no choices)");
andrewm@0 64 controlComboBox->addListener (this);
andrewm@0 65
andrewm@0 66 addAndMakeVisible (controlLabel2 = new Label ("control label",
andrewm@0 67 "Parameter:"));
andrewm@0 68 controlLabel2->setFont (Font (15.00f, Font::plain));
andrewm@0 69 controlLabel2->setJustificationType (Justification::centredLeft);
andrewm@0 70 controlLabel2->setEditable (false, false, false);
andrewm@0 71 controlLabel2->setColour (TextEditor::textColourId, Colours::black);
andrewm@0 72 controlLabel2->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
andrewm@0 73
andrewm@0 74 addAndMakeVisible (parameterComboBox = new ComboBox ("parameter combo box"));
andrewm@0 75 parameterComboBox->setEditableText (false);
andrewm@0 76 parameterComboBox->setJustificationType (Justification::centredLeft);
andrewm@0 77 parameterComboBox->setTextWhenNothingSelected (String::empty);
andrewm@0 78 parameterComboBox->setTextWhenNoChoicesAvailable ("(no choices)");
andrewm@0 79 parameterComboBox->addListener (this);
andrewm@0 80
andrewm@0 81 addAndMakeVisible (controlLabel3 = new Label ("control label",
andrewm@0 82 "Type:"));
andrewm@0 83 controlLabel3->setFont (Font (15.00f, Font::plain));
andrewm@0 84 controlLabel3->setJustificationType (Justification::centredLeft);
andrewm@0 85 controlLabel3->setEditable (false, false, false);
andrewm@0 86 controlLabel3->setColour (TextEditor::textColourId, Colours::black);
andrewm@0 87 controlLabel3->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
andrewm@0 88
andrewm@0 89 addAndMakeVisible (typeComboBox = new ComboBox ("type combo box"));
andrewm@0 90 typeComboBox->setEditableText (false);
andrewm@0 91 typeComboBox->setJustificationType (Justification::centredLeft);
andrewm@0 92 typeComboBox->setTextWhenNothingSelected (String::empty);
andrewm@0 93 typeComboBox->setTextWhenNoChoicesAvailable ("(no choices)");
andrewm@0 94 typeComboBox->addListener (this);
andrewm@0 95
andrewm@0 96 addAndMakeVisible (inputRangeHighEditor = new TextEditor ("range hi text editor"));
andrewm@0 97 inputRangeHighEditor->setMultiLine (false);
andrewm@0 98 inputRangeHighEditor->setReturnKeyStartsNewLine (false);
andrewm@0 99 inputRangeHighEditor->setReadOnly (false);
andrewm@0 100 inputRangeHighEditor->setScrollbarsShown (true);
andrewm@0 101 inputRangeHighEditor->setCaretVisible (true);
andrewm@0 102 inputRangeHighEditor->setPopupMenuEnabled (true);
andrewm@0 103 inputRangeHighEditor->setText (String::empty);
andrewm@0 104
andrewm@0 105 addAndMakeVisible (rangeLabel2 = new Label ("range label",
andrewm@0 106 "-"));
andrewm@0 107 rangeLabel2->setFont (Font (15.00f, Font::plain));
andrewm@0 108 rangeLabel2->setJustificationType (Justification::centredLeft);
andrewm@0 109 rangeLabel2->setEditable (false, false, false);
andrewm@0 110 rangeLabel2->setColour (TextEditor::textColourId, Colours::black);
andrewm@0 111 rangeLabel2->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
andrewm@0 112
andrewm@0 113
andrewm@0 114 //[UserPreSize]
andrewm@0 115 parameterComboBox->addItem("X Position", TouchkeyControlMapping::kInputParameterXPosition);
andrewm@0 116 parameterComboBox->addItem("Y Position", TouchkeyControlMapping::kInputParameterYPosition);
andrewm@0 117 parameterComboBox->addItem("Contact Area", TouchkeyControlMapping::kInputParameterTouchSize);
andrewm@0 118 parameterComboBox->addItem("2-Finger Mean", TouchkeyControlMapping::kInputParameter2FingerMean);
andrewm@0 119 parameterComboBox->addItem("2-Finger Distance", TouchkeyControlMapping::kInputParameter2FingerDistance);
andrewm@0 120
andrewm@0 121 typeComboBox->addItem("Absolute", TouchkeyControlMapping::kTypeAbsolute);
andrewm@0 122 typeComboBox->addItem("1st Touch Relative", TouchkeyControlMapping::kTypeFirstTouchRelative);
andrewm@0 123 typeComboBox->addItem("Note Onset Relative", TouchkeyControlMapping::kTypeNoteOnsetRelative);
andrewm@0 124
andrewm@32 125 controlComboBox->addItem("Pitch Wheel", MidiKeyboardSegment::kControlPitchWheel);
andrewm@32 126 controlComboBox->addItem("Channel Pressure", MidiKeyboardSegment::kControlChannelAftertouch);
andrewm@32 127 controlComboBox->addItem("Poly Aftertouch", MidiKeyboardSegment::kControlPolyphonicAftertouch);
andrewm@0 128 for(int i = 1; i <= 119; i++) {
andrewm@0 129 controlComboBox->addItem(String(i), i);
andrewm@0 130 }
andrewm@0 131 //[/UserPreSize]
andrewm@0 132
andrewm@0 133 setSize (328, 71);
andrewm@0 134
andrewm@0 135
andrewm@0 136 //[Constructor] You can add your own custom stuff here..
andrewm@0 137 inputRangeLowEditor->addListener(this);
andrewm@0 138 inputRangeHighEditor->addListener(this);
andrewm@0 139 //[/Constructor]
andrewm@0 140 }
andrewm@0 141
andrewm@0 142 TouchkeyControlMappingShortEditor::~TouchkeyControlMappingShortEditor()
andrewm@0 143 {
andrewm@0 144 //[Destructor_pre]. You can add your own custom destruction code here..
andrewm@0 145 //[/Destructor_pre]
andrewm@0 146
andrewm@0 147 inputRangeLowEditor = nullptr;
andrewm@0 148 rangeLabel = nullptr;
andrewm@0 149 controlLabel = nullptr;
andrewm@0 150 controlComboBox = nullptr;
andrewm@0 151 controlLabel2 = nullptr;
andrewm@0 152 parameterComboBox = nullptr;
andrewm@0 153 controlLabel3 = nullptr;
andrewm@0 154 typeComboBox = nullptr;
andrewm@0 155 inputRangeHighEditor = nullptr;
andrewm@0 156 rangeLabel2 = nullptr;
andrewm@0 157
andrewm@0 158
andrewm@0 159 //[Destructor]. You can add your own custom destruction code here..
andrewm@0 160 //[/Destructor]
andrewm@0 161 }
andrewm@0 162
andrewm@0 163 //==============================================================================
andrewm@0 164 void TouchkeyControlMappingShortEditor::paint (Graphics& g)
andrewm@0 165 {
andrewm@0 166 //[UserPrePaint] Add your own custom painting code here..
andrewm@0 167 //[/UserPrePaint]
andrewm@0 168
andrewm@0 169 g.fillAll (Colours::white);
andrewm@0 170
andrewm@0 171 //[UserPaint] Add your own custom painting code here..
andrewm@0 172 //[/UserPaint]
andrewm@0 173 }
andrewm@0 174
andrewm@0 175 void TouchkeyControlMappingShortEditor::resized()
andrewm@0 176 {
andrewm@0 177 inputRangeLowEditor->setBounds (80, 40, 40, 24);
andrewm@0 178 rangeLabel->setBounds (0, 40, 80, 24);
andrewm@0 179 controlLabel->setBounds (176, 8, 56, 24);
andrewm@0 180 controlComboBox->setBounds (232, 8, 88, 24);
andrewm@0 181 controlLabel2->setBounds (0, 8, 72, 24);
andrewm@0 182 parameterComboBox->setBounds (72, 8, 104, 24);
andrewm@0 183 controlLabel3->setBounds (184, 40, 56, 24);
andrewm@0 184 typeComboBox->setBounds (232, 40, 88, 24);
andrewm@0 185 inputRangeHighEditor->setBounds (136, 40, 40, 24);
andrewm@0 186 rangeLabel2->setBounds (120, 40, 16, 24);
andrewm@0 187 //[UserResized] Add your own custom resize handling here..
andrewm@0 188 //[/UserResized]
andrewm@0 189 }
andrewm@0 190
andrewm@0 191 void TouchkeyControlMappingShortEditor::comboBoxChanged (ComboBox* comboBoxThatHasChanged)
andrewm@0 192 {
andrewm@0 193 //[UsercomboBoxChanged_Pre]
andrewm@0 194 //[/UsercomboBoxChanged_Pre]
andrewm@0 195
andrewm@0 196 if (comboBoxThatHasChanged == controlComboBox)
andrewm@0 197 {
andrewm@0 198 //[UserComboBoxCode_controlComboBox] -- add your combo box handling code here..
andrewm@0 199 int controller = controlComboBox->getSelectedId();
andrewm@0 200 factory_.setController(controller);
andrewm@0 201 //[/UserComboBoxCode_controlComboBox]
andrewm@0 202 }
andrewm@0 203 else if (comboBoxThatHasChanged == parameterComboBox)
andrewm@0 204 {
andrewm@0 205 //[UserComboBoxCode_parameterComboBox] -- add your combo box handling code here..
andrewm@0 206 int param = parameterComboBox->getSelectedId();
andrewm@0 207 factory_.setInputParameter(param);
andrewm@0 208 //[/UserComboBoxCode_parameterComboBox]
andrewm@0 209 }
andrewm@0 210 else if (comboBoxThatHasChanged == typeComboBox)
andrewm@0 211 {
andrewm@0 212 //[UserComboBoxCode_typeComboBox] -- add your combo box handling code here..
andrewm@0 213 int type = typeComboBox->getSelectedId();
andrewm@0 214 factory_.setInputType(type);
andrewm@0 215 //[/UserComboBoxCode_typeComboBox]
andrewm@0 216 }
andrewm@0 217
andrewm@0 218 //[UsercomboBoxChanged_Post]
andrewm@0 219 //[/UsercomboBoxChanged_Post]
andrewm@0 220 }
andrewm@0 221
andrewm@0 222
andrewm@0 223
andrewm@0 224 //[MiscUserCode] You can add your own definitions of your custom methods or any other code here...
andrewm@0 225
andrewm@0 226 void TouchkeyControlMappingShortEditor::textEditorReturnKeyPressed(TextEditor &editor)
andrewm@0 227 {
andrewm@0 228 if(&editor == inputRangeLowEditor) {
andrewm@0 229 float range = atof(inputRangeLowEditor->getText().toUTF8());
andrewm@0 230 factory_.setRangeInputMin(range);
andrewm@0 231 factory_.setRangeInputCenter(range);
andrewm@0 232 }
andrewm@0 233 else if(&editor == inputRangeHighEditor) {
andrewm@0 234 float range = atof(inputRangeHighEditor->getText().toUTF8());
andrewm@0 235 factory_.setRangeInputMax(range);
andrewm@0 236 }
andrewm@0 237 }
andrewm@0 238
andrewm@0 239 void TouchkeyControlMappingShortEditor::textEditorEscapeKeyPressed(TextEditor &editor)
andrewm@0 240 {
andrewm@0 241
andrewm@0 242 }
andrewm@0 243
andrewm@0 244 void TouchkeyControlMappingShortEditor::textEditorFocusLost(TextEditor &editor)
andrewm@0 245 {
andrewm@0 246 textEditorReturnKeyPressed(editor);
andrewm@0 247 }
andrewm@0 248
andrewm@0 249 void TouchkeyControlMappingShortEditor::synchronize()
andrewm@0 250 {
andrewm@0 251 // Update the editors to reflect the current status
andrewm@0 252 if(!inputRangeLowEditor->hasKeyboardFocus(true)) {
andrewm@0 253 float value = factory_.getRangeInputMin();
andrewm@0 254 char st[16];
andrewm@20 255 #ifdef _MSC_VER
andrewm@20 256 _snprintf_s(st, 16, _TRUNCATE, "%.2f", value);
andrewm@20 257 #else
andrewm@0 258 snprintf(st, 16, "%.2f", value);
andrewm@20 259 #endif
andrewm@0 260 inputRangeLowEditor->setText(st);
andrewm@0 261 }
andrewm@0 262
andrewm@0 263 if(!inputRangeHighEditor->hasKeyboardFocus(true)) {
andrewm@0 264 float value = factory_.getRangeInputMax();
andrewm@0 265 char st[16];
andrewm@20 266 #ifdef _MSC_VER
andrewm@20 267 _snprintf_s(st, 16, _TRUNCATE, "%.2f", value);
andrewm@20 268 #else
andrewm@0 269 snprintf(st, 16, "%.2f", value);
andrewm@20 270 #endif
andrewm@0 271
andrewm@0 272 inputRangeHighEditor->setText(st);
andrewm@0 273 }
andrewm@0 274
andrewm@0 275 parameterComboBox->setSelectedId(factory_.getInputParameter(), dontSendNotification);
andrewm@0 276 typeComboBox->setSelectedId(factory_.getInputType(), dontSendNotification);
andrewm@0 277 controlComboBox->setSelectedId(factory_.getController(), dontSendNotification);
andrewm@0 278 }
andrewm@0 279 //[/MiscUserCode]
andrewm@0 280
andrewm@0 281
andrewm@0 282 //==============================================================================
andrewm@0 283 #if 0
andrewm@0 284 /* -- Introjucer information section --
andrewm@0 285
andrewm@0 286 This is where the Introjucer stores the metadata that describe this GUI layout, so
andrewm@0 287 make changes in here at your peril!
andrewm@0 288
andrewm@0 289 BEGIN_JUCER_METADATA
andrewm@0 290
andrewm@0 291 <JUCER_COMPONENT documentType="Component" className="TouchkeyControlMappingShortEditor"
andrewm@0 292 componentName="" parentClasses="public MappingEditorComponent, public TextEditor::Listener"
andrewm@0 293 constructorParams="TouchkeyControlMappingFactory&amp; factory"
andrewm@0 294 variableInitialisers="factory_(factory)" snapPixels="8" snapActive="1"
andrewm@0 295 snapShown="1" overlayOpacity="0.330000013" fixedSize="1" initialWidth="328"
andrewm@0 296 initialHeight="71">
andrewm@0 297 <BACKGROUND backgroundColour="ffffffff"/>
andrewm@0 298 <TEXTEDITOR name="range low text editor" id="db0f62c03a58af03" memberName="inputRangeLowEditor"
andrewm@0 299 virtualName="" explicitFocusOrder="0" pos="80 40 40 24" initialText=""
andrewm@0 300 multiline="0" retKeyStartsLine="0" readonly="0" scrollbars="1"
andrewm@0 301 caret="1" popupmenu="1"/>
andrewm@0 302 <LABEL name="range label" id="1ca2d422f4c37b7f" memberName="rangeLabel"
andrewm@0 303 virtualName="" explicitFocusOrder="0" pos="0 40 80 24" edTextCol="ff000000"
andrewm@0 304 edBkgCol="0" labelText="Input Range:" editableSingleClick="0"
andrewm@0 305 editableDoubleClick="0" focusDiscardsChanges="0" fontname="Default font"
andrewm@0 306 fontsize="15" bold="0" italic="0" justification="33"/>
andrewm@0 307 <LABEL name="control label" id="f953b12999632418" memberName="controlLabel"
andrewm@0 308 virtualName="" explicitFocusOrder="0" pos="176 8 56 24" edTextCol="ff000000"
andrewm@0 309 edBkgCol="0" labelText="Control:" editableSingleClick="0" editableDoubleClick="0"
andrewm@0 310 focusDiscardsChanges="0" fontname="Default font" fontsize="15"
andrewm@0 311 bold="0" italic="0" justification="33"/>
andrewm@0 312 <COMBOBOX name="control combo box" id="f1c84bb5fd2730fb" memberName="controlComboBox"
andrewm@0 313 virtualName="" explicitFocusOrder="0" pos="232 8 88 24" editable="0"
andrewm@0 314 layout="33" items="" textWhenNonSelected="" textWhenNoItems="(no choices)"/>
andrewm@0 315 <LABEL name="control label" id="5ef7c1b78fdcf616" memberName="controlLabel2"
andrewm@0 316 virtualName="" explicitFocusOrder="0" pos="0 8 72 24" edTextCol="ff000000"
andrewm@0 317 edBkgCol="0" labelText="Parameter:" editableSingleClick="0" editableDoubleClick="0"
andrewm@0 318 focusDiscardsChanges="0" fontname="Default font" fontsize="15"
andrewm@0 319 bold="0" italic="0" justification="33"/>
andrewm@0 320 <COMBOBOX name="parameter combo box" id="f12f6f6e31042be1" memberName="parameterComboBox"
andrewm@0 321 virtualName="" explicitFocusOrder="0" pos="72 8 104 24" editable="0"
andrewm@0 322 layout="33" items="" textWhenNonSelected="" textWhenNoItems="(no choices)"/>
andrewm@0 323 <LABEL name="control label" id="9ded92e82db31777" memberName="controlLabel3"
andrewm@0 324 virtualName="" explicitFocusOrder="0" pos="184 40 56 24" edTextCol="ff000000"
andrewm@0 325 edBkgCol="0" labelText="Type:" editableSingleClick="0" editableDoubleClick="0"
andrewm@0 326 focusDiscardsChanges="0" fontname="Default font" fontsize="15"
andrewm@0 327 bold="0" italic="0" justification="33"/>
andrewm@0 328 <COMBOBOX name="type combo box" id="82d38054016f6c4f" memberName="typeComboBox"
andrewm@0 329 virtualName="" explicitFocusOrder="0" pos="232 40 88 24" editable="0"
andrewm@0 330 layout="33" items="" textWhenNonSelected="" textWhenNoItems="(no choices)"/>
andrewm@0 331 <TEXTEDITOR name="range hi text editor" id="c34ac3e87db289d1" memberName="inputRangeHighEditor"
andrewm@0 332 virtualName="" explicitFocusOrder="0" pos="136 40 40 24" initialText=""
andrewm@0 333 multiline="0" retKeyStartsLine="0" readonly="0" scrollbars="1"
andrewm@0 334 caret="1" popupmenu="1"/>
andrewm@0 335 <LABEL name="range label" id="19e0ad80306cc4c0" memberName="rangeLabel2"
andrewm@0 336 virtualName="" explicitFocusOrder="0" pos="120 40 16 24" edTextCol="ff000000"
andrewm@0 337 edBkgCol="0" labelText="-" editableSingleClick="0" editableDoubleClick="0"
andrewm@0 338 focusDiscardsChanges="0" fontname="Default font" fontsize="15"
andrewm@0 339 bold="0" italic="0" justification="33"/>
andrewm@0 340 </JUCER_COMPONENT>
andrewm@0 341
andrewm@0 342 END_JUCER_METADATA
andrewm@0 343 */
andrewm@0 344 #endif
andrewm@0 345
andrewm@0 346
andrewm@0 347 //[EndFile] You can add extra defines here...
andrewm@50 348 #endif // TOUCHKEYS_NO_GUI
andrewm@0 349 //[/EndFile]