| 1 | /* GTK - The GIMP Toolkit | 
| 2 |  * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald | 
| 3 |  * | 
| 4 |  * GTK Calendar Widget | 
| 5 |  * Copyright (C) 1998 Cesar Miquel and Shawn T. Amundson | 
| 6 |  * | 
| 7 |  * This library is free software; you can redistribute it and/or | 
| 8 |  * modify it under the terms of the GNU Lesser General Public | 
| 9 |  * License as published by the Free Software Foundation; either | 
| 10 |  * version 2 of the License, or (at your option) any later version. | 
| 11 |  * | 
| 12 |  * This library is distributed in the hope that it will be useful, | 
| 13 |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| 14 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the GNU | 
| 15 |  * Lesser General Public License for more details. | 
| 16 |  * | 
| 17 |  * You should have received a copy of the GNU Lesser General Public | 
| 18 |  * License along with this library. If not, see <http://www.gnu.org/licenses/>. | 
| 19 |  */ | 
| 20 |  | 
| 21 | /* | 
| 22 |  * Modified by the GTK+ Team and others 1997-2000.  See the AUTHORS | 
| 23 |  * file for a list of people on the GTK+ Team.  See the ChangeLog | 
| 24 |  * files for a list of changes.  These files are distributed with | 
| 25 |  * GTK+ at ftp://ftp.gtk.org/pub/gtk/. | 
| 26 |  */ | 
| 27 |  | 
| 28 | #ifndef __GTK_CALENDAR_H__ | 
| 29 | #define __GTK_CALENDAR_H__ | 
| 30 |  | 
| 31 |  | 
| 32 | #if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) | 
| 33 | #error "Only <gtk/gtk.h> can be included directly." | 
| 34 | #endif | 
| 35 |  | 
| 36 | #include <gtk/gtkwidget.h> | 
| 37 |  | 
| 38 |  | 
| 39 | G_BEGIN_DECLS | 
| 40 |  | 
| 41 | #define GTK_TYPE_CALENDAR                  (gtk_calendar_get_type ()) | 
| 42 | #define GTK_CALENDAR(obj)                  (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_CALENDAR, GtkCalendar)) | 
| 43 | #define GTK_CALENDAR_CLASS(klass)          (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_CALENDAR, GtkCalendarClass)) | 
| 44 | #define GTK_IS_CALENDAR(obj)               (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_CALENDAR)) | 
| 45 | #define GTK_IS_CALENDAR_CLASS(klass)       (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_CALENDAR)) | 
| 46 | #define GTK_CALENDAR_GET_CLASS(obj)        (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_CALENDAR, GtkCalendarClass)) | 
| 47 |  | 
| 48 |  | 
| 49 | typedef struct _GtkCalendar	       GtkCalendar; | 
| 50 | typedef struct _GtkCalendarClass       GtkCalendarClass; | 
| 51 |  | 
| 52 | typedef struct _GtkCalendarPrivate     GtkCalendarPrivate; | 
| 53 |  | 
| 54 | /** | 
| 55 |  * GtkCalendarDisplayOptions: | 
| 56 |  * @GTK_CALENDAR_SHOW_HEADING: Specifies that the month and year should be displayed. | 
| 57 |  * @GTK_CALENDAR_SHOW_DAY_NAMES: Specifies that three letter day descriptions should be present. | 
| 58 |  * @GTK_CALENDAR_NO_MONTH_CHANGE: Prevents the user from switching months with the calendar. | 
| 59 |  * @GTK_CALENDAR_SHOW_WEEK_NUMBERS: Displays each week numbers of the current year, down the | 
| 60 |  * left side of the calendar. | 
| 61 |  * @GTK_CALENDAR_SHOW_DETAILS: Just show an indicator, not the full details | 
| 62 |  * text when details are provided. See gtk_calendar_set_detail_func(). | 
| 63 |  * | 
| 64 |  * These options can be used to influence the display and behaviour of a #GtkCalendar. | 
| 65 |  */ | 
| 66 | typedef enum | 
| 67 | { | 
| 68 |   GTK_CALENDAR_SHOW_HEADING		= 1 << 0, | 
| 69 |   GTK_CALENDAR_SHOW_DAY_NAMES		= 1 << 1, | 
| 70 |   GTK_CALENDAR_NO_MONTH_CHANGE		= 1 << 2, | 
| 71 |   GTK_CALENDAR_SHOW_WEEK_NUMBERS	= 1 << 3, | 
| 72 |   GTK_CALENDAR_SHOW_DETAILS		= 1 << 5 | 
| 73 | } GtkCalendarDisplayOptions; | 
| 74 |  | 
| 75 | /** | 
| 76 |  * GtkCalendarDetailFunc: | 
| 77 |  * @calendar: a #GtkCalendar. | 
| 78 |  * @year: the year for which details are needed. | 
| 79 |  * @month: the month for which details are needed. | 
| 80 |  * @day: the day of @month for which details are needed. | 
| 81 |  * @user_data: the data passed with gtk_calendar_set_detail_func(). | 
| 82 |  * | 
| 83 |  * This kind of functions provide Pango markup with detail information for the | 
| 84 |  * specified day. Examples for such details are holidays or appointments. The | 
| 85 |  * function returns %NULL when no information is available. | 
| 86 |  * | 
| 87 |  * Since: 2.14 | 
| 88 |  * | 
| 89 |  * Returns: (nullable) (transfer full): Newly allocated string with Pango markup | 
| 90 |  *     with details for the specified day or %NULL. | 
| 91 |  */ | 
| 92 | typedef gchar* (*GtkCalendarDetailFunc) (GtkCalendar *calendar, | 
| 93 |                                          guint        year, | 
| 94 |                                          guint        month, | 
| 95 |                                          guint        day, | 
| 96 |                                          gpointer     user_data); | 
| 97 |  | 
| 98 | struct _GtkCalendar | 
| 99 | { | 
| 100 |   GtkWidget widget; | 
| 101 |  | 
| 102 |   GtkCalendarPrivate *priv; | 
| 103 | }; | 
| 104 |  | 
| 105 | struct _GtkCalendarClass | 
| 106 | { | 
| 107 |   GtkWidgetClass parent_class; | 
| 108 |    | 
| 109 |   /* Signal handlers */ | 
| 110 |   void (* month_changed)		(GtkCalendar *calendar); | 
| 111 |   void (* day_selected)			(GtkCalendar *calendar); | 
| 112 |   void (* day_selected_double_click)	(GtkCalendar *calendar); | 
| 113 |   void (* prev_month)			(GtkCalendar *calendar); | 
| 114 |   void (* next_month)			(GtkCalendar *calendar); | 
| 115 |   void (* prev_year)			(GtkCalendar *calendar); | 
| 116 |   void (* next_year)			(GtkCalendar *calendar); | 
| 117 |  | 
| 118 |   /* Padding for future expansion */ | 
| 119 |   void (*_gtk_reserved1) (void); | 
| 120 |   void (*_gtk_reserved2) (void); | 
| 121 |   void (*_gtk_reserved3) (void); | 
| 122 |   void (*_gtk_reserved4) (void); | 
| 123 | }; | 
| 124 |  | 
| 125 |  | 
| 126 | GDK_AVAILABLE_IN_ALL | 
| 127 | GType	   gtk_calendar_get_type	(void) G_GNUC_CONST; | 
| 128 | GDK_AVAILABLE_IN_ALL | 
| 129 | GtkWidget* gtk_calendar_new		(void); | 
| 130 |  | 
| 131 | GDK_AVAILABLE_IN_ALL | 
| 132 | void       gtk_calendar_select_month	(GtkCalendar *calendar, | 
| 133 | 					 guint	      month, | 
| 134 | 					 guint	      year); | 
| 135 | GDK_AVAILABLE_IN_ALL | 
| 136 | void	   gtk_calendar_select_day	(GtkCalendar *calendar, | 
| 137 | 					 guint	      day); | 
| 138 |  | 
| 139 | GDK_AVAILABLE_IN_ALL | 
| 140 | void       gtk_calendar_mark_day	(GtkCalendar *calendar, | 
| 141 | 					 guint	      day); | 
| 142 | GDK_AVAILABLE_IN_ALL | 
| 143 | void       gtk_calendar_unmark_day	(GtkCalendar *calendar, | 
| 144 | 					 guint	      day); | 
| 145 | GDK_AVAILABLE_IN_ALL | 
| 146 | void	   gtk_calendar_clear_marks	(GtkCalendar *calendar); | 
| 147 |  | 
| 148 |  | 
| 149 | GDK_AVAILABLE_IN_ALL | 
| 150 | void	   gtk_calendar_set_display_options (GtkCalendar    	      *calendar, | 
| 151 | 					     GtkCalendarDisplayOptions flags); | 
| 152 | GDK_AVAILABLE_IN_ALL | 
| 153 | GtkCalendarDisplayOptions | 
| 154 |            gtk_calendar_get_display_options (GtkCalendar   	      *calendar); | 
| 155 | GDK_AVAILABLE_IN_ALL | 
| 156 | void	   gtk_calendar_get_date	(GtkCalendar *calendar,  | 
| 157 | 					 guint	     *year, | 
| 158 | 					 guint	     *month, | 
| 159 | 					 guint	     *day); | 
| 160 |  | 
| 161 | GDK_AVAILABLE_IN_ALL | 
| 162 | void       gtk_calendar_set_detail_func (GtkCalendar           *calendar, | 
| 163 |                                          GtkCalendarDetailFunc  func, | 
| 164 |                                          gpointer               data, | 
| 165 |                                          GDestroyNotify         destroy); | 
| 166 |  | 
| 167 | GDK_AVAILABLE_IN_ALL | 
| 168 | void       gtk_calendar_set_detail_width_chars (GtkCalendar    *calendar, | 
| 169 |                                                 gint            chars); | 
| 170 | GDK_AVAILABLE_IN_ALL | 
| 171 | void       gtk_calendar_set_detail_height_rows (GtkCalendar    *calendar, | 
| 172 |                                                 gint            rows); | 
| 173 |  | 
| 174 | GDK_AVAILABLE_IN_ALL | 
| 175 | gint       gtk_calendar_get_detail_width_chars (GtkCalendar    *calendar); | 
| 176 | GDK_AVAILABLE_IN_ALL | 
| 177 | gint       gtk_calendar_get_detail_height_rows (GtkCalendar    *calendar); | 
| 178 |  | 
| 179 | GDK_AVAILABLE_IN_ALL | 
| 180 | gboolean   gtk_calendar_get_day_is_marked      (GtkCalendar    *calendar, | 
| 181 |                                                 guint           day); | 
| 182 |  | 
| 183 | G_END_DECLS | 
| 184 |  | 
| 185 | #endif /* __GTK_CALENDAR_H__ */ | 
| 186 |  |