Данный виджет служит для ввода строки, но вместе с этим содержит значения - подсказки из которых можно выбрать.
Создание виджета. Возращает ссылку на созданный виджет или NULL, если создать не удалось.
В остальных функциях в качестве alphalist нужно передавать ссылку на созданный виджет.
CDKALPHALIST *newCDKAlphalist (CDKSCREEN *cdkscreen, int xpos, int ypos, int height, int width, char * title, char * label, char ** list, int listSize, chtype fillerCharacter, chtype highlight, boolean box, boolean shadow);
Уничтожение виджета.
void destroyCDKAlphalist (CDKALPHALIST *alphalist);
Удаление виджета с экрана. (Сам виджет не удаляется.)
void eraseCDKAlphalist (CDKALPHALIST *alphalist);
Установика атрибутов фона виджета attribute.
void setCDKAlphalistBackgroundAttrib (CDKALPHALIST *alphalist, chtype attribute);
Прорисовка виджета.
void drawCDKAlphalist (CDKALPHALIST *alphalist, boolean box);
Активация виджета. Возвращаемое значение содержит введённую строку.
Если alphalist->exitType равно vNORMAL при выборе подпункта меню то выход осуществлён клавишами Enter или Tab и vESCAPE_HIT при нажатии Esc
В качестве actions можно передать 0.
char *activateCDKAlphalist (CDKALPHALIST *alphalist, chtype *actions);
Получение атрибутов выделенного элемента списка.
chtype getCDKAlphalistHighlight (CDKALPHALIST *alphalist);
Установка атрибутов выделенного элемента списка.
void setCDKAlphalistHighlight (CDKALPHALIST *alphalist, chtype highlight);
Получение списка и его длинны size.
char **getCDKAlphalistContents (CDKALPHALIST *alphalist, int *size);
Установка списка.
void setCDKAlphalistContents (CDKALPHALIST *alphalist, char ** list, int listSize);
Установка состояния виджета.
void setCDKAlphalist (CDKALPHALIST *alphalist, char ** list, int listSize, chtype fillerCharacter, chtype highlight, boolean box);
Получение символа которым заполняется пустое пространство в строке ввода.
chtype getCDKAlphalistFillerChar (CDKALPHALIST *alphalist);
Установка символа которым заполняется пустое пространство в строке ввода.
void setCDKAlphalistFillerChar (CDKALPHALIST *alphalist, chtype fillerCharacter);
Перемещение виджета.
void moveCDKAlphalist (CDKALPHALIST *alphalist, int xpos, int ypos, boolean relative, boolean refresh);
Управление положением виджета клавишами курсора.
void positionCDKAlphalist (CDKALPHALIST *alphalist);
Есть ли рамка у виджета.
boolean getCDKAlphalistBox (CDKALPHALIST *alphalist);
Изменить наличие рамки в виджете.
void setCDKAlphalistBox (CDKALPHALIST *alphalist, boolean box);
Установка атрибутов attribute для рамки.
void setCDKAlphalistBoxAttribute (CDKALPHALIST *alphalist, chtype character);
Установка символа character выводимого по горизонтали рамки.
void setCDKAlphalistHorizontalChar (CDKALPHALIST *alphalist, chtype character);
Установка символа character выводимого по вертикали рамки.
void setCDKAlphalistVerticalChar (CDKALPHALIST *alphalist, chtype character);
Установка символа character выводимого в левом нижнем углу рамки.
void setCDKAlphalistLLChar (CDKALPHALIST *alphalist, chtype character);
Установка символа character выводимого в правом нижнем углу рамки.
void setCDKAlphalistLRChar (CDKALPHALIST *alphalist, chtype character);
Установка символа character выводимого в левом верхнем углу рамки.
void setCDKAlphalistULChar (CDKALPHALIST *alphalist, chtype character);
Установка символа character выводимого в правом верхнем углу рамки.
void setCDKAlphalistURChar (CDKALPHALIST *alphalist, chtype character);
/* w_alphalist.c - пример простой программы демонстрирующей возможности виджета Alphalist библиотеки CDK. (C) Copyright 2006 Бердников Александр alexber220@yandex.ru Данная программа распростаняется по лицензии BSD. */ #include <cdk.h> static char *types[4]; int main(int argc, char *argv[]) { CDKSCREEN *cdkscreen; CDKALPHALIST *CDKType; WINDOW *screen; char *type; char temp[256], *mesg[10]; // инициализация screen = initscr(); cdkscreen = initCDKScreen(screen); initCDKColor(); // заполняем список types[0] = "CD"; types[1] = "DVD"; types[2] = "Floppy"; types[3] = "ZIP"; //создаём виджет CDKType = newCDKAlphalist(cdkscreen, CENTER, CENTER, 8, 10, "", "", types, 4, '_', A_REVERSE, TRUE, FALSE); //ждём ввода type = activateCDKAlphalist(CDKType, 0); // выводим введённую строку if (CDKType->exitType == vNORMAL) { sprintf (temp, "(%s)", type); mesg[0] = temp; popupLabel (cdkscreen, mesg, 1); } //освобождаем ресурсы destroyCDKEntry(CDKType); destroyCDKScreen(cdkscreen); endCDK(); return 0; }