From: Yasushi Shoji <yashi / yashi.com>
Subject: [ruby-ext:00584] Re: Gtk::Calendar
Date: Sun, 28 Nov 1999 11:14:41 -0500

> From: Yasushi Shoji <yashi / yashi.com>
> Subject: [ruby-ext:00583] Re: Gtk::Calendar
> Date: Sun, 28 Nov 1999 09:55:31 -0500
> 
> > # Gtk+の bugだと思うんだけどなぁ〜。
> 
> bugなんかじゃないらしいです。gtkの MLで教えてもらいました。

すこし使ってみたのですが、やっぱり嫌いです。日付も年も scriptに書いたの
が出るのに monthだけ一つづれるのがどうしても Ruby的ではない気がします。
それでも「Gtk+は、そうなんだから interfaceを変えるのはイヤだ」と言う人が
いそうで、跳ねられそうな patchですが送ります。あと、ちょろっと使いやすそ
うな methodも付けておきます。
--
         yashi

diff -u -r1.1 rbgtkcalendar.c --- rbgtkcalendar.c 1999/11/29 16:45:56 1.1 +++ rbgtkcalendar.c 1999/11/29 17:15:48 @@ -15,7 +15,7 @@ gint ret; ret = gtk_calendar_select_month(GTK_CALENDAR(get_widget(self)), - FIX2INT(month), + FIX2INT(month)-1, FIX2INT(year)); return INT2FIX(ret); } @@ -76,12 +76,45 @@ &year, &month, &day); ret = rb_ary_new(); rb_ary_push(ret, INT2FIX(year)); - rb_ary_push(ret, INT2FIX(month)); + rb_ary_push(ret, INT2FIX(month+1)); rb_ary_push(ret, INT2FIX(day)); return ret; } static VALUE +cal_get_year(self) + VALUE self; +{ + guint year, month, day; + + gtk_calendar_get_date(GTK_CALENDAR(get_widget(self)), + &year, &month, &day); + return INT2FIX(year); +} + +static VALUE +cal_get_month(self) + VALUE self; +{ + guint year, month, day; + + gtk_calendar_get_date(GTK_CALENDAR(get_widget(self)), + &year, &month, &day); + return INT2FIX(month+1); +} + +static VALUE +cal_get_day(self) + VALUE self; +{ + guint year, month, day; + + gtk_calendar_get_date(GTK_CALENDAR(get_widget(self)), + &year, &month, &day); + return INT2FIX(day); +} + +static VALUE cal_freeze(self) VALUE self; { @@ -135,10 +168,18 @@ rb_define_method(gCalendar, "clear_marks", cal_clear_marks, 0); rb_define_method(gCalendar, "display_options", cal_display_options, 1); rb_define_method(gCalendar, "get_date", cal_get_date, 0); + rb_define_method(gCalendar, "get_year", cal_get_year, 0); + rb_define_method(gCalendar, "get_month", cal_get_month, 0); + rb_define_method(gCalendar, "get_day", cal_get_day, 0); rb_define_method(gCalendar, "freeze", cal_freeze, 0); rb_define_method(gCalendar, "thaw", cal_thaw, 0); rb_define_alias(gCalendar, "date", "get_date"); + rb_define_alias(gCalendar, "year", "get_year"); + rb_define_alias(gCalendar, "month", "get_month"); + rb_define_alias(gCalendar, "day", "get_day"); + rb_define_alias(gCalendar, "mmyyyy=", "select_month"); + rb_define_alias(gCalendar, "day=", "select_day"); }