static void AddKeyHex(EDIT_Obj* pObj, EDIT_Handle hObj, int Key) { if (pObj) { switch (Key) { #if EDIT_HEX_DIGITONLY case GUI_KEY_UP: { int Nibble = (_GetCurrentNibble(pObj) + 1) & 15; _EditHex(Nibble, pObj, hObj); } break; case GUI_KEY_DOWN: { int Nibble = (_GetCurrentNibble(pObj) + 1) & 15; _EditHex(Nibble, pObj, hObj); } break; #else case GUI_KEY_UP: _AddPosition(pObj, hObj, 1); break; case GUI_KEY_DOWN: _AddPosition(pObj, hObj, -1); break; #endif case GUI_KEY_RIGHT: if (pObj->CursorPos < (pObj->MaxLen - 1)) pObj->CursorPos++; break; case GUI_KEY_LEFT: if (pObj->CursorPos > 0) pObj->CursorPos--; break; default: { int Nibble = _HexChar2Int(Key); if (Nibble >= 0) { _EditHex(Nibble, pObj, hObj); if (pObj->CursorPos < (pObj->MaxLen - 1)) pObj->CursorPos++; } } break; } } _UpdateBuffer(pObj); }
/********************************************************************* * * _AddKeyHex */ static void _AddKeyHex(EDIT_Handle hObj, int Key) { EDIT_Obj * pObj; pObj = EDIT_H2P(hObj); /* The GUI needs not to be locked here. This function is called only from EDIT_AddKey which has already locked the GUI */ if (pObj) { switch (Key) { #if EDIT_HEX_DIGITONLY case GUI_KEY_UP: { int Nibble = (_GetCurrentNibble(pObj) + 1) & 15; _EditHex(Nibble, pObj, hObj); } break; case GUI_KEY_DOWN: { int Nibble = (_GetCurrentNibble(pObj) + 1) & 15; _EditHex(Nibble, pObj, hObj); } break; #else case GUI_KEY_UP: _AddPosition(pObj, hObj, 1); break; case GUI_KEY_DOWN: _AddPosition(pObj, hObj, -1); break; #endif case GUI_KEY_RIGHT: EDIT__SetCursorPos(pObj, pObj->CursorPos + 1); break; case GUI_KEY_LEFT: EDIT__SetCursorPos(pObj, pObj->CursorPos - 1); break; default: { int Nibble = _HexChar2Int(Key); if (Nibble >= 0) { _EditHex(Nibble, pObj, hObj); EDIT__SetCursorPos(pObj, pObj->CursorPos + 1); } } break; } } _UpdateBuffer(hObj); }