/********************************************************************* * * DROPDOWN_InsertString */ void DROPDOWN_InsertString(DROPDOWN_Handle hObj, const char * s, unsigned int Index) { if (hObj && s) { DROPDOWN_Obj* pObj; unsigned int NumItems; WM_LOCK(); pObj = DROPDOWN_H2P(hObj); NumItems = DROPDOWN_GetNumItems(hObj); if (Index < NumItems) { WM_HMEM hItem; hItem = GUI_ARRAY_InsertItem(&pObj->Handles, Index, strlen(s) + 1); if (hItem) { char * pBuffer = (char *)GUI_ALLOC_h2p(hItem); strcpy(pBuffer, s); } WM_InvalidateWindow(hObj); if (pObj->hListWin) { LISTBOX_InsertString(pObj->hListWin, s, Index); } } else { DROPDOWN_AddString(hObj, s); if (pObj->hListWin) { LISTBOX_AddString(pObj->hListWin, s); } } WM_UNLOCK(); } }
/********************************************************************* * * DROPDOWN_DeleteItem */ void DROPDOWN_DeleteItem(DROPDOWN_Handle hObj, unsigned int Index) { if (hObj) { DROPDOWN_Obj * pObj; unsigned int NumItems; NumItems = DROPDOWN_GetNumItems(hObj); if (Index < NumItems) { WM_LOCK(); pObj = DROPDOWN_H2P(hObj); GUI_ARRAY_DeleteItem(&pObj->Handles, Index); WM_InvalidateWindow(hObj); if (pObj->hListWin) { LISTBOX_DeleteItem(pObj->hListWin, Index); } WM_UNLOCK(); } } }
/******************************************************************* * * _ShowSeveralFunctions */ static void _ShowSeveralFunctions(DROPDOWN_Handle hDropDown) { int NumEntries, i, Key = 0, Cnt = 15; char ac[] = "-- sec to play with dropdown control"; /* Set focus */ GUI_DispStringAtCEOL("WM_SetFocus", 5, 55); GUI_Delay(SPEED * 0.9); WM_SetFocus(hDropDown); GUI_Delay(SPEED * 0.7); /* Add strings */ GUI_DispStringAtCEOL("DROPDOWN_AddString", 5, 55); GUI_Delay(SPEED * 0.8); DROPDOWN_AddString(hDropDown, "English"); DROPDOWN_AddString(hDropDown, "Deutsch"); DROPDOWN_AddString(hDropDown, "Fran鏰is"); DROPDOWN_AddString(hDropDown, "Japanese"); DROPDOWN_AddString(hDropDown, "Italiano"); DROPDOWN_AddString(hDropDown, "Espa駉l"); DROPDOWN_AddString(hDropDown, "Other language ..."); GUI_Delay(SPEED * 0.6); /* Increment selection */ GUI_DispStringAtCEOL("DROPDOWN_IncSel", 5, 55); GUI_Delay(SPEED); NumEntries = DROPDOWN_GetNumItems(hDropDown); for (i = 0; i < (NumEntries - 2); i++) { DROPDOWN_IncSel(hDropDown); GUI_Delay(SPEED / 6); } GUI_Delay(SPEED / 4); /* Expand dropdown */ GUI_DispStringAtCEOL("DROPDOWN_Expand", 5, 55); GUI_Delay(SPEED); DROPDOWN_Expand(hDropDown); GUI_Delay(SPEED * 0.75); /* Add scrollbar */ GUI_DispStringAtCEOL("DROPDOWN_SetAutoScroll", 5, 55); GUI_Delay(SPEED); DROPDOWN_SetAutoScroll(hDropDown, 1); GUI_Delay(SPEED * 0.75); /* Set font */ GUI_DispStringAtCEOL("DROPDOWN_SetFont", 5, 55); GUI_Delay(SPEED); DROPDOWN_SetFont(hDropDown, &GUI_Font16B_1); GUI_Delay(SPEED * 0.75); /* Set text color */ GUI_DispStringAtCEOL("DROPDOWN_SetTextColor", 5, 55); GUI_Delay(SPEED); DROPDOWN_SetTextColor(hDropDown, 0, 0x00BB00); DROPDOWN_SetTextColor(hDropDown, 2, GUI_BLACK); GUI_Delay(SPEED * 0.75); /* Set background color */ GUI_DispStringAtCEOL("DROPDOWN_SetBkColor", 5, 55); GUI_Delay(SPEED); DROPDOWN_SetBkColor(hDropDown, 0, GUI_YELLOW); DROPDOWN_SetBkColor(hDropDown, 2, GUI_RED); GUI_Delay(SPEED * 0.75); /* Delete item */ GUI_DispStringAtCEOL("DROPDOWN_DeleteItem", 5, 55); GUI_Delay(SPEED); DROPDOWN_DeleteItem(hDropDown, 5); GUI_Delay(SPEED * 0.75); /* Collapse dropdown */ GUI_DispStringAtCEOL("DROPDOWN_Collapse", 5, 55); GUI_Delay(SPEED); DROPDOWN_Collapse(hDropDown); GUI_Delay(SPEED * 0.75); /* Decrement selection */ GUI_DispStringAtCEOL("DROPDOWN_DecSel", 5, 55); GUI_Delay(SPEED); NumEntries = DROPDOWN_GetNumItems(hDropDown); for (i = 0; i < (NumEntries - 2); i++) { DROPDOWN_DecSel(hDropDown); GUI_Delay(SPEED / 6); } GUI_Delay(SPEED / 4); /* Let user play with dropdown control */ GUI_DispStringAtCEOL("", 5, 55); while (!Key && (Cnt > 0)) { ac[0] = '0' + (Cnt / 10); ac[1] = '0' + (Cnt-- % 10); GUI_DispStringAtCEOL(ac, 5, 40); GUI_Delay(1000); Key = GUI_GetKey(); } /* Delete dropdown widget */ GUI_DispStringAtCEOL("DROPDOWN_Delete", 5, 55); GUI_Delay(SPEED * 1.1); DROPDOWN_Delete(hDropDown); GUI_Delay(SPEED * 0.75); }