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 "TouchkeyPitchBendMappingShortEditor.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 TouchkeyPitchBendMappingShortEditor::TouchkeyPitchBendMappingShortEditor (TouchkeyPitchBendMappingFactory& 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 "Endpoints:"));
|
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 (endpointsComboBox = new ComboBox ("control combo box"));
|
andrewm@0
|
77 endpointsComboBox->setEditableText (false);
|
andrewm@0
|
78 endpointsComboBox->setJustificationType (Justification::centredLeft);
|
andrewm@0
|
79 endpointsComboBox->setTextWhenNothingSelected (String::empty);
|
andrewm@0
|
80 endpointsComboBox->setTextWhenNoChoicesAvailable ("(no choices)");
|
andrewm@0
|
81 endpointsComboBox->addListener (this);
|
andrewm@0
|
82
|
andrewm@0
|
83
|
andrewm@0
|
84 //[UserPreSize]
|
andrewm@0
|
85 endpointsComboBox->addItem("Variable", TouchkeyPitchBendMapping::kPitchBendModeVariableEndpoints);
|
andrewm@0
|
86 endpointsComboBox->addItem("Fixed", TouchkeyPitchBendMapping::kPitchBendModeFixedEndpoints);
|
andrewm@0
|
87 //[/UserPreSize]
|
andrewm@0
|
88
|
andrewm@0
|
89 setSize (328, 71);
|
andrewm@0
|
90
|
andrewm@0
|
91
|
andrewm@0
|
92 //[Constructor] You can add your own custom stuff here..
|
andrewm@0
|
93 rangeEditor->addListener(this);
|
andrewm@0
|
94 thresholdEditor->addListener(this);
|
andrewm@0
|
95 //[/Constructor]
|
andrewm@0
|
96 }
|
andrewm@0
|
97
|
andrewm@0
|
98 TouchkeyPitchBendMappingShortEditor::~TouchkeyPitchBendMappingShortEditor()
|
andrewm@0
|
99 {
|
andrewm@0
|
100 //[Destructor_pre]. You can add your own custom destruction code here..
|
andrewm@0
|
101 //[/Destructor_pre]
|
andrewm@0
|
102
|
andrewm@0
|
103 rangeEditor = nullptr;
|
andrewm@0
|
104 rangeLabel = nullptr;
|
andrewm@0
|
105 thresholdEditor = nullptr;
|
andrewm@0
|
106 thresholdLabel = nullptr;
|
andrewm@0
|
107 controlLabel = nullptr;
|
andrewm@0
|
108 endpointsComboBox = nullptr;
|
andrewm@0
|
109
|
andrewm@0
|
110
|
andrewm@0
|
111 //[Destructor]. You can add your own custom destruction code here..
|
andrewm@0
|
112 //[/Destructor]
|
andrewm@0
|
113 }
|
andrewm@0
|
114
|
andrewm@0
|
115 //==============================================================================
|
andrewm@0
|
116 void TouchkeyPitchBendMappingShortEditor::paint (Graphics& g)
|
andrewm@0
|
117 {
|
andrewm@0
|
118 //[UserPrePaint] Add your own custom painting code here..
|
andrewm@0
|
119 //[/UserPrePaint]
|
andrewm@0
|
120
|
andrewm@0
|
121 g.fillAll (Colours::white);
|
andrewm@0
|
122
|
andrewm@0
|
123 //[UserPaint] Add your own custom painting code here..
|
andrewm@0
|
124 //[/UserPaint]
|
andrewm@0
|
125 }
|
andrewm@0
|
126
|
andrewm@0
|
127 void TouchkeyPitchBendMappingShortEditor::resized()
|
andrewm@0
|
128 {
|
andrewm@0
|
129 rangeEditor->setBounds (80, 8, 80, 24);
|
andrewm@0
|
130 rangeLabel->setBounds (8, 8, 56, 24);
|
andrewm@0
|
131 thresholdEditor->setBounds (240, 8, 80, 24);
|
andrewm@0
|
132 thresholdLabel->setBounds (168, 8, 72, 24);
|
andrewm@0
|
133 controlLabel->setBounds (8, 40, 72, 24);
|
andrewm@0
|
134 endpointsComboBox->setBounds (80, 40, 80, 24);
|
andrewm@0
|
135 //[UserResized] Add your own custom resize handling here..
|
andrewm@0
|
136 //[/UserResized]
|
andrewm@0
|
137 }
|
andrewm@0
|
138
|
andrewm@0
|
139 void TouchkeyPitchBendMappingShortEditor::comboBoxChanged (ComboBox* comboBoxThatHasChanged)
|
andrewm@0
|
140 {
|
andrewm@0
|
141 //[UsercomboBoxChanged_Pre]
|
andrewm@0
|
142 //[/UsercomboBoxChanged_Pre]
|
andrewm@0
|
143
|
andrewm@0
|
144 if (comboBoxThatHasChanged == endpointsComboBox)
|
andrewm@0
|
145 {
|
andrewm@0
|
146 //[UserComboBoxCode_endpointsComboBox] -- add your combo box handling code here..
|
andrewm@0
|
147 int control = endpointsComboBox->getSelectedId();
|
andrewm@0
|
148 if(control == TouchkeyPitchBendMapping::kPitchBendModeVariableEndpoints)
|
andrewm@0
|
149 factory_.setBendVariableEndpoints();
|
andrewm@0
|
150 else if(control == TouchkeyPitchBendMapping::kPitchBendModeFixedEndpoints)
|
andrewm@0
|
151 factory_.setBendFixedEndpoints(factory_.getBendThresholdKeyLength(), 0);
|
andrewm@0
|
152 //[/UserComboBoxCode_endpointsComboBox]
|
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 TouchkeyPitchBendMappingShortEditor::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_.setBendRange(range);
|
andrewm@0
|
168 }
|
andrewm@0
|
169 else if(&editor == thresholdEditor) {
|
andrewm@0
|
170 float threshold = atof(thresholdEditor->getText().toUTF8());
|
andrewm@0
|
171 factory_.setBendThresholdKeyLength(threshold);
|
andrewm@0
|
172 }
|
andrewm@0
|
173 }
|
andrewm@0
|
174
|
andrewm@0
|
175 void TouchkeyPitchBendMappingShortEditor::textEditorEscapeKeyPressed(TextEditor &editor)
|
andrewm@0
|
176 {
|
andrewm@0
|
177
|
andrewm@0
|
178 }
|
andrewm@0
|
179
|
andrewm@0
|
180 void TouchkeyPitchBendMappingShortEditor::textEditorFocusLost(TextEditor &editor)
|
andrewm@0
|
181 {
|
andrewm@0
|
182 textEditorReturnKeyPressed(editor);
|
andrewm@0
|
183 }
|
andrewm@0
|
184
|
andrewm@0
|
185 void TouchkeyPitchBendMappingShortEditor::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_.getBendRange();
|
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_.getBendThresholdKeyLength();
|
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 endpointsComboBox->setSelectedId(factory_.getBendMode(), 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="TouchkeyPitchBendMappingShortEditor"
|
andrewm@0
|
227 componentName="" parentClasses="public MappingEditorComponent, public TextEditor::Listener"
|
andrewm@0
|
228 constructorParams="TouchkeyPitchBendMappingFactory& 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="80 8 80 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="240 8 80 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="168 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 72 24" edTextCol="ff000000"
|
andrewm@0
|
253 edBkgCol="0" labelText="Endpoints:" 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="endpointsComboBox"
|
andrewm@0
|
257 virtualName="" explicitFocusOrder="0" pos="80 40 80 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]
|