Template - однострочное поле ввода по шаблону.

Данный виджет позволяет осуществлять ввод строки по шаблону. В шаблоне указывается набор допустимых символов для каждой позиции.

Создание виджета. Возращает ссылку на созданный виджет или NULL, если создать не удалось. В остальных функциях в качестве template нужно передавать ссылку на созданный виджет.
CDKTEMPLATE *newCDKTemplate (CDKSCREEN *cdkscreen, int xpos, int ypos, char *title, char *label, char *plate, char *overlay, boolean box, boolean shadow);

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

Символы шаблона:

# - цифра
A - буква
C - буква. После ввода преобразуется к верхнему регистру
c - буква. После ввода преобразуется к нижнему регистру
M - буква или цифра
X - буква или цифра. После ввода преобразуется к верхнему регистру
x - буква или цифра. После ввода преобразуется к нижнему регистру
любой другой - игнорируемый и не редактируемый символ

Уничтожение виджета.
void destroyCDKTemplate (CDKTEMPLATE *template);

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

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

Прорисовка виджета.
void drawCDKTemplate (CDKTEMPLATE *template, boolean box);

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

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

Получение строки введённой в виджете.
char *getCDKTemplateValue (CDKTEMPLATE *template);

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

Очистка поля ввода.
void cleanCDKTemplate (CDKTEMPLATE *template);

Установка состояния виджета.
void setCDKTemplate (CDKTEMPLATE *template, char *value, boolean box);

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

Получение строки шаблона.
char *mixCDKTemplate (CDKTEMPLATE *template);

Установка шаблона plate.
char *unmixCDKTemplate (CDKTEMPLATE *template, char *plate);

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

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

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

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

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

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

Есть ли рамка у виджета.
boolean getCDKTemplateBox (CDKTEMPLATE *template);

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

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

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

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

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

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

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

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

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

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

#include <cdk.h>

int main(int argc, char *argv[])
{
    CDKSCREEN *cdkscreen;
    CDKENTRY *CDKPhone;
    WINDOW *screen;
    char *phone;

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

    //создаём виджет для ввода телефона
    CDKPhone = newCDKTemplate(cdkscreen, CENTER, CENTER,
		"", "Телефон:", "(###) #######","(___) _______",
		FALSE, FALSE);

    //обновляем экран
    refreshCDKScreen(cdkscreen);
    
    //ждём ввода
    phone = activateCDKTemplate(CDKPhone, 0);

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

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