示例#1
0
IPTR Register__MUIM_HandleEvent(struct IClass *cl, Object *obj, struct MUIP_HandleEvent *msg)
{
    struct Register_DATA *data = INST_DATA(cl, obj);
    WORD i, x, y;

    if (msg->muikey != MUIKEY_NONE)
    {
        switch (msg->muikey)
        {
        case MUIKEY_PRESS:
        case MUIKEY_RIGHT:
        case MUIKEY_TOGGLE:
            nfset(obj, MUIA_Group_ActivePage, MUIV_Group_ActivePage_Next);
            return MUI_EventHandlerRC_Eat;

        case MUIKEY_LEFT:
            nfset(obj, MUIA_Group_ActivePage, MUIV_Group_ActivePage_Prev);
            return MUI_EventHandlerRC_Eat;

        case MUIKEY_WORDLEFT:
        case MUIKEY_LINESTART:
            nfset(obj, MUIA_Group_ActivePage, MUIV_Group_ActivePage_First);
            return MUI_EventHandlerRC_Eat;

        case MUIKEY_WORDRIGHT:
        case MUIKEY_LINEEND:
            nfset(obj, MUIA_Group_ActivePage, MUIV_Group_ActivePage_Last);
            return MUI_EventHandlerRC_Eat;

        }
    }

    if (msg->imsg)
    {
        if ((msg->imsg->Class == IDCMP_MOUSEBUTTONS) &&
                (msg->imsg->Code == SELECTDOWN))
        {
            x = msg->imsg->MouseX - data->left;
            y = msg->imsg->MouseY - data->top;

            /*  	    D(bug("Register_HandleEvent : %d,%d,%d -- %d,%d,%d\n", 0, x, _width(obj), 0, y, data->tab_height)); */
            if (_between(0, x, _width(obj)))
            {
                /*  		D(bug("Register_HandleEvent : in tab, %d,%d\n", x, y)); */
                for(i = 0; i < data->numitems; i++)
                {
                    if (_between(data->items[i].x1, x, data->items[i].x2) &&
                            _between(data->items[i].y1, y, data->items[i].y2))
                    {
                        if (data->active != i)
                        {
                            nfset(obj, MUIA_Group_ActivePage, i);
                            return MUI_EventHandlerRC_Eat;
                        }
                        break;
                    }

                }
            }

        }
    }

    return 0;
}
示例#2
0
struct MUI_ImageSpec *
zune_get_muipen_spec (LONG muipen)
{
    g_return_val_if_fail(_between(MPEN_SHINE, muipen, MPEN_COUNT - 1), NULL);
    return __penSpec[muipen];
}
示例#3
0
/**************************************************************************
 MUIM_HandleEvent
**************************************************************************/
IPTR Numericbutton__MUIM_HandleEvent(struct IClass *cl, Object *obj, struct MUIP_HandleEvent *msg)
{
    struct Numericbutton_DATA *data = INST_DATA(cl, obj);

    if (!msg->imsg)
    {
        return 0;
    }

    switch(msg->imsg->Class)
    {
    case IDCMP_MOUSEBUTTONS:
        switch(msg->imsg->Code)
        {
        case SELECTDOWN:
            if (_between(_left(obj), msg->imsg->MouseX, _right(obj)) &&
                    _between(_top(obj), msg->imsg->MouseY, _bottom(obj)) &&
                    (muiAreaData(obj)->mad_Flags & MADF_CANDRAW) &&
                    !data->popwin)
            {
                data->knob_clickoffset_x = msg->imsg->MouseX - _mleft(obj);

                if (MakePopupWin(obj, data))
                {
                    DoMethod(_win(obj), MUIM_Window_RemEventHandler, (IPTR)&data->ehn);
                    data->ehn.ehn_Events |= IDCMP_MOUSEMOVE;
                    DoMethod(_win(obj), MUIM_Window_AddEventHandler, (IPTR)&data->ehn);

                    return 0;
                }
            }
            break;

        case SELECTUP:
        case MENUUP:
        case MIDDLEUP:
        default:
            if (data->popwin)
            {
                KillPopupWin(obj, data);
                if ((msg->imsg->Code == SELECTUP))
                {
                    set(obj, MUIA_Numeric_Value, data->knob_val);
                }
                return 0;
            }
            break;


        } /* switch(msg->imsg->Code) */
        break;

    case IDCMP_MOUSEMOVE:
        if (data->popwin)
        {
            DrawKnob(obj, data, FALSE);

            return 0;
        }
        break;

    } /* switch(msg->imsg->Class) */

    return 0;
}
示例#4
0
struct MUI_ImageSpec *
zune_get_pattern_spec(LONG muiipatt)
{
    g_return_val_if_fail(_between(MUII_BACKGROUND, muiipatt, MUII_LASTPAT), NULL);
    return __patternSpec[muiipatt - MUII_BACKGROUND];
}