gtkcalendar.h 4.07 KB
Newer Older
1 2 3 4 5 6 7
/* GTK - The GIMP Toolkit
 * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
 *
 * GTK Calendar Widget
 * Copyright (C) 1998 Cesar Miquel and Shawn T. Amundson
 *
 * This library is free software; you can redistribute it and/or
8
 * modify it under the terms of the GNU Lesser General Public
9 10 11 12 13
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * 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 19 20
 * License along with this library; if not, write to the Free
 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
21 22

/*
23
 * Modified by the GTK+ Team and others 1997-2000.  See the AUTHORS
24 25 26 27 28
 * file for a list of people on the GTK+ Team.  See the ChangeLog
 * files for a list of changes.  These files are distributed with
 * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 
 */

29 30 31 32 33 34
#ifndef __GTK_CALENDAR_H__
#define __GTK_CALENDAR_H__

#include <gdk/gdk.h>
#include <gtk/gtksignal.h>
#include <gtk/gtkwidget.h>
35

36 37 38 39 40 41

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */


Tim Janik's avatar
Tim Janik committed
42 43 44 45 46 47
#define GTK_TYPE_CALENDAR                  (gtk_calendar_get_type ())
#define GTK_CALENDAR(obj)                  (GTK_CHECK_CAST ((obj), GTK_TYPE_CALENDAR, GtkCalendar))
#define GTK_CALENDAR_CLASS(klass)          (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_CALENDAR, GtkCalendarClass))
#define GTK_IS_CALENDAR(obj)               (GTK_CHECK_TYPE ((obj), GTK_TYPE_CALENDAR))
#define GTK_IS_CALENDAR_CLASS(klass)       (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_CALENDAR))
#define GTK_CALENDAR_GET_CLASS(obj)        (GTK_CHECK_GET_CLASS ((obj), GTK_TYPE_CALENDAR, GtkCalendarClass))
48 49 50


typedef struct _GtkCalendar	       GtkCalendar;
51 52 53 54
typedef struct _GtkCalendarClass       GtkCalendarClass;

typedef enum
{
55 56 57 58
  GTK_CALENDAR_SHOW_HEADING		= 1 << 0,
  GTK_CALENDAR_SHOW_DAY_NAMES		= 1 << 1,
  GTK_CALENDAR_NO_MONTH_CHANGE		= 1 << 2,
  GTK_CALENDAR_SHOW_WEEK_NUMBERS	= 1 << 3,
59 60 61 62 63 64
  GTK_CALENDAR_WEEK_START_MONDAY	= 1 << 4
} GtkCalendarDisplayOptions;

struct _GtkCalendar
{
  GtkWidget widget;
65
  
66 67
  GtkStyle  *header_style;
  GtkStyle  *label_style;
68
  
69 70 71
  gint month;
  gint year;
  gint selected_day;
72
  
73 74
  gint day_month[6][7];
  gint day[6][7];
75
  
76 77 78 79
  gint num_marked_dates;
  gint marked_date[31];
  GtkCalendarDisplayOptions  display_flags;
  GdkColor marked_date_color[31];
80
  
81
  GdkGC *gc;
82 83 84 85 86 87 88
  GdkGC *xor_gc;

  gint focus_row;
  gint focus_col;

  gint highlight_row;
  gint highlight_col;
89
  
90
  gpointer private_data;
91
  gchar grow_space [32];
92 93 94 95 96
};

struct _GtkCalendarClass
{
  GtkWidgetClass parent_class;
97
  
98
  /* Signal handlers */
99 100 101 102 103 104 105
  void (* month_changed)		(GtkCalendar *calendar);
  void (* day_selected)			(GtkCalendar *calendar);
  void (* day_selected_double_click)	(GtkCalendar *calendar);
  void (* prev_month)			(GtkCalendar *calendar);
  void (* next_month)			(GtkCalendar *calendar);
  void (* prev_year)			(GtkCalendar *calendar);
  void (* next_year)			(GtkCalendar *calendar);
106
  
107 108 109
};


Elliot Lee's avatar
Elliot Lee committed
110
GtkType	   gtk_calendar_get_type	(void) G_GNUC_CONST;
111 112
GtkWidget* gtk_calendar_new		(void);

113
gboolean   gtk_calendar_select_month	(GtkCalendar *calendar, 
114 115 116 117 118
					 guint	      month,
					 guint	      year);
void	   gtk_calendar_select_day	(GtkCalendar *calendar,
					 guint	      day);

119
gboolean   gtk_calendar_mark_day	(GtkCalendar *calendar,
120
					 guint	      day);
121
gboolean   gtk_calendar_unmark_day	(GtkCalendar *calendar,
122 123 124 125 126 127
					 guint	      day);
void	   gtk_calendar_clear_marks	(GtkCalendar *calendar);


void	   gtk_calendar_display_options (GtkCalendar		  *calendar,
					 GtkCalendarDisplayOptions flags);
128

129 130 131 132 133 134
void	   gtk_calendar_get_date	(GtkCalendar *calendar, 
					 guint	     *year,
					 guint	     *month,
					 guint	     *day);
void	   gtk_calendar_freeze		(GtkCalendar *calendar);
void	   gtk_calendar_thaw		(GtkCalendar *calendar);
135 136 137 138 139 140 141 142 143




#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif /* __GTK_CALENDAR_H__ */