//------------------------------------------------------------------------ int32_t COptionMenu::onKeyDown (VstKeyCode& keyCode) { if (keyCode.modifier == 0 && keyCode.character == 0) { if (keyCode.virt == VKEY_RETURN) { CBaseObjectGuard guard (this); if (bgWhenClick) invalid (); popup (); if (bgWhenClick) invalid (); return 1; } if (!(style & (kMultipleCheckStyle & ~kCheckStyle))) { if (keyCode.virt == VKEY_UP) { int32_t value = (int32_t)getValue ()-1; if (value >= 0) { CMenuItem* entry = getEntry (value); while (entry && (entry->isSeparator () || entry->isTitle () || !entry->isEnabled () || entry->getSubmenu ())) entry = getEntry (--value); if (entry) { beginEdit (); setValue ((float)value); lastResult = (int32_t)getValue (); valueChanged (); endEdit (); invalid (); } } return 1; } if (keyCode.virt == VKEY_DOWN) { int32_t value = (int32_t)getValue ()+1; if (value < getNbEntries ()) { CMenuItem* entry = getEntry (value); while (entry && (entry->isSeparator () || entry->isTitle () || !entry->isEnabled () || entry->getSubmenu ())) entry = getEntry (++value); if (entry) { beginEdit (); setValue ((float)value); lastResult = (int32_t)getValue (); valueChanged (); endEdit (); invalid (); } } return 1; } } } return CParamDisplay::onKeyDown (keyCode); }
//------------------------------------------------------------------------ int32_t CTextButton::onKeyDown (VstKeyCode& keyCode) { if (keyCode.modifier == 0 && keyCode.virt == VKEY_RETURN) { if (style == kKickStyle) { if (value != getMax ()) { beginEdit (); value = getMax (); invalid (); valueChanged (); value = getMin (); invalid (); valueChanged (); endEdit (); } } else { beginEdit (); if (value == getMin ()) value = getMax (); else value = getMin (); invalid (); valueChanged (); endEdit (); } return 1; } return -1; }
//------------------------------------------------------------------------ bool CSlider::onWheel (const CPoint& where, const float &distance, const CButtonState &buttons) { if (!getMouseEnabled ()) return false; float _distance = distance; if (styleIsInverseStyle (style)) _distance *= -1.f; float normValue = getValueNormalized (); if (buttons & kZoomModifier) normValue += 0.1f * _distance * wheelInc; else normValue += _distance * wheelInc; setValueNormalized (normValue); if (isDirty ()) { invalid (); // begin of edit parameter beginEdit (); valueChanged (); // end of edit parameter endEdit (); } return true; }
void IPlugVST3::BeginInformHostOfParamChange(int idx) { if (GetParam(idx)->GetCanAutomate()) { beginEdit(idx); } }
//----------------------------------------------------------------------------- CMouseEventResult CSegmentButton::onMouseDown (CPoint& where, const CButtonState& buttons) { if (buttons.isLeftButton ()) { float newValue = 0; float valueOffset = 1.f / (segments.size () - 1); uint32_t currentIndex = getSegmentIndex (getValueNormalized ()); for (Segments::const_iterator it = segments.begin (), end = segments.end (); it != end; ++it, newValue += valueOffset) { if ((*it).rect.pointInside (where)) { uint32_t newIndex = getSegmentIndex (newValue); if (newIndex != currentIndex) { beginEdit (); setSelectedSegment (newIndex); valueChanged (); endEdit (); invalid (); } break; } } } return kMouseDownEventHandledButDontNeedMovedOrUpEvents; }
//------------------------------------------------------------------------ CMouseEventResult CSlider::onMouseDown (CPoint& where, const CButtonState& buttons) { if (!(buttons & kLButton)) return kMouseEventNotHandled; CRect handleRect; delta = calculateDelta (where, getMode () != kFreeClickMode ? &handleRect : 0); if (getMode () == kTouchMode && !handleRect.pointInside (where)) return kMouseEventNotHandled; oldVal = getMin () - 1; oldButton = buttons; if ((getMode () == kRelativeTouchMode && handleRect.pointInside (where)) || getMode () != kRelativeTouchMode) { if (checkDefaultValue (buttons)) { return kMouseDownEventHandledButDontNeedMovedOrUpEvents; } } startVal = getValue (); beginEdit (); mouseStartPoint = where; if (buttons & kZoomModifier) return kMouseEventHandled; return onMouseMoved (where, buttons); }
//------------------------------------------------------------------------ CMouseEventResult COnOffButton::onMouseDown (CPoint& where, const CButtonState& buttons) { if (!(buttons & kLButton)) return kMouseEventNotHandled; beginEdit (); return kMouseEventHandled; }
//------------------------------------------------------------------------ CMouseEventResult CTextKickButton::onMouseDown (CPoint& where, const long& buttons) { if (!(buttons & kLButton)) return kMouseEventNotHandled; fEntryState = value; beginEdit (); return onMouseMoved (where, buttons); }
//------------------------------------------------------------------------ CMouseEventResult CCheckBox::onMouseDown (CPoint& where, const CButtonState& buttons) { if (buttons.isLeftButton ()) { beginEdit (); previousValue = value; return onMouseMoved (where, buttons); } return kMouseDownEventHandledButDontNeedMovedOrUpEvents; }
//------------------------------------------------------------------------ void cSyncButton::mouse (CDrawContext *pContext, CPoint &where, long button) { if (!bMouseEnabled) return; if (button == -1) button = pContext->getMouseButtons (); if (!(button & kLButton)) return; if (listener && button & (kAlt | kShift | kControl | kApple)) { if (listener->controlModifierClicked (pContext, this, button) != 0) return; } if (button & (kAlt | kShift)) { value = floor(value * statesCount - 1.0f) / (float)statesCount; if (value < 0.0f) value = (float)(statesCount-1) / (float)statesCount ; } else { value = floor(value * statesCount + 1.0f) / (float)statesCount; if (value >= 1.0f) value = 0.f; } if (listener && style == kPostListenerUpdate) { beginEdit (); listener->valueChanged (pContext, this); endEdit (); } doIdleStuff (); if (listener && style == kPreListenerUpdate) { beginEdit (); listener->valueChanged (pContext, this); endEdit (); } }
//------------------------------------------------------------------------ int32_t CMovieButton::onKeyDown (VstKeyCode& keyCode) { if (keyCode.virt == VKEY_RETURN && keyCode.modifier == 0) { value = (value == getMax ()) ? getMin () : getMax (); invalid (); beginEdit (); valueChanged (); endEdit (); return 1; } return -1; }
//------------------------------------------------------------------------ void CTextEdit::updateText (IPlatformTextEdit* pte) { const char* newText = pte->getText (); if (strcmp (newText, getText ()) != 0) { beginEdit (); setText (newText); valueChanged (); endEdit (); } }
//----------------------------------------------------------------------------- int32_t CSegmentButton::onKeyDown (VstKeyCode& keyCode) { int32_t result = -1; if (keyCode.modifier == 0 && keyCode.character == 0) { uint32_t newIndex = getSegmentIndex (getValueNormalized ()); uint32_t oldIndex = newIndex; switch (keyCode.virt) { case VKEY_LEFT: { if (style == kHorizontal && newIndex > 0) newIndex--; result = 1; break; } case VKEY_RIGHT: { if (style == kHorizontal && newIndex < segments.size () - 1) newIndex++; result = 1; break; } case VKEY_UP: { if (style == kVertical && newIndex > 0) newIndex--; result = 1; break; } case VKEY_DOWN: { if (style == kVertical && newIndex < segments.size () - 1) newIndex++; result = 1; break; } } if (newIndex != oldIndex) { beginEdit (); setSelectedSegment (newIndex); valueChanged (); endEdit (); invalid (); } } return result; }
//------------------------------------------------------------------------ int32_t CKickButton::onKeyDown (VstKeyCode& keyCode) { if (keyCode.modifier == 0 && keyCode.virt == VKEY_RETURN) { if (value != getMax ()) { beginEdit (); value = getMax (); invalid (); valueChanged (); } return 1; } return -1; }
//---------------------------------------------------------------------------------------------------- CMouseEventResult UISearchTextField::onMouseDown (CPoint& where, const CButtonState& buttons) { if (buttons.isLeftButton ()) { if (!getText ().empty ()) { if (getClearMarkRect ().pointInside (where)) { beginEdit (); setText (""); valueChanged (); endEdit (); return kMouseDownEventHandledButDontNeedMovedOrUpEvents; } } } return CTextEdit::onMouseDown (where, buttons); }
//------------------------------------------------------------------------ CMouseEventResult CMyParamDisplay::onMouseDown (CPoint& where, const long& buttons) { if (!(buttons & kLButton)) return kMouseEventNotHandled; mInitialPos = where; mInitialValue = value; beginEdit (); if (checkDefaultValue (buttons)) { endEdit (); return kMouseDownEventHandledButDontNeedMovedOrUpEvents; } if (buttons & kShift) return kMouseEventHandled; return onMouseMoved (where, buttons); }
//------------------------------------------------------------------------ int32_t CSlider::onKeyDown (VstKeyCode& keyCode) { switch (keyCode.virt) { case VKEY_UP : case VKEY_RIGHT : case VKEY_DOWN : case VKEY_LEFT : { float distance = 1.f; bool isInverse = styleIsInverseStyle (style); if ((keyCode.virt == VKEY_DOWN && !isInverse) || (keyCode.virt == VKEY_UP && isInverse) || (keyCode.virt == VKEY_LEFT && !isInverse) || (keyCode.virt == VKEY_RIGHT && isInverse)) { distance = -distance; } float normValue = getValueNormalized (); if (mapVstKeyModifier (keyCode.modifier) & kZoomModifier) normValue += 0.1f * distance * wheelInc; else normValue += distance * wheelInc; setValueNormalized (normValue); if (isDirty ()) { invalid (); // begin of edit parameter beginEdit (); valueChanged (); // end of edit parameter endEdit (); } return 1; } } return -1; }
//------------------------------------------------------------------------ bool COptionMenu::popup () { bool popupResult = false; if (!getFrame ()) return popupResult; CBaseObjectGuard objGuard (this); beforePopup (); inPopup = true; beginEdit (); lastResult = -1; lastMenu = 0; getFrame ()->onStartLocalEventLoop (); IPlatformOptionMenu* platformMenu = getFrame ()->getPlatformFrame ()->createPlatformOptionMenu (); if (platformMenu) { PlatformOptionMenuResult platformPopupResult = platformMenu->popup (this); if (platformPopupResult.menu != 0) { IDependency::DeferChanges dc (this); lastMenu = platformPopupResult.menu; lastResult = platformPopupResult.index; lastMenu->setValue ((float)lastResult); valueChanged (); invalid (); popupResult = true; CCommandMenuItem* commandItem = dynamic_cast<CCommandMenuItem*>(lastMenu->getEntry (lastResult)); if (commandItem) commandItem->execute (); } platformMenu->forget (); } endEdit (); inPopup = false; return popupResult; }
void IPlugVST3Plugin::BeginInformHostOfParamChange(int idx) { Trace(TRACELOC, "%d", idx); beginEdit(idx); }