Данный виджет позволяет осуществлять выбор значения из списка. В отличии от Alphalist и Scrolling List является однострочным.
Создание виджета. Возращает ссылку на созданный виджет или NULL, если создать не удалось.
В остальных функциях в качестве itemlist нужно передавать ссылку на созданный виджет.
CDKITEMLIST *newCDKItemlist (CDKSCREEN *cdkscreen, int xpos, int ypos, char *title, char *label, char **itemList, int itemCount, int defaultItem, boolean box, boolean shadow);
Уничтожение виджета.
void destroyCDKItemlist (CDKITEMLIST *itemlist);
Удаление виджета с экрана. (Сам виджет не удаляется.)
void eraseCDKItemlist (CDKITEMLIST *itemlist);
Установика атрибутов фона виджета attribute.
void setCDKItemlistBackgroundAttrib (CDKITEMLIST *itemlist, chtype attribute);
Прорисовка виджета.
void drawCDKItemlist (CDKITEMLIST *itemlist, boolean box);
Прорисовка содержимого поля виджета.
void drawCDKItemlistField (CDKITEMLIST *itemlist, boolean highlight);
Активация виджета. Возвращает номер выбранного значения.
Если itemlist->exitType равно vNORMAL при выборе подпункта меню то выход осуществлён клавишами Enter или Tab и vESCAPE_HIT при нажатии Esc
В качестве actions можно передать 0.
int activateCDKItemlist (CDKITEMLIST *itemlist, chtype *actions);
Получение номера текущего значения.
int getCDKItemlistCurrentItem (CDKITEMLIST *itemlist);
Установка номера текущего значения.
void setCDKItemlistCurrentItem (CDKITEMLIST *itemlist, int currentItem);
Получение номера значения по умолчанию.
int getCDKItemlistDefaultItem (CDKITEMLIST *itemlist);
Установка номера значения по умолчанию.
void setCDKItemlistDefaultItem (CDKITEMLIST *itemlist, int defaultItem);
Получение массива значении и количества элементов в нём в listSize.
chtype **getCDKItemlistValues (CDKITEMLIST *itemlist, int *listSize);
Установка массива значении и количества элементов в нём.
void setCDKItemlistValues (CDKITEMLIST *itemlist, char **itemList, int itemCount);
Установка состояния виджета.
void setCDKItemlist (CDKITEMLIST *itemlist, char **itemList, int itemCount, int currentSelection, boolean box);
Перемещение виджета.
void moveCDKItemlist (CDKITEMLIST *itemlist, int xpos, int ypos, boolean relative, boolean refresh);
Управление положением виджета клавишами курсора.
void positionCDKItemlist (CDKITEMLIST *itemlist);
Есть ли рамка у виджета.
boolean getCDKItemlistBox (CDKITEMLIST *itemlist);
Изменить наличие рамки в виджете.
void setCDKItemlistBox (CDKITEMLIST *itemlist, boolean box);
Установка атрибутов attribute для рамки.
void setCDKItemlistBoxAttribute (CDKITEMLIST *itemlist, chtype character);
Установка символа character выводимого по горизонтали рамки.
void setCDKItemlistHorizontalChar (CDKITEMLIST *itemlist, chtype character);
Установка символа character выводимого по вертикали рамки.
void setCDKItemlistVerticalChar (CDKITEMLIST *itemlist, chtype character);
Установка символа character выводимого в левом нижнем углу рамки.
void setCDKItemlistLLChar (CDKITEMLIST *itemlist, chtype character);
Установка символа character выводимого в правом нижнем углу рамки.
void setCDKItemlistLRChar (CDKITEMLIST *itemlist, chtype character);
Установка символа character выводимого в левом верхнем углу рамки.
void setCDKItemlistULChar (CDKITEMLIST *itemlist, chtype character);
Установка символа character выводимого в правом верхнем углу рамки.
void setCDKItemlistURChar (CDKITEMLIST *itemlist, chtype character);
/*
w_itemlist.c - пример простой программы демонстрирующей
возможности виджета Item list библиотеки CDK.
(C) Copyright 2006 Бердников Александр alexber220@yandex.ru
Данная программа распростаняется по лицензии BSD.
*/
#include <cdk.h>
int main(int argc, char *argv[])
{
CDKSCREEN *cdkscreen;
CDKITEMLIST *itemlist;
WINDOW *screen;
int val;
char *types[4];
char temp[256], *mesg[10];
// инициализация
screen = initscr();
cdkscreen = initCDKScreen(screen);
initCDKColor();
// заполняем список
types[0] = "CD";
types[1] = "DVD";
types[2] = "Floppy";
types[3] = "ZIP";
//создаём виджет
itemlist = newCDKItemlist(cdkscreen,
CENTER, CENTER,
"", "Носитель:", types, 4, 0,
TRUE, FALSE);
//ждём ввода
val = activateCDKItemlist(itemlist, 0);
// выводим выбранный элемент
if (itemlist->exitType == vNORMAL)
{
sprintf (temp, "(%s)", types[val]);
mesg[0] = temp;
popupLabel (cdkscreen, mesg, 1);
}
//освобождаем ресурсы
destroyCDKItemlist(itemlist);
destroyCDKScreen(cdkscreen);
endCDK();
return 0;
}