Данный виджет позволяет удобно вводить дату.
Создание виджета. Возращает ссылку на созданный виджет или NULL, если создать не удалось.
В остальных функциях в качестве calendar нужно передавать ссылку на созданный виджет.
CDKCALENDAR *newCDKCalendar (CDKSCREEN * cdkscreen, int xpos, int ypos, char *title, int day, int month, int year,
chtype dayAttrib, chtype monthAttrib, chtype yearAttrib, chtype highlight, boolean box, boolean shadow);
Уничтожение виджета.
void eraseCDKCalendar (CDKCALENDAR *calendar);
Удаление виджета с экрана. (Сам виджет не удаляется.)
void destroyCDKCalendar (CDKCALENDAR *calendar);
Установика атрибутов фона виджета attribute.
void setCDKCalendarBackgroundAttrib (CDKCALENDAR *calendar, chtype attribute);
Прорисовка виджета.
void drawCDKCalendar (CDKCALENDAR * calendar , boolean box);
Активация виджета.
Если calendar ->exitType равно vNORMAL при выборе подпункта меню то выход осуществлён клавишами Enter или Tab и vESCAPE_HIT при нажатии Esc
В качестве actions можно передать 0.
time_t activateCDKCalendar (CDKCALENDAR * calendar , chtype *actions);
Получение атрибутов для дня недели, месяца и года.
chtype getCDKCalendarDayAttribute (CDKCALENDAR *calendar);
chtype getCDKCalendarMonthAttribute (CDKCALENDAR *calendar);
chtype getCDKCalendarYearAttribute (CDKCALENDAR *calendar);
Установка атрибутов для дня недели, месяца и года.
void setCDKCalendarDayAttribute (CDKCALENDAR *calendar, chtype attribute);
void setCDKCalendarMonthAttribute (CDKCALENDAR *calendar, chtype attribute);
void setCDKCalendarYearAttribute (CDKCALENDAR *calendar, chtype attribute);
Установка строки с днями недели.
void setCDKCalendarDaysNames (CDKCALENDAR *calendar, char *days);
Установка массива с названиями месяцев.
void setCDKCalendarMonthsNames (CDKCALENDAR *calendar, char **months);
Получение атрибутов дня на котором стит курсор.
chtype getCDKCalendarHighlight (CDKCALENDAR *calendar);
Установка атрибутов дня на котором стит курсор.
void setCDKCalendarHighlight (CDKCALENDAR *calendar, chtype attribute);
Установка маркера для даты.
void setCDKCalendarMarker (CDKCALENDAR *calendar, int day, int month, int year, chtype marker);
Получение маркера для даты.
chtype getCDKCalendarMarker (CDKCALENDAR *calendar, int day, int month, int year);
Удаление маркера для даты.
void removeCDKCalendarMarker (CDKCALENDAR *calendar, int day, int month, int year);
Установка состояния виджета.
void setCDKCalendar (CDKCALENDAR *calendar, int day, int month, int year, chtype dayAttrib, chtype monthAttrib, chtype yearAttrib, chtype highlight, boolean box);
Получение дня на котором стит курсор.
void getCDKCalendarDate (CDKCALENDAR * calendar , int *day, int *month, int *year);
Установка дня на котором стит курсор.
void setCDKCalendarDate (CDKCALENDAR *calendar, int day, int month, int year);
Перемещение виджета.
void moveCDKCalendar (CDKCALENDAR *calendar, int xpos, int ypos, boolean relative, boolean refresh);
Управление положением виджета клавишами курсора.
void positionCDKCalendar (CDKCALENDAR *calendar);
Есть ли рамка у виджета.
boolean getCDKCalendarBox (CDKCALENDAR *calendar);
Изменить наличие рамки в виджете.
void setCDKCalendarBox (CDKCALENDAR *calendar, boolean box);
Установка атрибутов attribute для рамки.
setCDKCalendarBoxAttribute (CDKCALENDAR *calendar, chtype ch);
Установка символа character выводимого по горизонтали рамки.
void setCDKCalendarHorizontalChar (CDKCALENDAR *calendar, chtype ch);
Установка символа character выводимого по вертикали рамки.
setCDKCalendarVerticalChar (CDKCALENDAR *calendar, chtype ch);
Установка символа character выводимого в левом нижнем углу рамки.
void setCDKCalendarLLChar (CDKCALENDAR *calendar, chtype ch);
Установка символа character выводимого в правом нижнем углу рамки.
void setCDKCalendarLRChar (CDKCALENDAR *calendar, chtype ch);
Установка символа character выводимого в левом верхнем углу рамки.
setCDKCalendarULChar (CDKCALENDAR *calendar, chtype ch);
Установка символа character выводимого в правом верхнем углу рамки.
setCDKCalendarURChar (CDKCALENDAR *calendar, chtype ch);
/*
w_calendar.c - пример простой программы демонстрирующей
возможности виджета Calendar библиотеки CDK.
(C) Copyright 2006 Бердников Александр alexber220@yandex.ru
Данная программа распростаняется по лицензии BSD.
*/
#include <cdk.h>
int main(int argc, char *argv[])
{
CDKSCREEN *cdkscreen;
CDKCALENDAR *calendar;
WINDOW *screen;
time_t date;
char *month[13];
char temp[256], *mesg[4];
// инициализация
screen = initscr();
cdkscreen = initCDKScreen(screen);
initCDKColor();
//создаём виджет
calendar = newCDKCalendar(cdkscreen, CENTER, CENTER, "День рождения:",
1, 1, 2001,
COLOR_PAIR(16)|A_BOLD, COLOR_PAIR(16)|A_BOLD, COLOR_PAIR(16)|A_BOLD,
A_REVERSE, TRUE, FALSE);
//русифицируем
month[1] = "Январь";
month[2] = "Февраль";
month[3] = "Март";
month[4] = "Апрель";
month[5] = "Май";
month[6] = "Июнь";
month[7] = "Июль";
month[8] = "Август";
month[9] = "Сентябрь";
month[10] = "Октябрь";
month[11] = "Ноябрь";
month[12] = "Декабрь";
setCDKCalendarDaysNames(calendar, "Вс Пн Вт Ср Чт Пт Сб");
setCDKCalendarMonthsNames(calendar, month);
//прорисовываем её
drawCDKCalendar(calendar, TRUE);
//ждём ввода
date = activateCDKCalendar(calendar, 0);
// выводим введённые данные
if (calendar->exitType == vNORMAL)
{
sprintf (temp, "Выбранная дата:%02d/%02d/%d",
calendar->day, calendar->month, calendar->year);
mesg[0] = temp;
popupLabel (cdkscreen, mesg, 1);
}
//освобождаем ресурсы
destroyCDKCalendar(calendar);
destroyCDKScreen(cdkscreen);
endCDK();
return 0;
}