// Listens for button press Msgs dispatched from loop().
MsgResp MainMenuHandler::processMessage(Msg& msg)
{
    MsgResp rsp = eFail;
    if(eButtonActionPress == msg.m_type)
    {
        // up and down buttons move the caret.
        // select button invokes Setup or runStack
        // handling.
        switch(msg.m_code)
        {
            case eLeft:     { break; }
            case eRight:    { break; }
            case eDown:     { moveCaret(eMoveDown); break; }
            case eUp:       { moveCaret(eMoveUp); break; }
            case eSelect:
            {
                switch(m_caretRow)
                {
                    case 1:
                    {
                        msg.m_nextHandler = g_pSetup;
                        rsp = eSuccess;
                        break;
                    }
                    case 2:
                    {
                        if(nk3.isConnected())
                        {
                            msg.m_nextHandler = g_pRunStack;
                            rsp = eSuccess;
                        }
                        break;
                    }
                    case 3:
                    {
                        // on/off?
                        // TODO: turn display off/on
                        // how far to sleep can we go
                        // and still wake?
                        break;
                    }
                    default: { break; }
                }
                break;
            }
            default : { break; }
        }
    }
    return rsp;
}
void EditableTextComponent::keyTyped(const KeyEventUnrecPtr e)
{
	
    if(getEnabled() && getEditable() && !(e->getModifiers() &( KeyEvent::KEY_MODIFIER_ALT | KeyEvent::KEY_MODIFIER_CONTROL | KeyEvent::KEY_MODIFIER_META )))
	{
		if(e->getKeyChar()>31 && e->getKeyChar() < 127)
		{
			if(hasSelection())
			{
                deleteSelectedText();
				setCaretPosition(_TextSelectionStart);
			}
            insert(std::string( 1,e->getKeyChar() ), _TextSelectionStart);
			_TextSelectionStart = getCaretPosition();
			_TextSelectionEnd = _TextSelectionStart;
		}
		if(e->getKey()== e->KEY_BACK_SPACE)
		{
			if(hasSelection())
			{
                deleteSelectedText();
			}
			else
			{	
                //erase at the current caret position
                Int32 DeleteIndex(getCaretPosition());
                if(DeleteIndex != 0)
                {
                    moveCaret(-1);
                    deleteRange(DeleteIndex-1, DeleteIndex);
                }
			}
		}
		if(e->getKey()== e->KEY_DELETE)
		{
			if(hasSelection())
			{
                deleteSelectedText();
			}
			else if(getText().size()>0)
			{
				//erase at the current caret position
                deleteRange(getCaretPosition(), getCaretPosition()+1);
				_TextSelectionStart = getCaretPosition();
				_TextSelectionEnd = _TextSelectionStart;
			}
		}
	}
	
    switch(e->getKey())
    {
    case KeyEvent::KEY_RIGHT:
    case KeyEvent::KEY_KEYPAD_RIGHT:
        moveCaret(1);
        break;
    case KeyEvent::KEY_LEFT:
    case KeyEvent::KEY_KEYPAD_LEFT:
        moveCaret(-1);
        break;
    case KeyEvent::KEY_V:
        if(e->getModifiers() & KeyEvent::KEY_MODIFIER_COMMAND)
        {
            paste();
        }
        break;
    case KeyEvent::KEY_C:
        if(e->getModifiers() & KeyEvent::KEY_MODIFIER_COMMAND)
        {
            copy();
        }
        break;
    case KeyEvent::KEY_X:
        if(e->getModifiers() & KeyEvent::KEY_MODIFIER_COMMAND)
        {
            cut();
        }
        break;
    case KeyEvent::KEY_A:
        if(e->getModifiers() & KeyEvent::KEY_MODIFIER_COMMAND)
        {
            selectAll();
        }
        break;
    }

	Inherited::keyTyped(e);
}
Exemple #3
0
 void LoopControl::touchMoved(ofTouchEventArgs &touch) {
     InterfaceObject::touchMoved(touch);
     moveCaret(touch);
 }