Example #1
0
//------------------------------------------------------------------------
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);
}
Example #2
0
//------------------------------------------------------------------------
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;
}
Example #3
0
//------------------------------------------------------------------------
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;
}
Example #4
0
void IPlugVST3::BeginInformHostOfParamChange(int idx)
{
  if (GetParam(idx)->GetCanAutomate()) 
  {
    beginEdit(idx);
  }
}
Example #5
0
//-----------------------------------------------------------------------------
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;
}
Example #6
0
//------------------------------------------------------------------------
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);
}
Example #7
0
//------------------------------------------------------------------------
CMouseEventResult COnOffButton::onMouseDown (CPoint& where, const CButtonState& buttons)
{
	if (!(buttons & kLButton))
		return kMouseEventNotHandled;

	beginEdit ();
	return kMouseEventHandled;
}
Example #8
0
//------------------------------------------------------------------------
CMouseEventResult CTextKickButton::onMouseDown (CPoint& where, const long& buttons)
{
	if (!(buttons & kLButton))
		return kMouseEventNotHandled;
	fEntryState = value;
	beginEdit ();
	return onMouseMoved (where, buttons);
}
Example #9
0
//------------------------------------------------------------------------
CMouseEventResult CCheckBox::onMouseDown (CPoint& where, const CButtonState& buttons)
{
	if (buttons.isLeftButton ())
	{
		beginEdit ();
		previousValue = value;
		return onMouseMoved (where, buttons);
	}
	return kMouseDownEventHandledButDontNeedMovedOrUpEvents;
}
Example #10
0
//------------------------------------------------------------------------
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 ();
    }
}
Example #11
0
//------------------------------------------------------------------------
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;
}
Example #12
0
//------------------------------------------------------------------------
void CTextEdit::updateText (IPlatformTextEdit* pte)
{
	const char* newText = pte->getText ();
	if (strcmp (newText, getText ()) != 0)
	{
		beginEdit ();

		setText (newText);

		valueChanged ();

		endEdit ();
	}
}
Example #13
0
//-----------------------------------------------------------------------------
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;
}
Example #14
0
//------------------------------------------------------------------------
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;
}
Example #15
0
//----------------------------------------------------------------------------------------------------
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);
}
Example #16
0
//------------------------------------------------------------------------
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);
}
Example #17
0
//------------------------------------------------------------------------
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;
}
Example #18
0
//------------------------------------------------------------------------
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);
}