sig
  val cast : 'Gobject.obj -> Gtk.calendar Gtk.obj
  module P :
    sig
      val day : ([> `calendar ], int) Gobject.property
      val month : ([> `calendar ], int) Gobject.property
      val year : ([> `calendar ], int) Gobject.property
    end
  module S :
    sig
      val day_selected : ([> `calendar ], unit -> unit) GtkSignal.t
      val day_selected_double_click :
        ([> `calendar ], unit -> unit) GtkSignal.t
      val month_changed : ([> `calendar ], unit -> unit) GtkSignal.t
      val next_month : ([> `calendar ], unit -> unit) GtkSignal.t
      val next_year : ([> `calendar ], unit -> unit) GtkSignal.t
      val prev_month : ([> `calendar ], unit -> unit) GtkSignal.t
      val prev_year : ([> `calendar ], unit -> unit) GtkSignal.t
    end
  val create : Gtk.calendar Gobject.param list -> Gtk.calendar Gtk.obj
  external select_month :
    [> `calendar ] Gtk.obj -> month:int -> year:int -> unit
    = "ml_gtk_calendar_select_month"
  external select_day : [> `calendar ] Gtk.obj -> int -> unit
    = "ml_gtk_calendar_select_day"
  external mark_day : [> `calendar ] Gtk.obj -> int -> unit
    = "ml_gtk_calendar_mark_day"
  external unmark_day : [> `calendar ] Gtk.obj -> int -> unit
    = "ml_gtk_calendar_unmark_day"
  external get_num_marked_dates : [> `calendar ] Gtk.obj -> int
    = "ml_gtk_calendar_get_num_marked_dates"
  external is_day_marked : [> `calendar ] Gtk.obj -> int -> bool
    = "ml_gtk_calendar_is_day_marked"
  external clear_marks : [> `calendar ] Gtk.obj -> unit
    = "ml_gtk_calendar_clear_marks"
  external display_options :
    [> `calendar ] Gtk.obj -> Gtk.Tags.calendar_display_options list -> unit
    = "ml_gtk_calendar_display_options"
  external get_date : [> `calendar ] Gtk.obj -> int * int * int
    = "ml_gtk_calendar_get_date"
  external freeze : [> `calendar ] Gtk.obj -> unit = "ml_gtk_calendar_freeze"
  external thaw : [> `calendar ] Gtk.obj -> unit = "ml_gtk_calendar_thaw"
end