| @@ -610,35 +610,33 @@ void MIDICCToCVInterface::processMidi(std::vector<unsigned char> msg) { | |||||
| struct CCTextField : TextField { | struct CCTextField : TextField { | ||||
| void draw(NVGcontext *vg); | |||||
| void onTextChange(); | |||||
| int *ccNum; | int *ccNum; | ||||
| bool *inited; | bool *inited; | ||||
| }; | }; | ||||
| void CCTextField::draw(NVGcontext *vg) { | |||||
| // Note: this might not be the best way to do this. | |||||
| // Text field should have a virtual "onTextChange" function or something. | |||||
| // draw() is triggered way more frequently | |||||
| void CCTextField::onTextChange() { | |||||
| if (text.size() > 0) { | if (text.size() > 0) { | ||||
| if (*inited) { | if (*inited) { | ||||
| *inited = false; | *inited = false; | ||||
| text = std::to_string(*ccNum); | text = std::to_string(*ccNum); | ||||
| } | } | ||||
| try { | try { | ||||
| *ccNum = std::stoi(text); | *ccNum = std::stoi(text); | ||||
| // Only allow valid cc numbers | // Only allow valid cc numbers | ||||
| if (*ccNum < 0 || *ccNum > 127 || text.size() > 3) { | if (*ccNum < 0 || *ccNum > 127 || text.size() > 3) { | ||||
| text = ""; | text = ""; | ||||
| begin = end = 0; | begin = end = 0; | ||||
| *ccNum = -1; | |||||
| } | } | ||||
| } catch (...) { | } catch (...) { | ||||
| text = ""; | text = ""; | ||||
| begin = end = 0; | begin = end = 0; | ||||
| *ccNum = -1; | |||||
| } | } | ||||
| }; | }; | ||||
| TextField::draw(vg); | |||||
| } | } | ||||
| MIDICCToCVWidget::MIDICCToCVWidget() { | MIDICCToCVWidget::MIDICCToCVWidget() { | ||||