Alphalist - строка ввода со списком готовых значений.

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

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

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

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

list - Массив строк с значениями.
listSize - Количество элементов в списке.
fillerCharacter - Символ которым заполняется строка ввода.
highlight - атрибуты выделенного элемента списка.(Например: A_REVERSE)
box - рамка (TRUE / FALSE) если TRUE будет выведена рамка

Получение символа которым заполняется пустое пространство в строке ввода.
chtype getCDKAlphalistFillerChar (CDKALPHALIST *alphalist);

Установка символа которым заполняется пустое пространство в строке ввода.
void setCDKAlphalistFillerChar (CDKALPHALIST *alphalist, chtype fillerCharacter);

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

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

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


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