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