Radio List - список c выбором одного элемента.

Данный виджет может служить для выбора одного элемента из заданных.

Создание виджета. Возращает ссылку на созданный виджет или NULL, если создать не удалось. В остальных функциях в качестве radio нужно передавать ссылку на созданный виджет.
CDKRADIO *newCDKRadio (CDKSCREEN *cdkscreen, int xpos, int ypos, int spos, int height, int width, char *title, char **radioList, int radioListLength, chtype choiceCharacter, int defaultItem, chtype highlight, boolean box, boolean shadow);

cdkscreen - ранее созданный CDKSCREEN
xpos, ypos - координаты левого верхнего угла
spos - Положение прокрутки. (LEFT - слева, RIGHT- справа, NONE - без области прокрутки)
height, width - Размеры виджета.
title - Заголовок. Находится над полем ввода. Может содержать несколько строк. Для перехода на новую строку используется \n.
radioList - Список значений.
radioListLength - Количество элементов в списке значений.
choiceCharacter - символ выводящийся у выбранного элемента.
defaultItem - номер элемента по умолчанию.
highlight - атрибуты выделенного элемента списка.(Например: A_REVERSE)
box - рамка (TRUE / FALSE) если TRUE будет выведена рамка
shadow - тень (TRUE / FALSE) если TRUE будет выведена тень

Уничтожение виджета.
void destroyCDKRadio (CDKRADIO *radio);

Удаление виджета с экрана. (Сам виджет не удаляется.)
void eraseCDKRadio (CDKRADIO *radio);

Установика атрибутов фона виджета attribute.
void setCDKRadioBackgroundAttrib (CDKRADIO *radio, chtype attribute);

Прорисовка виджета.
void drawCDKRadio (CDKRADIO *radio, boolean box);

Активация виджета. Возращает 1, если выход из виджета осуществлён клавишей Tab или Enter. Если radio->exitType равно vNORMAL при выборе подпункта меню то выход осуществлён клавишами Enter или Tab и vESCAPE_HIT при нажатии Esc В качестве actions можно передать 0.
int activateCDKRadio (CDKRADIO *radio, chtype *actions);

Функции получения и изменения состояния.

Получение номера выбранного элемента списка.
int getCDKRadioSelectedItem (CDKRADIO *radio);

Установка номера выбранного элемента списка item.
void setCDKRadioSelectedItem (CDKRADIO *radio, int item);

Получение номера текущего элемента списка.
int getCDKRadioCurrentItem (CDKRADIO *radio);

Установка текущего элемента списка.
void setCDKRadioCurrentItem (CDKRADIO *radio, int index);

Получение элементов списка.
int getCDKRadioItems (CDKRADIO *radio, char **list);

Установка элементов списка.
void setCDKRadioItems (CDKRADIO *radio, char **list, int listSize);

list - массив строк значений
listSize - число строк в массиве.

Получение символа выбора.
chtype getCDKRadioChoiceCharacter (CDKRADIO *radio);

Установка символа выбора.
void setCDKRadioChoiceCharacter (CDKRADIO *radio, chtype character);

Установка состояния виджета.
void setCDKRadio (CDKRADIO *radio, chtype highlight, chtype choiceCharacter, boolean box);

highlight - атрибуты выделенного элемента списка.(Например: A_REVERSE)
choiceCharacter - символ выбора.
box - рамка (TRUE / FALSE) если TRUE будет выведена рамка

Получение символа использующегося слева от символа выбора.
chtype getCDKRadioLeftBrace (CDKRADIO *radio);

Установка символа использующегося слева от символа выбора.
void setCDKRadioLeftBrace (CDKRADIO *radio, chtype character);

Получение символа использующегося справа от символа выбора.
chtype getCDKRadioRightBrace (CDKRADIO *radio);

Установка символа использующегося справа от символа выбора.
void setCDKRadioRightBrace (CDKRADIO *radio, chtype character);

Получение атрибутов выделенного элемента списка.
chtype getCDKRadioHighlight (CDKRADIO *radio);

Установка атрибутов выделенного элемента списка.
void setCDKRadioHighlight (CDKRADIO *radio, chtype highlight);

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

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

Управление положением виджета клавишами курсора.
void positionCDKRadio (CDKRADIO *radio);

Функции управления рамкой.

Есть ли рамка у виджета.
boolean getCDKRadioBox (CDKRADIO *radio);

Изменить наличие рамки в виджете.
void setCDKRadioBox (CDKRADIO *radio, boolean box);

Установка атрибутов attribute для рамки.
void setCDKRadioBoxAttribute (CDKRADIO *radio, chtype character);

Установка символа character выводимого по горизонтали рамки.
void setCDKRadioHorizontalChar (CDKRADIO *radio, chtype character);

Установка символа character выводимого по вертикали рамки.
void setCDKRadioVerticalChar (CDKRADIO *radio, chtype character);

Установка символа character выводимого в левом нижнем углу рамки.
void setCDKRadioLLChar (CDKRADIO *radio, chtype character);

Установка символа character выводимого в правом нижнем углу рамки.
void setCDKRadioLRChar (CDKRADIO *radio, chtype character);

Установка символа character выводимого в левом верхнем углу рамки.
void setCDKRadioULChar (CDKRADIO *radio, chtype character);

Установка символа character выводимого в правом верхнем углу рамки.
void setCDKRadioURChar (CDKRADIO *radio, chtype character);

Пример использования.

/*
    w_radio.c - пример простой программы демонстрирующей
	        возможности виджета Radio list библиотеки CDK.
		
    (C) Copyright 2006 Бердников Александр alexber220@yandex.ru
    Данная программа распростаняется по лицензии BSD.
*/

#include <cdk.h>

static char *types[4];

int main(int argc, char *argv[])
{
    CDKSCREEN *cdkscreen;
    CDKRADIO *CDKRadio;
    WINDOW *screen;
    char temp[256], *mesg[200];
    int id;
    
    // инициализация
    screen = initscr();
    cdkscreen = initCDKScreen(screen);
    initCDKColor();

    // заполняем список
    types[0] = "CD";
    types[1] = "DVD";
    types[2] = "Floppy";
    types[3] = "ZIP";

    //создаём виджет
    CDKRadio = newCDKRadio(cdkscreen, 
		CENTER, CENTER, RIGHT,
		8, 20,
		"Носители:", 
		types, 4,
		'*', 0,
		A_REVERSE,
		TRUE, FALSE);
		
    //ждём ввода
    id = activateCDKRadio(CDKRadio, 0);
    
    // выводим выбранный элемент
    if (CDKRadio->exitType == vNORMAL)
    {
        sprintf(temp, "%.*s", (int)(sizeof(temp) - 20), types[id]);
        mesg[0] = copyChar (temp);
	popupLabel (cdkscreen, mesg, 1);
    }

    //освобождаем ресурсы
    destroyCDKRadio(CDKRadio);
    destroyCDKScreen(cdkscreen);
    endCDK();

    return 0;
}

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