// -*- c++ -*-
//  Generated by gtkmmproc from ./../calendar.gen_h -- DO NOT MODIFY!
#include <gtk--/calendar.h>
#include <gtk--/private/calendar_p.h>
namespace Gtk
{

}

namespace Gtk {
Gtk::Calendar *wrap (GtkCalendar *o)
  {
    return static_cast<Gtk::Calendar *> (Gtk::wrap_auto ((GtkObject *) (o)));
  }
}

namespace Gtk {
Calendar_Class Calendar::calendar_class = {0};

Object* Calendar_Class::wrap_new(GtkObject* o)
  {
    Object* cpp=manage(new Calendar((GtkCalendar*)(o)));
    return cpp;
  }

bool Calendar::isA( Object *checkcast)
  {
    return GTK_IS_CALENDAR(checkcast->gtkobj());
  }

GtkType Calendar::get_type()
  {
    return calendar_class.get_type();
  }

GtkType Calendar_Class::get_type()
  {
    if (!type)
      {
        CppClassParent::CppObjectType::get_type();
        GtkTypeInfo info =
          {
            "Gtk__Calendar",
            sizeof(BaseObjectType),
            sizeof(BaseClassType),
            (GtkClassInitFunc) class_init_function,
            (GtkObjectInitFunc) object_init_function,
            /* reserved_1 */ NULL,
            /* reserved_2 */ NULL,
            /*base_class_init_func */ (GtkClassInitFunc) NULL
          };
        type=gtk_type_unique(gtk_calendar_get_type(), &info);
      }
    return type;
  }

const char* const Calendar::signal_names[]={
   "month_changed",
   "day_selected",
   "day_selected_double_click",
   "prev_month",
   "next_month",
   "prev_year",
   "next_year",
   0};

void Calendar::initialize_class()
  {

     calendar_self=this;

  }

void Calendar_Class::class_init_function(GtkCalendarClass *klass)
  {
    CppClassParent::class_init_function((BaseClassParent*)klass);
    klass->month_changed=month_changed_callback;
    klass->day_selected=day_selected_callback;
    klass->day_selected_double_click=day_selected_double_click_callback;
    klass->prev_month=prev_month_callback;
    klass->next_month=next_month_callback;
    klass->prev_year=prev_year_callback;
    klass->next_year=next_year_callback;
  }

void Calendar_Class::object_init_function(GtkCalendar *)
  {}

}

Gtk::Calendar::Calendar()
  :     Gtk::Widget((GtkWidget*)(gtk_object_new(get_type(),0)))
  {
    initialize_class();
  }

Gtk::Calendar::Calendar(GtkCalendar *castitem)
  :     Gtk::Widget((GtkWidget*)(castitem))
  {
    initialize_class();
  }

Gtk::Calendar::~Calendar() { destroy_(); }

gint Gtk::Calendar::select_month(guint month,guint year)
  {
    return gtk_calendar_select_month(gtkobj(),month,year);
  }

void Gtk::Calendar::select_day(guint day)
  {
    gtk_calendar_select_day(gtkobj(),day);
  }

gint Gtk::Calendar::mark_day(guint day)
  {
    return gtk_calendar_mark_day(gtkobj(),day);
  }

gint Gtk::Calendar::unmark_day(guint day)
  {
    return gtk_calendar_unmark_day(gtkobj(),day);
  }

void Gtk::Calendar::clear_marks()
  {
    gtk_calendar_clear_marks(gtkobj());
  }

void Gtk::Calendar::display_options(GtkCalendarDisplayOptions flags)
  {
    gtk_calendar_display_options(gtkobj(),flags);
  }

void Gtk::Calendar::get_date(guint* year,guint* month,guint* day) const
  {
    gtk_calendar_get_date(const_cast<GtkCalendar*>(gtkobj()),year,month,day);
  }

void Gtk::Calendar::freeze()
  {
    gtk_calendar_freeze(gtkobj());
  }

void Gtk::Calendar::thaw()
  {
    gtk_calendar_thaw(gtkobj());
  }

void Gtk::Calendar_Class::month_changed_callback(GtkCalendar* o_)
  {
    CppObjectType *obj=
      static_cast<CppObjectType *>(static_cast<Gtk::Object *>(
        gtk_object_get_data_by_id((GtkObject*)o_,Gtk::quark_)));

    if (obj)
      obj->month_changed_impl();
    else
      {
        BaseClassType* base=
          static_cast<BaseClassType*>(
            gtk_type_parent_class(((GtkObject*)o_)->klass->type));
        if (base->month_changed)
          (base->month_changed)(o_);
      }

  }

void Gtk::Calendar::month_changed_impl()
  {
    BaseClassType* base=
      static_cast<BaseClassType*>(
        gtk_type_parent_class(gtkobject->klass->type));
    if (base->month_changed)
      (base->month_changed)(gtkobj());

  }

void Gtk::Calendar_Class::day_selected_callback(GtkCalendar* o_)
  {
    CppObjectType *obj=
      static_cast<CppObjectType *>(static_cast<Gtk::Object *>(
        gtk_object_get_data_by_id((GtkObject*)o_,Gtk::quark_)));

    if (obj)
      obj->day_selected_impl();
    else
      {
        BaseClassType* base=
          static_cast<BaseClassType*>(
            gtk_type_parent_class(((GtkObject*)o_)->klass->type));
        if (base->day_selected)
          (base->day_selected)(o_);
      }

  }

void Gtk::Calendar::day_selected_impl()
  {
    BaseClassType* base=
      static_cast<BaseClassType*>(
        gtk_type_parent_class(gtkobject->klass->type));
    if (base->day_selected)
      (base->day_selected)(gtkobj());

  }

void Gtk::Calendar_Class::day_selected_double_click_callback(GtkCalendar* o_)
  {
    CppObjectType *obj=
      static_cast<CppObjectType *>(static_cast<Gtk::Object *>(
        gtk_object_get_data_by_id((GtkObject*)o_,Gtk::quark_)));

    if (obj)
      obj->day_selected_double_click_impl();
    else
      {
        BaseClassType* base=
          static_cast<BaseClassType*>(
            gtk_type_parent_class(((GtkObject*)o_)->klass->type));
        if (base->day_selected_double_click)
          (base->day_selected_double_click)(o_);
      }

  }

void Gtk::Calendar::day_selected_double_click_impl()
  {
    BaseClassType* base=
      static_cast<BaseClassType*>(
        gtk_type_parent_class(gtkobject->klass->type));
    if (base->day_selected_double_click)
      (base->day_selected_double_click)(gtkobj());

  }

void Gtk::Calendar_Class::prev_month_callback(GtkCalendar* o_)
  {
    CppObjectType *obj=
      static_cast<CppObjectType *>(static_cast<Gtk::Object *>(
        gtk_object_get_data_by_id((GtkObject*)o_,Gtk::quark_)));

    if (obj)
      obj->prev_month_impl();
    else
      {
        BaseClassType* base=
          static_cast<BaseClassType*>(
            gtk_type_parent_class(((GtkObject*)o_)->klass->type));
        if (base->prev_month)
          (base->prev_month)(o_);
      }

  }

void Gtk::Calendar::prev_month_impl()
  {
    BaseClassType* base=
      static_cast<BaseClassType*>(
        gtk_type_parent_class(gtkobject->klass->type));
    if (base->prev_month)
      (base->prev_month)(gtkobj());

  }

void Gtk::Calendar_Class::next_month_callback(GtkCalendar* o_)
  {
    CppObjectType *obj=
      static_cast<CppObjectType *>(static_cast<Gtk::Object *>(
        gtk_object_get_data_by_id((GtkObject*)o_,Gtk::quark_)));

    if (obj)
      obj->next_month_impl();
    else
      {
        BaseClassType* base=
          static_cast<BaseClassType*>(
            gtk_type_parent_class(((GtkObject*)o_)->klass->type));
        if (base->next_month)
          (base->next_month)(o_);
      }

  }

void Gtk::Calendar::next_month_impl()
  {
    BaseClassType* base=
      static_cast<BaseClassType*>(
        gtk_type_parent_class(gtkobject->klass->type));
    if (base->next_month)
      (base->next_month)(gtkobj());

  }

void Gtk::Calendar_Class::prev_year_callback(GtkCalendar* o_)
  {
    CppObjectType *obj=
      static_cast<CppObjectType *>(static_cast<Gtk::Object *>(
        gtk_object_get_data_by_id((GtkObject*)o_,Gtk::quark_)));

    if (obj)
      obj->prev_year_impl();
    else
      {
        BaseClassType* base=
          static_cast<BaseClassType*>(
            gtk_type_parent_class(((GtkObject*)o_)->klass->type));
        if (base->prev_year)
          (base->prev_year)(o_);
      }

  }

void Gtk::Calendar::prev_year_impl()
  {
    BaseClassType* base=
      static_cast<BaseClassType*>(
        gtk_type_parent_class(gtkobject->klass->type));
    if (base->prev_year)
      (base->prev_year)(gtkobj());

  }

void Gtk::Calendar_Class::next_year_callback(GtkCalendar* o_)
  {
    CppObjectType *obj=
      static_cast<CppObjectType *>(static_cast<Gtk::Object *>(
        gtk_object_get_data_by_id((GtkObject*)o_,Gtk::quark_)));

    if (obj)
      obj->next_year_impl();
    else
      {
        BaseClassType* base=
          static_cast<BaseClassType*>(
            gtk_type_parent_class(((GtkObject*)o_)->klass->type));
        if (base->next_year)
          (base->next_year)(o_);
      }

  }

void Gtk::Calendar::next_year_impl()
  {
    BaseClassType* base=
      static_cast<BaseClassType*>(
        gtk_type_parent_class(gtkobject->klass->type));
    if (base->next_year)
      (base->next_year)(gtkobj());

  }
