Данный виджет служит для выбора строки из списка. Есть возможность нумеровать список, добавлять и удалять элементы, устанавливать текущее положение.
Создание виджета. Возращает ссылку на созданный виджет или NULL, если создать не удалось.
В остальных функциях в качестве scroll нужно передавать ссылку на созданный виджет.
CDKSCROLL *newCDKScroll (CDKSCREEN *cdkscreen,int xpos,int ypos, int spos, int height, int width, char *title, char **itemList, int items, boolean numbers, chtype highlight, boolean box, boolean shadow);
Уничтожение виджета.
void destroyCDKScroll (CDKSCROLL *scroll);
Удаление виджета с экрана. (Сам виджет не удаляется.)
void eraseCDKScroll (CDKSCROLL *scroll);
Установика атрибутов фона виджета attribute.
void setCDKScrollBackgroundAttrib (CDKSCROLL *scroll, chtype attribute);
Прорисовка виджета.
void drawCDKScroll (CDKSCROLL *scroll, boolean box);
Активация виджета. Возвращаемое значение содержит индекс выбранной строки.
Если scroll->exitType равно vNORMAL при выборе подпункта меню то выход осуществлён клавишами Enter или Tab и vESCAPE_HIT при нажатии Esc
В качестве actions можно передать 0.
int activateCDKScroll (CDKSCROLL *scroll, chtype * actions);
Получение номера текущего элемента списка.
int getCDKScrollCurrent(CDKSCROLL *scroll);
Установка текущего элемента списка.
void setCDKScrollCurrent(CDKSCROLL *scroll, int item);
void setCDKScrollPosition (CDKSCROLL *scroll, int item);
Добавление строки item в конец списка.
void addCDKScrollItem (CDKSCROLL *scroll, char *item);
Вставка строки item в текущую позицию списка.
void insertCDKScrollItem (CDKSCROLL *scroll, char *item);
Удаление элемента, находящегося в позиции position, из списка.
void deleteCDKScrollItem (CDKSCROLL *scroll, int position);
Получение списка.
int getCDKScrollItems (CDKSCROLL *scroll, char **itemList);
Получение атрибутов выделенного элемента списка.
chtype getCDKScrollHighlight (CDKSCROLL *scroll, chtype highlight);
Установка атрибутов выделенного элемента списка.
void setCDKScrollHighlight (CDKSCROLL *scroll, chtype highlight);
Установка списка.
void setCDKScrollItems (CDKSCROLL *scroll, char **itemList, int listSize, boolean numbers);
Установка состояния виджета.
void setCDKScroll (CDKSCROLL *scroll, char **itemList, int items, boolean numbers, chtype highlight, boolean box);
Перемещение виджета.
void moveCDKScroll (CDKSCROLL *scroll, int xpos, int ypos, boolean relative, boolean refresh);
Управление положением виджета клавишами курсора.
void positionCDKScroll (CDKSCROLL *scroll);
Есть ли рамка у виджета.
boolean getCDKScrollBox (CDKSCROLL *scroll);
Изменить наличие рамки в виджете.
void setCDKScrollBox (CDKSCROLL *scroll, boolean box);
Установка атрибутов attribute для рамки.
void setCDKScrollBoxAttribute (CDKSCROLL *scroll, chtype character);
Установка символа character выводимого по горизонтали рамки.
void setCDKScrollHorizontalChar (CDKSCROLL *scroll, chtype character);
Установка символа character выводимого по вертикали рамки.
void setCDKScrollVerticalChar (CDKSCROLL *scroll, chtype character);
Установка символа character выводимого в левом нижнем углу рамки.
void setCDKScrollLLChar (CDKSCROLL *scroll, chtype character);
Установка символа character выводимого в правом нижнем углу рамки.
void setCDKScrollLRChar (CDKSCROLL *scroll, chtype character);
Установка символа character выводимого в левом верхнем углу рамки.
void setCDKScrollULChar (CDKSCROLL *scroll, chtype character);
Установка символа character выводимого в правом верхнем углу рамки.
void setCDKScrollURChar (CDKSCROLL *scroll, chtype character);
/*
w_scroll.c - пример простой программы демонстрирующей
возможности виджета Scroll библиотеки CDK.
(C) Copyright 2006 Бердников Александр alexber220@yandex.ru
Данная программа распростаняется по лицензии BSD.
*/
#include <cdk.h>
static char *types[4];
int main(int argc, char *argv[])
{
CDKSCREEN *cdkscreen;
CDKSCROLL *CDKScroll;
WINDOW *screen;
int id_type;
char temp[256], *mesg[10];
// инициализация
screen = initscr();
cdkscreen = initCDKScreen(screen);
initCDKColor();
// заполняем список
types[0] = "CD";
types[1] = "DVD";
types[2] = "Floppy";
types[3] = "ZIP";
//создаём виджет
CDKScroll = newCDKScroll(cdkscreen,
CENTER, CENTER, RIGHT,
8, 20,
"Носитель:", types, 4,
TRUE, A_REVERSE,
TRUE, FALSE);
setCDKScrollPosition(CDKScroll, 2);
insertCDKScrollItem(CDKScroll, "Flash");
//ждём ввода
id_type = activateCDKScroll(CDKScroll, 0);
// выводим выбранный элемент
if (CDKScroll->exitType == vNORMAL)
{
sprintf (temp, "(%s)", chtype2Char(CDKScroll->item[id_type]));
mesg[0] = temp;
popupLabel (cdkscreen, mesg, 1);
}
//освобождаем ресурсы
destroyCDKScroll(CDKScroll);
destroyCDKScreen(cdkscreen);
endCDK();
return 0;
}