Данный виджет служит для ввода строки, но вместе с этим содержит значения - подсказки из которых можно выбрать.
Создание виджета. Возращает ссылку на созданный виджет или 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;
}