示例#1
0
bool CEditValue::EventProcess(const Event &event)
{
    CControl::EventProcess(event);

    if ( (m_state & STATE_VISIBLE) == 0 )  return true;
    if ( (m_state & STATE_ENABLE) == 0 )  return true;
    if ( m_state & STATE_DEAD )  return true;

    if (m_edit != nullptr)
    {
        if ( m_edit->GetFocus()           &&
             event.type == EVENT_KEY_DOWN &&
             event.GetData<KeyEventData>()->key == KEY(RETURN)     )
        {
            float value = GetValue();
            if ( value > m_maxValue )  value = m_maxValue;
            if ( value < m_minValue )  value = m_minValue;
            SetValue(value, true);
            HiliteValue(event);
        }
        if ( !m_edit->EventProcess(event) )  return false;

        if ( event.type == m_edit->GetEventType() )
        {
            m_event->AddEvent(Event(m_eventType));
        }
    }

    if (m_buttonUp != nullptr)
    {
        if ( event.type == m_buttonUp->GetEventType() )
        {
            float value = GetValue()+m_stepValue;
            if ( value > m_maxValue )  value = m_maxValue;
            SetValue(value, true);
            HiliteValue(event);
        }
        if ( !m_buttonUp->EventProcess(event) )  return false;
    }

    if (m_buttonDown != nullptr)
    {
        if ( event.type == m_buttonDown->GetEventType() )
        {
            float value = GetValue()-m_stepValue;
            if ( value < m_minValue )  value = m_minValue;
            SetValue(value, true);
            HiliteValue(event);
        }
        if ( !m_buttonDown->EventProcess(event) )  return false;
    }

    if (event.type == EVENT_MOUSE_WHEEL &&
        Detect(event.mousePos))
    {
        float value = GetValue() + (m_stepValue * event.GetData<MouseWheelEventData>()->y);
        if ( value < m_minValue )  value = m_minValue;
        if ( value > m_maxValue )  value = m_maxValue;
        SetValue(value, true);
        HiliteValue(event);
    }

    return true;
}
示例#2
0
bool CEditValue::EventProcess(const Event &event)
{
    float   value;

    CControl::EventProcess(event);

    if ( (m_state & STATE_VISIBLE) == 0 )  return true;
    if ( (m_state & STATE_ENABLE) == 0 )  return true;

    if ( m_edit != 0 )
    {
        if ( m_edit->GetFocus()           &&
             event.type == EVENT_KEY_DOWN &&
             event.key.key == KEY(RETURN)     )
        {
            value = GetValue();
            if ( value > m_maxValue )  value = m_maxValue;
            if ( value < m_minValue )  value = m_minValue;
            SetValue(value, true);
            HiliteValue(event);
        }
        if ( !m_edit->EventProcess(event) )  return false;

        if ( event.type == m_edit->GetEventType() )
        {
            Event       newEvent(m_eventType);
            m_event->AddEvent(newEvent);
        }
    }

    if ( m_buttonUp != 0 )
    {
        if ( event.type == m_buttonUp->GetEventType() )
        {
            value = GetValue()+m_stepValue;
            if ( value > m_maxValue )  value = m_maxValue;
            SetValue(value, true);
            HiliteValue(event);
        }
        if ( !m_buttonUp->EventProcess(event) )  return false;
    }

    if ( m_buttonDown != 0 )
    {
        if ( event.type == m_buttonDown->GetEventType() )
        {
            value = GetValue()-m_stepValue;
            if ( value < m_minValue )  value = m_minValue;
            SetValue(value, true);
            HiliteValue(event);
        }
        if ( !m_buttonDown->EventProcess(event) )  return false;
    }

    if (event.type == EVENT_MOUSE_WHEEL &&
        event.mouseWheel.dir == WHEEL_UP &&
        Detect(event.mousePos))
    {
        value = GetValue()+m_stepValue;
        if ( value > m_maxValue )  value = m_maxValue;
        SetValue(value, true);
        HiliteValue(event);
    }
    if ( event.type == EVENT_KEY_DOWN &&
         event.mouseWheel.dir == WHEEL_DOWN &&
         Detect(event.mousePos))
    {
        value = GetValue()-m_stepValue;
        if ( value < m_minValue )  value = m_minValue;
        SetValue(value, true);
        HiliteValue(event);
    }

    return true;
}