diff -ur gnome-panel-2.20.3.orig/applets/clock/calendar-window.c gnome-panel-2.20.3/applets/clock/calendar-window.c --- gnome-panel-2.20.3.orig/applets/clock/calendar-window.c 2008-04-30 11:51:24.000000000 +0800 +++ gnome-panel-2.20.3/applets/clock/calendar-window.c 2008-04-30 11:52:05.000000000 +0800 @@ -50,6 +50,9 @@ #ifdef HAVE_LIBECAL #include "calendar-client.h" #endif +#ifdef HAVE_LIBLUNAR + #include +#endif #define CALENDAR_WINDOW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), CALENDAR_TYPE_WINDOW, CalendarWindowPrivate)) @@ -824,7 +827,11 @@ guint day, CalendarWindow *calwin) { +#ifdef HAVE_LIBLUNAR + lunar_calendar_mark_day (LUNAR_CALENDAR (calwin->priv->calendar), day); +#else gtk_calendar_mark_day (GTK_CALENDAR (calwin->priv->calendar), day); +#endif } static void @@ -834,7 +841,11 @@ guint year, month, day; if (calwin->priv->calendar) { +#ifdef HAVE_LIBLUNAR + lunar_calendar_clear_marks (LUNAR_CALENDAR (calwin->priv->calendar)); +#else gtk_calendar_clear_marks (GTK_CALENDAR (calwin->priv->calendar)); +#endif calendar_client_foreach_appointment_day (calwin->priv->client, (CalendarDayIter) mark_day_on_calendar, @@ -1092,7 +1103,11 @@ } static void +#ifdef HAVE_LIBLUNAR +calendar_day_activated (LunarCalendar *calendar, +#else calendar_day_activated (GtkCalendar *calendar, +#endif CalendarWindow *calwin) { unsigned int day; @@ -1100,7 +1115,11 @@ unsigned int year; char *argument; +#ifdef HAVE_LIBLUNAR + lunar_calendar_get_date (calendar, &year, &month, &day); +#else gtk_calendar_get_date (calendar, &year, &month, &day); +#endif argument = g_strdup_printf ("calendar:///?startdate=%.4d%.2d%.2d", year, month + 1, day); @@ -1111,12 +1130,20 @@ } static void +#ifdef HAVE_LIBLUNAR +calendar_day_selected (LunarCalendar *calendar, +#else calendar_day_selected (GtkCalendar *calendar, +#endif CalendarWindow *calwin) { guint day; +#ifdef HAVE_LIBLUNAR + lunar_calendar_get_date (calendar, NULL, NULL, &day); +#else gtk_calendar_get_date (calendar, NULL, NULL, &day); +#endif calendar_client_select_day (calwin->priv->client, day); @@ -1125,12 +1152,20 @@ } static void +#ifdef HAVE_LIBLUNAR +calendar_month_selected (LunarCalendar *calendar, +#else calendar_month_selected (GtkCalendar *calendar, +#endif CalendarWindow *calwin) { guint year, month; +#ifdef HAVE_LIBLUNAR + lunar_calendar_get_date (calendar, &year, &month, NULL); +#else gtk_calendar_get_date (calendar, &year, &month, NULL); +#endif calendar_client_select_month (calwin->priv->client, month, year); @@ -1355,7 +1390,11 @@ calwin); } +#ifdef HAVE_LIBLUNAR + lunar_calendar_get_date (LUNAR_CALENDAR (calwin->priv->calendar), +#else gtk_calendar_get_date (GTK_CALENDAR (calwin->priv->calendar), +#endif &year, &month, &day); calendar_client_select_day (calwin->priv->client, day); @@ -1383,26 +1422,51 @@ calendar_window_create_calendar (CalendarWindow *calwin) { GtkWidget *calendar; - GtkCalendarDisplayOptions options; struct tm *tm; +#ifdef HAVE_LIBLUNAR + LunarCalendarDisplayOptions options; + calendar = lunar_calendar_new (); + options = lunar_calendar_get_display_options (LUNAR_CALENDAR (calendar)); +#else + GtkCalendarDisplayOptions options; calendar = gtk_calendar_new (); options = gtk_calendar_get_display_options (GTK_CALENDAR (calendar)); +#endif if (calwin->priv->show_weeks) +#ifdef HAVE_LIBLUNAR + options |= LUNAR_CALENDAR_SHOW_WEEK_NUMBERS; +#else options |= GTK_CALENDAR_SHOW_WEEK_NUMBERS; +#endif else +#ifdef HAVE_LIBLUNAR + options &= ~(LUNAR_CALENDAR_SHOW_WEEK_NUMBERS); +#else options &= ~(GTK_CALENDAR_SHOW_WEEK_NUMBERS); +#endif +#ifdef HAVE_LIBLUNAR + lunar_calendar_set_display_options (LUNAR_CALENDAR (calendar), options); +#else gtk_calendar_set_display_options (GTK_CALENDAR (calendar), options); +#endif if (calwin->priv->utc_time) tm = gmtime (calwin->priv->current_time); else tm = localtime (calwin->priv->current_time); +#ifdef HAVE_LIBLUNAR + lunar_calendar_select_month (LUNAR_CALENDAR (calendar), + tm->tm_mon, + tm->tm_year + 1900); + lunar_calendar_select_day (LUNAR_CALENDAR (calendar), tm->tm_mday); +#else gtk_calendar_select_month (GTK_CALENDAR (calendar), tm->tm_mon, tm->tm_year + 1900); gtk_calendar_select_day (GTK_CALENDAR (calendar), tm->tm_mday); +#endif return calendar; } @@ -1792,7 +1856,11 @@ calendar_window_set_show_weeks (CalendarWindow *calwin, gboolean show_weeks) { +#ifdef HAVE_LIBLUNAR + LunarCalendarDisplayOptions options; +#else GtkCalendarDisplayOptions options; +#endif g_return_if_fail (CALENDAR_IS_WINDOW (calwin)); @@ -1802,14 +1870,30 @@ calwin->priv->show_weeks = show_weeks; if (calwin->priv->calendar) { +#ifdef HAVE_LIBLUNAR + options = lunar_calendar_get_display_options (LUNAR_CALENDAR (calwin->priv->calendar)); +#else options = gtk_calendar_get_display_options (GTK_CALENDAR (calwin->priv->calendar)); +#endif if (show_weeks) +#ifdef HAVE_LIBLUNAR + options |= LUNAR_CALENDAR_SHOW_WEEK_NUMBERS; +#else options |= GTK_CALENDAR_SHOW_WEEK_NUMBERS; +#endif else +#ifdef HAVE_LIBLUNAR + options &= ~(LUNAR_CALENDAR_SHOW_WEEK_NUMBERS); +#else options &= ~(GTK_CALENDAR_SHOW_WEEK_NUMBERS); +#endif +#ifdef HAVE_LIBLUNAR + lunar_calendar_set_display_options (LUNAR_CALENDAR (calwin->priv->calendar), +#else gtk_calendar_set_display_options (GTK_CALENDAR (calwin->priv->calendar), +#endif options); } diff -ur gnome-panel-2.20.3.orig/applets/clock/Makefile.am gnome-panel-2.20.3/applets/clock/Makefile.am --- gnome-panel-2.20.3.orig/applets/clock/Makefile.am 2008-04-30 11:51:24.000000000 +0800 +++ gnome-panel-2.20.3/applets/clock/Makefile.am 2008-04-30 11:51:35.000000000 +0800 @@ -55,6 +55,11 @@ clock-typebuiltins.c \ clock-typebuiltins.h +if CLOCK_LUNAR +INCLUDES += $(LUNAR_CFLAGS) +CLOCK_LDADD += $(LUNAR_LIBS) +endif + clock_enum_headers = \ $(top_srcdir)/applets/clock/clock-utils.h diff -ur gnome-panel-2.20.3.orig/configure.in gnome-panel-2.20.3/configure.in --- gnome-panel-2.20.3.orig/configure.in 2008-04-30 11:51:17.000000000 +0800 +++ gnome-panel-2.20.3/configure.in 2008-04-30 11:51:35.000000000 +0800 @@ -113,6 +113,30 @@ AC_SUBST(CLOCK_CFLAGS) AC_SUBST(CLOCK_LIBS) + +dnl ***** +dnl lunar +dnl ***** +AC_ARG_ENABLE(lunar, + AS_HELP_STRING([--enable-lunar],[Enable chinese lunar calendar for clock applet.]), + enable_lunar=$enableval, enable_lunar=auto) + +if test "x$enable_lunar" = "xauto"; then + PKG_CHECK_EXISTS([liblunar-1],enable_lunar=yes,enable_lunar=no) +fi + +if test "x$enable_lunar" = "xyes";then + LIBLUNAR_REQUIRED=0.2.6 + PKG_CHECK_MODULES(LUNAR, [liblunar-1 >= $LIBLUNAR_REQUIRED]) + AC_SUBST(LUNAR_CFLAGS) + AC_SUBST(LUNAR_LIBS) + AC_DEFINE([HAVE_LIBLUNAR], 1, [Defined when liblunar-1 are detected]) + have_lunar=true +else + have_lunar=false +fi +AM_CONDITIONAL(CLOCK_LUNAR, $have_lunar) + PKG_CHECK_MODULES(FISH, gtk+-2.0 >= $GTK_REQUIRED libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED libglade-2.0 >= $LIBGLADE_REQUIRED cairo >= $CAIRO_REQUIRED) AC_SUBST(FISH_CFLAGS) AC_SUBST(FISH_LIBS)