<!-- ##### SECTION Title ##### -->
GtkCalendar

<!-- ##### SECTION Short_Description ##### -->
display a calendar and/or allow the user to select a date.

<!-- ##### SECTION Long_Description ##### -->
<para>
#GtkCalendar is a widget that displays a calendar, one month at a time. 
It can be created with gtk_calendar_new().
</para>
<para>
The month and year currently displayed can be altered with 
gtk_calendar_select_month(). The exact day can be selected from the displayed 
month using gtk_calendar_select_day().
</para>
<para>
To place a visual marker on a particular day, use gtk_calendar_mark_day() 
and to remove the marker, gtk_calendar_unmark_day().
Alternative, all marks can be cleared with gtk_calendar_clear_marks().
</para>
<para>
The way in which the calendar itself is displayed can be altered using
gtk_calendar_display_options().
</para>
<para>
The selected date can be retrieved from a #GtkCalendar using
gtk_calendar_get_date().
</para>
<para>
If performing many 'mark' operations, the calendar can be frozen to prevent
flicker, using gtk_calendar_freeze(), and 'thawed' again using
gtk_calendar_thaw().
</para>

<!-- ##### SECTION See_Also ##### -->
<para>

</para>

<!-- ##### STRUCT GtkCalendar ##### -->
<para>
<structfield>num_marked_dates</structfield> is an integer containing the
number of days that have a mark over them.
</para>
<para>
<structfield>marked_date</structfield> is an array containing the day numbers
that currently have a mark over them.
</para>
<para>
<structfield>month</structfield>, <structfield>year</structfield>, and 
<structfield>selected_day</structfield> contain the currently visible month,
year, and selected day respectively.
</para>
<para>
All of these fields should be considered read only, and everything in this
struct should only be modified using the functions provided below.
</para>
<note>
<para>
Note that <structfield>month</structfield> is zero-based (i.e it allowed values
are 0-11) while <structfield>selected_day</structfield> is one-based
(i.e. allowed values are 1-31). 
</para>
</note>


<!-- ##### ENUM GtkCalendarDisplayOptions ##### -->
<para>
<informaltable pgwide=1 frame="none" role="enum">
<tgroup cols="2"><colspec colwidth="*"><colspec colwidth="8*">
<tbody>

<row>
<entry>GTK_CALENDAR_SHOW_HEADING</entry>
<entry>Specifies that the month and year should be displayed.</entry>
</row>
<row>
<entry>GTK_CALENDAR_SHOW_DAY_NAMES</entry>
<entry>Specifies that three letter day descriptions should be present.</entry>
</row>
<row>
<entry>GTK_CALENDAR_NO_MONTH_CHANGE</entry>
<entry>Prevents the user from switching months with the calendar.</entry>
</row>
<row>
<entry>GTK_CALENDAR_SHOW_WEEK_NUMBERS</entry>
<entry>Displays each week numbers of the current year, down the left side of
the calendar.</entry>
</row>
<row>
<entry>GTK_CALENDAR_WEEK_START_MONDAY</entry>
<entry>Starts the calendar week on Monday, instead of the default Sunday.</entry>
</row>

</tbody></tgroup></informaltable>
</para>

@GTK_CALENDAR_SHOW_HEADING: 
@GTK_CALENDAR_SHOW_DAY_NAMES: 
@GTK_CALENDAR_NO_MONTH_CHANGE: 
@GTK_CALENDAR_SHOW_WEEK_NUMBERS: 
@GTK_CALENDAR_WEEK_START_MONDAY: 

<!-- ##### FUNCTION gtk_calendar_new ##### -->
<para>
Creates a new calendar, with the current date being selected. 
</para>

@Returns: a #GtkCalendar.


<!-- ##### FUNCTION gtk_calendar_select_month ##### -->
<para>
Shifts the calendar to a different month.
</para>

@calendar: a #GtkCalendar.
@month: a month number between 0 and 11.
@year: the year the month is in.
@Returns: %TRUE.


<!-- ##### FUNCTION gtk_calendar_select_day ##### -->
<para>
Selects a day from the current month.
</para>

@calendar: a #GtkCalendar.
@day: the day number between 1 and 31, or 0 to unselect 
   the currently selected day.


<!-- ##### FUNCTION gtk_calendar_mark_day ##### -->
<para>
Places a visual marker on a particular day.
</para>

@calendar: a #GtkCalendar.
@day: the day number to mark between 1 and 31.
@Returns: %TRUE.


<!-- ##### FUNCTION gtk_calendar_unmark_day ##### -->
<para>
Removes the visual marker from a particular day.
</para>

@calendar: a #GtkCalendar.
@day: the day number to unmark between 1 and 31.
@Returns: %TRUE.


<!-- ##### FUNCTION gtk_calendar_clear_marks ##### -->
<para>
Remove all visual markers.
</para>

@calendar: a #GtkCalendar.


<!-- ##### FUNCTION gtk_calendar_display_options ##### -->
<para>
Sets display options (whether to display the heading and the month headings).
</para>

@calendar: a #GtkCalendar.
@flags: the display options to set.


<!-- ##### FUNCTION gtk_calendar_get_date ##### -->
<para>
Obtains the selected date from a #GtkCalendar.
</para>

@calendar: a #GtkCalendar.
@year: location to store the year number.
@month: location to store the month number.
@day: location to store the day number.


<!-- ##### FUNCTION gtk_calendar_freeze ##### -->
<para>
Locks the display of the calendar until it is thawed with gtk_calendar_thaw().
</para>

@calendar: a #GtkCalendar.


<!-- ##### FUNCTION gtk_calendar_thaw ##### -->
<para>
Defrosts a calendar; all the changes made since the last
gtk_calendar_freeze() are displayed.
</para>

@calendar: a #GtkCalendar.


<!-- ##### SIGNAL GtkCalendar::day-selected ##### -->
<para>
Emitted when the user selects a day.
</para>

@calendar: the object which received the signal.

<!-- ##### SIGNAL GtkCalendar::day-selected-double-click ##### -->
<para>

</para>

@calendar: the object which received the signal.

<!-- ##### SIGNAL GtkCalendar::month-changed ##### -->
<para>
Emitted when the user clicks a button to change the selected month on a
calendar.
</para>

@calendar: the object which received the signal.

<!-- ##### SIGNAL GtkCalendar::next-month ##### -->
<para>

</para>

@calendar: the object which received the signal.

<!-- ##### SIGNAL GtkCalendar::next-year ##### -->
<para>

</para>

@calendar: the object which received the signal.

<!-- ##### SIGNAL GtkCalendar::prev-month ##### -->
<para>

</para>

@calendar: the object which received the signal.

<!-- ##### SIGNAL GtkCalendar::prev-year ##### -->
<para>

</para>

@calendar: the object which received the signal.

