Entry - однострочное поле ввода.

Данный виджет позволяет осуществлять ввод строки. Можно задать максимально допустимое и минимально необходимое число символов. Есть возможность скрывать введённый символ заданным (что так необходимо при вводе пароля).

Создание виджета. Возращает ссылку на созданный виджет или NULL, если создать не удалось. В остальных функциях в качестве entry нужно передавать ссылку на созданный виджет.
CDKENTRY *newCDKEntry (CDKSCREEN *cdkscreen, int xpos, int ypos, char *title, char *label, chtype fieldAttribute, chtype fillerCharacter, EDisplayType displayType, int fieldWidth, int minimumLength, int maximumLength, boolean box, boolean shadow);

cdkscreen - ранее созданный CDKSCREEN
xpos, ypos - координаты левого верхнего угла
title - Заголовок. Находится над полем ввода. Может содержать несколько строк. Для перехода на новую строку используется \n.
label - Метка. Находится слева от поля ввода.
fieldAttribute - Атрибуты для отображения вводимой строки.
fillerCharacter - Символ которым заполняется строка ввода.
displayType - Тип редактирования/отображения.
fieldWidth - ширина поля. Если 0, то будет выбрано максимальное значение, если отрицательное, то из максимального будет вычитаться это значение.
minimumLength - минимальное число символов которые должен ввести пользователь.
maximumLength - максимальное число символов которое может ввести пользователь.
box - рамка (TRUE / FALSE) если TRUE будет выведена рамка
shadow - тень (TRUE / FALSE) если TRUE будет выведена тень

Уничтожение виджета.
void destroyCDKEntry (CDKENTRY *entry);

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

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

Прорисовка виджета.
void drawCDKEntry (CDKENTRY *entry, boolean box);

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

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

Получение строки введённой в виджете.
char *getCDKEntryValue (CDKENTRY *entry);

Учтановка строки value в поле ввода.
void setCDKEntryValue (CDKENTRY *entry, char *value);

Очистка поля ввода.
void cleanCDKEntry (CDKENTRY *entry);

Установка состояния виджета.
void setCDKEntry (CDKENTRY *entry, char *value, int minimumLength, int maximumLength, boolean box);

value - значение которое помещается в поле ввода
minimumLength - минимальное число символов которые должен ввести пользователь.
maximumLength - максимальное число символов которое может ввести пользователь.
box - рамка (TRUE / FALSE) если TRUE будет выведена рамка

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

Установка символа которым заполняется пустое пространство в строке ввода.
void setCDKEntryFillerChar (CDKENTRY *entry, chtype character);

Получение символа который выводится при вводе в скрытом режиме.
chtype getCDKEntryHiddenChar (CDKENTRY *entry);

Установка символа который выводится при вводе в скрытом режиме.
void setCDKEntryHiddenChar (CDKENTRY *entry, chtype character);

Получение максимально допустимого количества вводимых символов.
int getCDKEntryMax (CDKENTRY *entry);

Установка максимально допустимого количества вводимых символов.
void setCDKEntryMax (CDKENTRY *entry, int maximum);

Получение минимального числа символов которые нужно ввести.
int getCDKEntryMin (CDKENTRY *entry);

Установка минимального числа символов которые нужно ввести.
void setCDKEntryMin (CDKENTRY *entry, int minimum);

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

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

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

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

Есть ли рамка у виджета.
boolean getCDKEntryBox (CDKENTRY *entry);

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

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

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

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

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

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

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

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

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

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

#include <cdk.h>

int main(int argc, char *argv[])
{
    CDKSCREEN *cdkscreen;
    CDKENTRY *CDKEUsername, *CDKEPassword;
    WINDOW *screen;
    char *username, *password;
    char temp[256], *mesg[10];

    // инициализация    
    screen = initscr();
    cdkscreen = initCDKScreen(screen);
    initCDKColor();

    //создаём виджет для ввода имени пользователя
    CDKEUsername = newCDKEntry(cdkscreen, CENTER, CENTER,
		"Ведите имя пользователя", ">", 
		A_NORMAL, '_', vCHAR,
		20, 3, 10,
		FALSE, FALSE);

    //обновляем экран
    refreshCDKScreen(cdkscreen);
    
    //ждём ввода
    username = activateCDKEntry(CDKEUsername, 0);
    
    // выводим введённые данные
    if (CDKEUsername->exitType == vNORMAL)
    {
        sprintf (temp, "(%s)", username);
	mesg[0] = temp;
        popupLabel (cdkscreen, mesg, 1);
    }
    
    
    //удаляем виджет
    destroyCDKEntry(CDKEUsername);
    

    //создаём виджет для ввода имени пользователя
    CDKEPassword = newCDKEntry(cdkscreen, CENTER, CENTER,
		"Ведите пароль", ">", 
		A_NORMAL, '_', vHMIXED,
		20, 0, 20,
		TRUE, FALSE);

    // устанавливаем символ который будет выводиться в скрытом режиме вместо символа
    setCDKEntryHiddenChar(CDKEPassword, '*');
    
    //обновляем экран
    refreshCDKScreen(cdkscreen);
    
    //ждём ввода
    password = activateCDKEntry(CDKEPassword, 0);
    
    //удаляем виджет
    destroyCDKEntry(CDKEPassword);

    //освобождаем ресурсы
    destroyCDKScreen(cdkscreen);
    endCDK();
    
    return 0;
}

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