Item list - выбор из списка.

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

cdkscreen - ранее созданный CDKSCREEN
xpos, ypos - координаты левого верхнего угла
title - Заголовок. Находится над полем ввода. Может содержать несколько строк. Для перехода на новую строку используется \n.
label - Метка. Находится слева от поля ввода.
itemList - Список значений.
itemCount - Количество элементов в списке значений.
defaultItem - номер элемента по умолчанию.
box - рамка (TRUE / FALSE) если TRUE будет выведена рамка
shadow - тень (TRUE / FALSE) если TRUE будет выведена тень

Уничтожение виджета.
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);

itemList - Список значений.
itemCount - Количество элементов в списке значений.
currentSelection - номер текущего элемента.
box - рамка (TRUE / FALSE) если TRUE будет выведена рамка

Перемещение виджета.
void moveCDKItemlist (CDKITEMLIST *itemlist, int xpos, int ypos, boolean relative, boolean refresh);

xpos, ypos - координаты левого верхнего угла новой позиции
relative - (TRUE / FALSE) если TRUE новые координаты высчитываются от текущего положения виджета, иначе от верхнего левого угла экрана
refresh - обновить после перемещения (TRUE / FALSE)

Управление положением виджета клавишами курсора.
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;
}

(C) Copyright 2006 Бердников Александр
Hosted by uCoz