diff options
-rw-r--r-- | calendar/ChangeLog | 15 | ||||
-rw-r--r-- | calendar/Makefile.am | 1 | ||||
-rw-r--r-- | calendar/gnome-month-item.c | 199 | ||||
-rw-r--r-- | calendar/gnome-month-item.h | 19 | ||||
-rw-r--r-- | calendar/goto.c | 1 | ||||
-rw-r--r-- | calendar/goto.xpm | 68 | ||||
-rw-r--r-- | calendar/gui/Makefile.am | 1 | ||||
-rw-r--r-- | calendar/gui/gnome-month-item.c | 199 | ||||
-rw-r--r-- | calendar/gui/gnome-month-item.h | 19 | ||||
-rw-r--r-- | calendar/gui/goto.c | 1 | ||||
-rw-r--r-- | calendar/gui/main.c | 9 | ||||
-rw-r--r-- | calendar/gui/month-view.c | 4 | ||||
-rw-r--r-- | calendar/main.c | 9 | ||||
-rw-r--r-- | calendar/month-view.c | 4 |
14 files changed, 449 insertions, 100 deletions
diff --git a/calendar/ChangeLog b/calendar/ChangeLog index 8854d69ab8..f0efda99f5 100644 --- a/calendar/ChangeLog +++ b/calendar/ChangeLog @@ -1,3 +1,18 @@ +1998-08-25 Federico Mena Quintero <federico@nuclecu.unam.mx> + + * goto.c (create_days): Set the heading color of the month item. + + * main.c: Use GNOME_STOCK_PIXMAP_JUMP_TO, now that it exists, + instead of goto.xpm. Also, removed goto.xpm from cvs. + + * gnome-month-item.h (struct _GnomeMonthItem): Added fields for + the heading and day number fonts. Added fields for heading and + day number label colors. + + * gnome-month-item.c (gnome_month_item_class_init): ARG_DAY_NAMES + should be write-only. Also, added arguments for heading and day + number fonts. Added arguments for heading and day number colors. + 1998-08-24 Federico Mena Quintero <federico@nuclecu.unam.mx> * prop.c (build_two_radio_group): Doh. Set the state of the radio diff --git a/calendar/Makefile.am b/calendar/Makefile.am index 069609f38b..993cdf58b7 100644 --- a/calendar/Makefile.am +++ b/calendar/Makefile.am @@ -65,7 +65,6 @@ EXTRA_DIST = \ topic.dat \ gnome-cal.html \ bell.xpm \ - goto.xpm \ recur.xpm diff --git a/calendar/gnome-month-item.c b/calendar/gnome-month-item.c index 045a32d59d..308207f5a1 100644 --- a/calendar/gnome-month-item.c +++ b/calendar/gnome-month-item.c @@ -55,7 +55,15 @@ enum { ARG_HEADING_HEIGHT, ARG_HEADING_ANCHOR, ARG_DAY_ANCHOR, - ARG_START_ON_MONDAY + ARG_START_ON_MONDAY, + ARG_HEAD_FONT, + ARG_HEAD_FONT_GDK, + ARG_DAY_FONT, + ARG_DAY_FONT_GDK, + ARG_HEAD_COLOR, + ARG_HEAD_COLOR_GDK, + ARG_DAY_COLOR, + ARG_DAY_COLOR_GDK }; @@ -115,13 +123,21 @@ gnome_month_item_class_init (GnomeMonthItemClass *class) gtk_object_add_arg_type ("GnomeMonthItem::width", GTK_TYPE_DOUBLE, GTK_ARG_READWRITE, ARG_WIDTH); gtk_object_add_arg_type ("GnomeMonthItem::height", GTK_TYPE_DOUBLE, GTK_ARG_READWRITE, ARG_HEIGHT); gtk_object_add_arg_type ("GnomeMonthItem::anchor", GTK_TYPE_ANCHOR_TYPE, GTK_ARG_READWRITE, ARG_ANCHOR); - gtk_object_add_arg_type ("GnomeMonthItem::head_padding", GTK_TYPE_DOUBLE, GTK_ARG_READWRITE, ARG_HEAD_PADDING); + gtk_object_add_arg_type ("GnomeMonthItem::heading_padding", GTK_TYPE_DOUBLE, GTK_ARG_READWRITE, ARG_HEAD_PADDING); gtk_object_add_arg_type ("GnomeMonthItem::day_padding", GTK_TYPE_DOUBLE, GTK_ARG_READWRITE, ARG_DAY_PADDING); - gtk_object_add_arg_type ("GnomeMonthItem::day_names", GTK_TYPE_POINTER, GTK_ARG_READABLE, ARG_DAY_NAMES); + gtk_object_add_arg_type ("GnomeMonthItem::day_names", GTK_TYPE_POINTER, GTK_ARG_WRITABLE, ARG_DAY_NAMES); gtk_object_add_arg_type ("GnomeMonthItem::heading_height", GTK_TYPE_DOUBLE, GTK_ARG_READWRITE, ARG_HEADING_HEIGHT); gtk_object_add_arg_type ("GnomeMonthItem::heading_anchor", GTK_TYPE_ANCHOR_TYPE, GTK_ARG_READWRITE, ARG_HEADING_ANCHOR); gtk_object_add_arg_type ("GnomeMonthItem::day_anchor", GTK_TYPE_ANCHOR_TYPE, GTK_ARG_READWRITE, ARG_DAY_ANCHOR); gtk_object_add_arg_type ("GnomeMonthItem::start_on_monday", GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_START_ON_MONDAY); + gtk_object_add_arg_type ("GnomeMonthItem::heading_font", GTK_TYPE_STRING, GTK_ARG_WRITABLE, ARG_HEAD_FONT); + gtk_object_add_arg_type ("GnomeMonthItem::heading_font_gdk", GTK_TYPE_GDK_FONT, GTK_ARG_READWRITE, ARG_HEAD_FONT_GDK); + gtk_object_add_arg_type ("GnomeMonthItem::day_font", GTK_TYPE_STRING, GTK_ARG_WRITABLE, ARG_DAY_FONT); + gtk_object_add_arg_type ("GnomeMonthItem::day_font_gdk", GTK_TYPE_GDK_FONT, GTK_ARG_READWRITE, ARG_DAY_FONT_GDK); + gtk_object_add_arg_type ("GnomeMonthItem::heading_color", GTK_TYPE_STRING, GTK_ARG_WRITABLE, ARG_HEAD_COLOR); + gtk_object_add_arg_type ("GnomeMonthItem::heading_color_gdk", GTK_TYPE_GDK_COLOR, GTK_ARG_READWRITE, ARG_HEAD_COLOR_GDK); + gtk_object_add_arg_type ("GnomeMonthItem::day_color", GTK_TYPE_STRING, GTK_ARG_WRITABLE, ARG_DAY_COLOR); + gtk_object_add_arg_type ("GnomeMonthItem::day_color_gdk", GTK_TYPE_GDK_COLOR, GTK_ARG_READWRITE, ARG_DAY_COLOR_GDK); object_class->destroy = gnome_month_item_destroy; object_class->set_arg = gnome_month_item_set_arg; @@ -274,6 +290,33 @@ reshape (GnomeMonthItem *mitem) reshape_days (mitem); } +/* Sets the font for all the day headings */ +static void +set_head_font (GnomeMonthItem *mitem) +{ + int i; + + for (i = 0; i < 7; i++) + gnome_canvas_item_set (mitem->items[GNOME_MONTH_ITEM_HEAD_LABEL + i], + "font_gdk", mitem->head_font, + NULL); +} + +/* Sets the color for all the day headings */ +static void +set_head_color (GnomeMonthItem *mitem) +{ + int i; + GdkColor color; + + color.pixel = mitem->head_pixel; + + for (i = 0; i < 7; i++) + gnome_canvas_item_set (mitem->items[GNOME_MONTH_ITEM_HEAD_LABEL + i], + "fill_color_gdk", &color, + NULL); +} + /* Creates the items for the day name headings */ static void create_headings (GnomeMonthItem *mitem) @@ -300,10 +343,11 @@ create_headings (GnomeMonthItem *mitem) mitem->items[GNOME_MONTH_ITEM_HEAD_LABEL + i] = gnome_canvas_item_new (GNOME_CANVAS_GROUP (mitem->items[GNOME_MONTH_ITEM_HEAD_GROUP + i]), gnome_canvas_text_get_type (), - "fill_color", "white", - "font", "-adobe-helvetica-medium-r-normal--10-*-72-72-p-*-iso8859-1", NULL); } + + set_head_font (mitem); + set_head_color (mitem); } /* Returns the number of leap years since year 1 up to (but not including) the specified year */ @@ -437,6 +481,33 @@ set_days (GnomeMonthItem *mitem) NULL); } +/* Sets the font for all the day numbers */ +static void +set_day_font (GnomeMonthItem *mitem) +{ + int i; + + for (i = 0; i < 42; i++) + gnome_canvas_item_set (mitem->items[GNOME_MONTH_ITEM_DAY_LABEL + i], + "font_gdk", mitem->day_font, + NULL); +} + +/* Sets the color for all the day numbers */ +static void +set_day_color (GnomeMonthItem *mitem) +{ + int i; + GdkColor color; + + color.pixel = mitem->day_pixel; + + for (i = 0; i < 42; i++) + gnome_canvas_item_set (mitem->items[GNOME_MONTH_ITEM_DAY_LABEL + i], + "fill_color_gdk", &color, + NULL); +} + /* Creates the items for the days */ static void create_days (GnomeMonthItem *mitem) @@ -464,11 +535,11 @@ create_days (GnomeMonthItem *mitem) mitem->items[GNOME_MONTH_ITEM_DAY_LABEL + i] = gnome_canvas_item_new (GNOME_CANVAS_GROUP (mitem->items[GNOME_MONTH_ITEM_DAY_GROUP + i]), gnome_canvas_text_get_type (), - "fill_color", "black", - "font", "-adobe-helvetica-medium-r-normal--10-*-72-72-p-*-iso8859-1", NULL); } + set_day_font (mitem); + set_day_color (mitem); set_days (mitem); } @@ -531,6 +602,20 @@ gnome_month_item_init (GnomeMonthItem *mitem) mitem->head_height = 14.0; mitem->head_anchor = GTK_ANCHOR_CENTER; mitem->day_anchor = GTK_ANCHOR_CENTER; + + /* Load the default fonts */ + + mitem->head_font = gdk_font_load ("-*-helvetica-medium-r-normal--10-*-*-*-p-*-iso8859-1"); + if (!mitem->head_font) { + mitem->head_font = gdk_font_load ("fixed"); + g_assert (mitem->head_font != NULL); + } + + mitem->day_font = gdk_font_load ("-adobe-helvetica-medium-r-normal--10-*-72-72-p-*-iso8859-1"); + if (!mitem->day_font) { + mitem->day_font = gdk_font_load ("fixed"); + g_assert (mitem->day_font != NULL); + } } GnomeCanvasItem * @@ -553,9 +638,17 @@ gnome_month_item_new (GnomeCanvasGroup *parent) void gnome_month_item_construct (GnomeMonthItem *mitem) { + GdkColor color; + g_return_if_fail (mitem != NULL); g_return_if_fail (GNOME_IS_MONTH_ITEM (mitem)); + gnome_canvas_get_color (GNOME_CANVAS_ITEM (mitem)->canvas, "#d6d6d6d6d6d6", &color); + mitem->head_pixel = color.pixel; + + gnome_canvas_get_color (GNOME_CANVAS_ITEM (mitem)->canvas, "black", &color); + mitem->day_pixel = color.pixel; + create_items (mitem); } @@ -648,6 +741,7 @@ gnome_month_item_set_arg (GtkObject *object, GtkArg *arg, guint arg_id) GnomeMonthItem *mitem; char **day_names; int i; + GdkColor color; mitem = GNOME_MONTH_ITEM (object); @@ -740,6 +834,74 @@ gnome_month_item_set_arg (GtkObject *object, GtkArg *arg, guint arg_id) set_days (mitem); break; + case ARG_HEAD_FONT: + gdk_font_unref (mitem->head_font); + + mitem->head_font = gdk_font_load (GTK_VALUE_STRING (*arg)); + if (!mitem->head_font) { + mitem->head_font = gdk_font_load ("fixed"); + g_assert (mitem->head_font != NULL); + } + + set_head_font (mitem); + break; + + case ARG_HEAD_FONT_GDK: + gdk_font_unref (mitem->head_font); + + mitem->head_font = GTK_VALUE_BOXED (*arg); + gdk_font_ref (mitem->head_font); + set_head_font (mitem); + break; + + case ARG_DAY_FONT: + gdk_font_unref (mitem->day_font); + + mitem->day_font = gdk_font_load (GTK_VALUE_STRING (*arg)); + if (!mitem->day_font) { + mitem->day_font = gdk_font_load ("fixed"); + g_assert (mitem->day_font != NULL); + } + + set_day_font (mitem); + break; + + case ARG_DAY_FONT_GDK: + gdk_font_unref (mitem->day_font); + + mitem->day_font = GTK_VALUE_BOXED (*arg); + gdk_font_ref (mitem->day_font); + set_day_font (mitem); + break; + + case ARG_HEAD_COLOR: + if (gnome_canvas_get_color (GNOME_CANVAS_ITEM (mitem)->canvas, GTK_VALUE_STRING (*arg), &color)) + mitem->head_pixel = color.pixel; + else + mitem->head_pixel = 0; + + set_head_color (mitem); + break; + + case ARG_HEAD_COLOR_GDK: + mitem->head_pixel = ((GdkColor *) GTK_VALUE_BOXED (*arg))->pixel; + set_head_color (mitem); + break; + + case ARG_DAY_COLOR: + if (gnome_canvas_get_color (GNOME_CANVAS_ITEM (mitem)->canvas, GTK_VALUE_STRING (*arg), &color)) + mitem->day_pixel = color.pixel; + else + mitem->day_pixel = 0; + + set_day_color (mitem); + break; + + case ARG_DAY_COLOR_GDK: + mitem->day_pixel = ((GdkColor *) GTK_VALUE_BOXED (*arg))->pixel; + set_day_color (mitem); + break; + default: break; } @@ -749,6 +911,7 @@ static void gnome_month_item_get_arg (GtkObject *object, GtkArg *arg, guint arg_id) { GnomeMonthItem *mitem; + GdkColor *color; mitem = GNOME_MONTH_ITEM (object); @@ -805,6 +968,28 @@ gnome_month_item_get_arg (GtkObject *object, GtkArg *arg, guint arg_id) GTK_VALUE_BOOL (*arg) = mitem->start_on_monday; break; + case ARG_HEAD_FONT_GDK: + GTK_VALUE_BOXED (*arg) = mitem->head_font; + break; + + case ARG_DAY_FONT_GDK: + GTK_VALUE_BOXED (*arg) = mitem->day_font; + break; + + case ARG_HEAD_COLOR_GDK: + color = g_new (GdkColor, 1); + color->pixel = mitem->head_pixel; + gdk_color_context_query_color (GNOME_CANVAS_ITEM (mitem)->canvas->cc, color); + GTK_VALUE_BOXED (*arg) = color; + break; + + case ARG_DAY_COLOR_GDK: + color = g_new (GdkColor, 1); + color->pixel = mitem->day_pixel; + gdk_color_context_query_color (GNOME_CANVAS_ITEM (mitem)->canvas->cc, color); + GTK_VALUE_BOXED (*arg) = color; + break; + default: arg->type = GTK_TYPE_INVALID; break; diff --git a/calendar/gnome-month-item.h b/calendar/gnome-month-item.h index 03ba0c84a7..405fda3702 100644 --- a/calendar/gnome-month-item.h +++ b/calendar/gnome-month-item.h @@ -59,13 +59,21 @@ typedef enum { * width double RW Width of calendar in canvas units * height double RW Height of calendar in canvas units * anchor GtkAnchorType RW Anchor side for calendar - * head_padding double RW Padding inside heading boxes + * heading_padding double RW Padding inside heading boxes * day_padding double RW Padding inside day boxes - * day_names char ** R Array of strings corresponding to the day names (sun-sat) + * day_names char ** W Array of strings corresponding to the day names (sun-sat) * heading_height double RW Height of headings bar in canvas units * heading_anchor GtkAnchorType RW Anchor side for headings inside heading boxes * day_anchor GtkAnchorType RW Anchor side for day numbers inside day boxes * start_on_monday boolean RW Specifies whether the week starts on Monday or Sunday + * heading_font string W X logical font descriptor for the headings + * heading_font_gdk GdkFont * RW Pointer to GdkFont for the headings + * day_font string W X logical font descriptor for the day numbers + * day_font_gdk GdkFont * RW Pointer to GdkFont for the day numbers + * heading_color string W X color specification for heading labels + * heading_color_gdk GdkColor * RW Pointer to an allocated GdkColor for heading labels + * day_color string W X color specification for day number labels + * day_color_gdk GdkColor * RW Pointer to an allocated GdkColor for day number labels */ #define GNOME_TYPE_MONTH_ITEM (gnome_month_item_get_type ()) @@ -95,12 +103,17 @@ struct _GnomeMonthItem { double head_height; /* Height of the headings row */ GtkAnchorType head_anchor; /* Anchor side for the heading labels */ - GtkAnchorType day_anchor; /* Anchor side for the day number labels */ GnomeCanvasItem **items; /* All the items that make up the calendar */ int day_numbers[42]; /* The numbers of the days */ + GdkFont *head_font; /* Font for the headings */ + GdkFont *day_font; /* Font for the day numbers */ + + gulong head_pixel; /* Color for heading labels */ + gulong day_pixel; /* Color for day number labels */ + int start_on_monday : 1; /* Start the week on Monday? If false, then start from Sunday */ }; diff --git a/calendar/goto.c b/calendar/goto.c index db95fe0b27..c3ac3a157e 100644 --- a/calendar/goto.c +++ b/calendar/goto.c @@ -234,6 +234,7 @@ create_days (GtkWidget *dialog, GnomeCalendar *gcal, int day, int month, int yea "month", month, "year", year, "start_on_monday", week_starts_on_monday, + "heading_color", "white", NULL); highlight_current_day (GNOME_MONTH_ITEM (mitem)); diff --git a/calendar/goto.xpm b/calendar/goto.xpm deleted file mode 100644 index c7173b4388..0000000000 --- a/calendar/goto.xpm +++ /dev/null @@ -1,68 +0,0 @@ -/* XPM */ -static char * goto_xpm[] = { -"24 24 41 1", -" c None", -". c #212121", -"+ c #EAD4CB", -"@ c #E3C5BA", -"# c #DBB4A4", -"$ c #EEDED7", -"% c #FAF7F5", -"& c #F2E5E1", -"* c #D2AC99", -"= c #000000", -"- c #8D9E7C", -"; c #CDD9C2", -"> c #DEE6D7", -", c #DAE2D1", -"' c #9BAD89", -") c #B79382", -"! c #707D63", -"~ c #B4C6A2", -"{ c #ACC098", -"] c #636E57", -"^ c #AB8A7A", -"/ c #E4E9DD", -"( c #657158", -"_ c #C49F8D", -": c #C3D1B5", -"< c #808F70", -"[ c #4C5442", -"} c #58634E", -"| c #E6EBE0", -"1 c #D4DDC9", -"2 c #CAD7BE", -"3 c #90A17F", -"4 c #5F6A53", -"5 c #535C49", -"6 c #E9EDE4", -"7 c #616D56", -"8 c #A8BC95", -"9 c #7C8B6E", -"0 c #4C5443", -"a c #B6C2AA", -"b c #5E6953", -" ", -" ", -" ", -" ", -" ", -" ", -" ... ", -" ..+@#.. ", -" .$%&@*. ", -" =======+#**. ", -" =-;>,'=###). ", -" =!~{]=##*^. ", -" ==/;{(]=#*_. ", -" ==/;:{<[}=)).. ", -" =|12{{34=5=.. ", -" =6{{{7= == ", -" =>890= ", -" =a]= ", -" =b= ", -" = ", -" ", -" ", -" ", -" "}; diff --git a/calendar/gui/Makefile.am b/calendar/gui/Makefile.am index 069609f38b..993cdf58b7 100644 --- a/calendar/gui/Makefile.am +++ b/calendar/gui/Makefile.am @@ -65,7 +65,6 @@ EXTRA_DIST = \ topic.dat \ gnome-cal.html \ bell.xpm \ - goto.xpm \ recur.xpm diff --git a/calendar/gui/gnome-month-item.c b/calendar/gui/gnome-month-item.c index 045a32d59d..308207f5a1 100644 --- a/calendar/gui/gnome-month-item.c +++ b/calendar/gui/gnome-month-item.c @@ -55,7 +55,15 @@ enum { ARG_HEADING_HEIGHT, ARG_HEADING_ANCHOR, ARG_DAY_ANCHOR, - ARG_START_ON_MONDAY + ARG_START_ON_MONDAY, + ARG_HEAD_FONT, + ARG_HEAD_FONT_GDK, + ARG_DAY_FONT, + ARG_DAY_FONT_GDK, + ARG_HEAD_COLOR, + ARG_HEAD_COLOR_GDK, + ARG_DAY_COLOR, + ARG_DAY_COLOR_GDK }; @@ -115,13 +123,21 @@ gnome_month_item_class_init (GnomeMonthItemClass *class) gtk_object_add_arg_type ("GnomeMonthItem::width", GTK_TYPE_DOUBLE, GTK_ARG_READWRITE, ARG_WIDTH); gtk_object_add_arg_type ("GnomeMonthItem::height", GTK_TYPE_DOUBLE, GTK_ARG_READWRITE, ARG_HEIGHT); gtk_object_add_arg_type ("GnomeMonthItem::anchor", GTK_TYPE_ANCHOR_TYPE, GTK_ARG_READWRITE, ARG_ANCHOR); - gtk_object_add_arg_type ("GnomeMonthItem::head_padding", GTK_TYPE_DOUBLE, GTK_ARG_READWRITE, ARG_HEAD_PADDING); + gtk_object_add_arg_type ("GnomeMonthItem::heading_padding", GTK_TYPE_DOUBLE, GTK_ARG_READWRITE, ARG_HEAD_PADDING); gtk_object_add_arg_type ("GnomeMonthItem::day_padding", GTK_TYPE_DOUBLE, GTK_ARG_READWRITE, ARG_DAY_PADDING); - gtk_object_add_arg_type ("GnomeMonthItem::day_names", GTK_TYPE_POINTER, GTK_ARG_READABLE, ARG_DAY_NAMES); + gtk_object_add_arg_type ("GnomeMonthItem::day_names", GTK_TYPE_POINTER, GTK_ARG_WRITABLE, ARG_DAY_NAMES); gtk_object_add_arg_type ("GnomeMonthItem::heading_height", GTK_TYPE_DOUBLE, GTK_ARG_READWRITE, ARG_HEADING_HEIGHT); gtk_object_add_arg_type ("GnomeMonthItem::heading_anchor", GTK_TYPE_ANCHOR_TYPE, GTK_ARG_READWRITE, ARG_HEADING_ANCHOR); gtk_object_add_arg_type ("GnomeMonthItem::day_anchor", GTK_TYPE_ANCHOR_TYPE, GTK_ARG_READWRITE, ARG_DAY_ANCHOR); gtk_object_add_arg_type ("GnomeMonthItem::start_on_monday", GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_START_ON_MONDAY); + gtk_object_add_arg_type ("GnomeMonthItem::heading_font", GTK_TYPE_STRING, GTK_ARG_WRITABLE, ARG_HEAD_FONT); + gtk_object_add_arg_type ("GnomeMonthItem::heading_font_gdk", GTK_TYPE_GDK_FONT, GTK_ARG_READWRITE, ARG_HEAD_FONT_GDK); + gtk_object_add_arg_type ("GnomeMonthItem::day_font", GTK_TYPE_STRING, GTK_ARG_WRITABLE, ARG_DAY_FONT); + gtk_object_add_arg_type ("GnomeMonthItem::day_font_gdk", GTK_TYPE_GDK_FONT, GTK_ARG_READWRITE, ARG_DAY_FONT_GDK); + gtk_object_add_arg_type ("GnomeMonthItem::heading_color", GTK_TYPE_STRING, GTK_ARG_WRITABLE, ARG_HEAD_COLOR); + gtk_object_add_arg_type ("GnomeMonthItem::heading_color_gdk", GTK_TYPE_GDK_COLOR, GTK_ARG_READWRITE, ARG_HEAD_COLOR_GDK); + gtk_object_add_arg_type ("GnomeMonthItem::day_color", GTK_TYPE_STRING, GTK_ARG_WRITABLE, ARG_DAY_COLOR); + gtk_object_add_arg_type ("GnomeMonthItem::day_color_gdk", GTK_TYPE_GDK_COLOR, GTK_ARG_READWRITE, ARG_DAY_COLOR_GDK); object_class->destroy = gnome_month_item_destroy; object_class->set_arg = gnome_month_item_set_arg; @@ -274,6 +290,33 @@ reshape (GnomeMonthItem *mitem) reshape_days (mitem); } +/* Sets the font for all the day headings */ +static void +set_head_font (GnomeMonthItem *mitem) +{ + int i; + + for (i = 0; i < 7; i++) + gnome_canvas_item_set (mitem->items[GNOME_MONTH_ITEM_HEAD_LABEL + i], + "font_gdk", mitem->head_font, + NULL); +} + +/* Sets the color for all the day headings */ +static void +set_head_color (GnomeMonthItem *mitem) +{ + int i; + GdkColor color; + + color.pixel = mitem->head_pixel; + + for (i = 0; i < 7; i++) + gnome_canvas_item_set (mitem->items[GNOME_MONTH_ITEM_HEAD_LABEL + i], + "fill_color_gdk", &color, + NULL); +} + /* Creates the items for the day name headings */ static void create_headings (GnomeMonthItem *mitem) @@ -300,10 +343,11 @@ create_headings (GnomeMonthItem *mitem) mitem->items[GNOME_MONTH_ITEM_HEAD_LABEL + i] = gnome_canvas_item_new (GNOME_CANVAS_GROUP (mitem->items[GNOME_MONTH_ITEM_HEAD_GROUP + i]), gnome_canvas_text_get_type (), - "fill_color", "white", - "font", "-adobe-helvetica-medium-r-normal--10-*-72-72-p-*-iso8859-1", NULL); } + + set_head_font (mitem); + set_head_color (mitem); } /* Returns the number of leap years since year 1 up to (but not including) the specified year */ @@ -437,6 +481,33 @@ set_days (GnomeMonthItem *mitem) NULL); } +/* Sets the font for all the day numbers */ +static void +set_day_font (GnomeMonthItem *mitem) +{ + int i; + + for (i = 0; i < 42; i++) + gnome_canvas_item_set (mitem->items[GNOME_MONTH_ITEM_DAY_LABEL + i], + "font_gdk", mitem->day_font, + NULL); +} + +/* Sets the color for all the day numbers */ +static void +set_day_color (GnomeMonthItem *mitem) +{ + int i; + GdkColor color; + + color.pixel = mitem->day_pixel; + + for (i = 0; i < 42; i++) + gnome_canvas_item_set (mitem->items[GNOME_MONTH_ITEM_DAY_LABEL + i], + "fill_color_gdk", &color, + NULL); +} + /* Creates the items for the days */ static void create_days (GnomeMonthItem *mitem) @@ -464,11 +535,11 @@ create_days (GnomeMonthItem *mitem) mitem->items[GNOME_MONTH_ITEM_DAY_LABEL + i] = gnome_canvas_item_new (GNOME_CANVAS_GROUP (mitem->items[GNOME_MONTH_ITEM_DAY_GROUP + i]), gnome_canvas_text_get_type (), - "fill_color", "black", - "font", "-adobe-helvetica-medium-r-normal--10-*-72-72-p-*-iso8859-1", NULL); } + set_day_font (mitem); + set_day_color (mitem); set_days (mitem); } @@ -531,6 +602,20 @@ gnome_month_item_init (GnomeMonthItem *mitem) mitem->head_height = 14.0; mitem->head_anchor = GTK_ANCHOR_CENTER; mitem->day_anchor = GTK_ANCHOR_CENTER; + + /* Load the default fonts */ + + mitem->head_font = gdk_font_load ("-*-helvetica-medium-r-normal--10-*-*-*-p-*-iso8859-1"); + if (!mitem->head_font) { + mitem->head_font = gdk_font_load ("fixed"); + g_assert (mitem->head_font != NULL); + } + + mitem->day_font = gdk_font_load ("-adobe-helvetica-medium-r-normal--10-*-72-72-p-*-iso8859-1"); + if (!mitem->day_font) { + mitem->day_font = gdk_font_load ("fixed"); + g_assert (mitem->day_font != NULL); + } } GnomeCanvasItem * @@ -553,9 +638,17 @@ gnome_month_item_new (GnomeCanvasGroup *parent) void gnome_month_item_construct (GnomeMonthItem *mitem) { + GdkColor color; + g_return_if_fail (mitem != NULL); g_return_if_fail (GNOME_IS_MONTH_ITEM (mitem)); + gnome_canvas_get_color (GNOME_CANVAS_ITEM (mitem)->canvas, "#d6d6d6d6d6d6", &color); + mitem->head_pixel = color.pixel; + + gnome_canvas_get_color (GNOME_CANVAS_ITEM (mitem)->canvas, "black", &color); + mitem->day_pixel = color.pixel; + create_items (mitem); } @@ -648,6 +741,7 @@ gnome_month_item_set_arg (GtkObject *object, GtkArg *arg, guint arg_id) GnomeMonthItem *mitem; char **day_names; int i; + GdkColor color; mitem = GNOME_MONTH_ITEM (object); @@ -740,6 +834,74 @@ gnome_month_item_set_arg (GtkObject *object, GtkArg *arg, guint arg_id) set_days (mitem); break; + case ARG_HEAD_FONT: + gdk_font_unref (mitem->head_font); + + mitem->head_font = gdk_font_load (GTK_VALUE_STRING (*arg)); + if (!mitem->head_font) { + mitem->head_font = gdk_font_load ("fixed"); + g_assert (mitem->head_font != NULL); + } + + set_head_font (mitem); + break; + + case ARG_HEAD_FONT_GDK: + gdk_font_unref (mitem->head_font); + + mitem->head_font = GTK_VALUE_BOXED (*arg); + gdk_font_ref (mitem->head_font); + set_head_font (mitem); + break; + + case ARG_DAY_FONT: + gdk_font_unref (mitem->day_font); + + mitem->day_font = gdk_font_load (GTK_VALUE_STRING (*arg)); + if (!mitem->day_font) { + mitem->day_font = gdk_font_load ("fixed"); + g_assert (mitem->day_font != NULL); + } + + set_day_font (mitem); + break; + + case ARG_DAY_FONT_GDK: + gdk_font_unref (mitem->day_font); + + mitem->day_font = GTK_VALUE_BOXED (*arg); + gdk_font_ref (mitem->day_font); + set_day_font (mitem); + break; + + case ARG_HEAD_COLOR: + if (gnome_canvas_get_color (GNOME_CANVAS_ITEM (mitem)->canvas, GTK_VALUE_STRING (*arg), &color)) + mitem->head_pixel = color.pixel; + else + mitem->head_pixel = 0; + + set_head_color (mitem); + break; + + case ARG_HEAD_COLOR_GDK: + mitem->head_pixel = ((GdkColor *) GTK_VALUE_BOXED (*arg))->pixel; + set_head_color (mitem); + break; + + case ARG_DAY_COLOR: + if (gnome_canvas_get_color (GNOME_CANVAS_ITEM (mitem)->canvas, GTK_VALUE_STRING (*arg), &color)) + mitem->day_pixel = color.pixel; + else + mitem->day_pixel = 0; + + set_day_color (mitem); + break; + + case ARG_DAY_COLOR_GDK: + mitem->day_pixel = ((GdkColor *) GTK_VALUE_BOXED (*arg))->pixel; + set_day_color (mitem); + break; + default: break; } @@ -749,6 +911,7 @@ static void gnome_month_item_get_arg (GtkObject *object, GtkArg *arg, guint arg_id) { GnomeMonthItem *mitem; + GdkColor *color; mitem = GNOME_MONTH_ITEM (object); @@ -805,6 +968,28 @@ gnome_month_item_get_arg (GtkObject *object, GtkArg *arg, guint arg_id) GTK_VALUE_BOOL (*arg) = mitem->start_on_monday; break; + case ARG_HEAD_FONT_GDK: + GTK_VALUE_BOXED (*arg) = mitem->head_font; + break; + + case ARG_DAY_FONT_GDK: + GTK_VALUE_BOXED (*arg) = mitem->day_font; + break; + + case ARG_HEAD_COLOR_GDK: + color = g_new (GdkColor, 1); + color->pixel = mitem->head_pixel; + gdk_color_context_query_color (GNOME_CANVAS_ITEM (mitem)->canvas->cc, color); + GTK_VALUE_BOXED (*arg) = color; + break; + + case ARG_DAY_COLOR_GDK: + color = g_new (GdkColor, 1); + color->pixel = mitem->day_pixel; + gdk_color_context_query_color (GNOME_CANVAS_ITEM (mitem)->canvas->cc, color); + GTK_VALUE_BOXED (*arg) = color; + break; + default: arg->type = GTK_TYPE_INVALID; break; diff --git a/calendar/gui/gnome-month-item.h b/calendar/gui/gnome-month-item.h index 03ba0c84a7..405fda3702 100644 --- a/calendar/gui/gnome-month-item.h +++ b/calendar/gui/gnome-month-item.h @@ -59,13 +59,21 @@ typedef enum { * width double RW Width of calendar in canvas units * height double RW Height of calendar in canvas units * anchor GtkAnchorType RW Anchor side for calendar - * head_padding double RW Padding inside heading boxes + * heading_padding double RW Padding inside heading boxes * day_padding double RW Padding inside day boxes - * day_names char ** R Array of strings corresponding to the day names (sun-sat) + * day_names char ** W Array of strings corresponding to the day names (sun-sat) * heading_height double RW Height of headings bar in canvas units * heading_anchor GtkAnchorType RW Anchor side for headings inside heading boxes * day_anchor GtkAnchorType RW Anchor side for day numbers inside day boxes * start_on_monday boolean RW Specifies whether the week starts on Monday or Sunday + * heading_font string W X logical font descriptor for the headings + * heading_font_gdk GdkFont * RW Pointer to GdkFont for the headings + * day_font string W X logical font descriptor for the day numbers + * day_font_gdk GdkFont * RW Pointer to GdkFont for the day numbers + * heading_color string W X color specification for heading labels + * heading_color_gdk GdkColor * RW Pointer to an allocated GdkColor for heading labels + * day_color string W X color specification for day number labels + * day_color_gdk GdkColor * RW Pointer to an allocated GdkColor for day number labels */ #define GNOME_TYPE_MONTH_ITEM (gnome_month_item_get_type ()) @@ -95,12 +103,17 @@ struct _GnomeMonthItem { double head_height; /* Height of the headings row */ GtkAnchorType head_anchor; /* Anchor side for the heading labels */ - GtkAnchorType day_anchor; /* Anchor side for the day number labels */ GnomeCanvasItem **items; /* All the items that make up the calendar */ int day_numbers[42]; /* The numbers of the days */ + GdkFont *head_font; /* Font for the headings */ + GdkFont *day_font; /* Font for the day numbers */ + + gulong head_pixel; /* Color for heading labels */ + gulong day_pixel; /* Color for day number labels */ + int start_on_monday : 1; /* Start the week on Monday? If false, then start from Sunday */ }; diff --git a/calendar/gui/goto.c b/calendar/gui/goto.c index db95fe0b27..c3ac3a157e 100644 --- a/calendar/gui/goto.c +++ b/calendar/gui/goto.c @@ -234,6 +234,7 @@ create_days (GtkWidget *dialog, GnomeCalendar *gcal, int day, int month, int yea "month", month, "year", year, "start_on_monday", week_starts_on_monday, + "heading_color", "white", NULL); highlight_current_day (GNOME_MONTH_ITEM (mitem)); diff --git a/calendar/gui/main.c b/calendar/gui/main.c index 92b55b8172..066aac783c 100644 --- a/calendar/gui/main.c +++ b/calendar/gui/main.c @@ -19,10 +19,11 @@ #include "gnome-cal.h" #include "main.h" #include "timeutil.h" -#include "goto.xpm" + #define COOKIE_USER_HOME_DIR ((char *) -1) + /* The username, used to set the `owner' field of the event */ char *user_name; @@ -363,13 +364,13 @@ static GnomeUIInfo gnome_toolbar [] = { GNOMEUIINFO_SEPARATOR, - GNOMEUIINFO_ITEM_STOCK (N_("Prev"), N_("Go back in time"), previous_clicked, GNOME_STOCK_MENU_BACK), + GNOMEUIINFO_ITEM_STOCK (N_("Prev"), N_("Go back in time"), previous_clicked, GNOME_STOCK_PIXMAP_BACK), GNOMEUIINFO_ITEM_STOCK (N_("Today"), N_("Go to present time"), today_clicked, GNOME_STOCK_PIXMAP_HOME), - GNOMEUIINFO_ITEM_STOCK (N_("Next"), N_("Go forward in time"), next_clicked, GNOME_STOCK_MENU_FORWARD), + GNOMEUIINFO_ITEM_STOCK (N_("Next"), N_("Go forward in time"), next_clicked, GNOME_STOCK_PIXMAP_FORWARD), GNOMEUIINFO_SEPARATOR, - GNOMEUIINFO_ITEM (N_("Go to"), N_("Go to a specific date"), goto_clicked, goto_xpm), + GNOMEUIINFO_ITEM_STOCK (N_("Go to"), N_("Go to a specific date"), goto_clicked, GNOME_STOCK_PIXMAP_JUMP_TO), GNOMEUIINFO_END }; diff --git a/calendar/gui/month-view.c b/calendar/gui/month-view.c index 0abc717366..01d4391b25 100644 --- a/calendar/gui/month-view.c +++ b/calendar/gui/month-view.c @@ -78,10 +78,12 @@ month_view_init (MonthView *mv) mv->mitem = gnome_month_item_new (GNOME_CANVAS_GROUP (mv->canvas.root)); gnome_canvas_item_set (mv->mitem, "x", 0.0, - "y", 0.0, "anchor", GTK_ANCHOR_NW, "day_anchor", GTK_ANCHOR_NE, "start_on_monday", week_starts_on_monday, + "heading_height", 18.0, + "heading_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-iso8859-1", + "day_font", "-*-helvetica-bold-r-normal--14-*-*-*-*-*-iso8859-1", NULL); } diff --git a/calendar/main.c b/calendar/main.c index 92b55b8172..066aac783c 100644 --- a/calendar/main.c +++ b/calendar/main.c @@ -19,10 +19,11 @@ #include "gnome-cal.h" #include "main.h" #include "timeutil.h" -#include "goto.xpm" + #define COOKIE_USER_HOME_DIR ((char *) -1) + /* The username, used to set the `owner' field of the event */ char *user_name; @@ -363,13 +364,13 @@ static GnomeUIInfo gnome_toolbar [] = { GNOMEUIINFO_SEPARATOR, - GNOMEUIINFO_ITEM_STOCK (N_("Prev"), N_("Go back in time"), previous_clicked, GNOME_STOCK_MENU_BACK), + GNOMEUIINFO_ITEM_STOCK (N_("Prev"), N_("Go back in time"), previous_clicked, GNOME_STOCK_PIXMAP_BACK), GNOMEUIINFO_ITEM_STOCK (N_("Today"), N_("Go to present time"), today_clicked, GNOME_STOCK_PIXMAP_HOME), - GNOMEUIINFO_ITEM_STOCK (N_("Next"), N_("Go forward in time"), next_clicked, GNOME_STOCK_MENU_FORWARD), + GNOMEUIINFO_ITEM_STOCK (N_("Next"), N_("Go forward in time"), next_clicked, GNOME_STOCK_PIXMAP_FORWARD), GNOMEUIINFO_SEPARATOR, - GNOMEUIINFO_ITEM (N_("Go to"), N_("Go to a specific date"), goto_clicked, goto_xpm), + GNOMEUIINFO_ITEM_STOCK (N_("Go to"), N_("Go to a specific date"), goto_clicked, GNOME_STOCK_PIXMAP_JUMP_TO), GNOMEUIINFO_END }; diff --git a/calendar/month-view.c b/calendar/month-view.c index 0abc717366..01d4391b25 100644 --- a/calendar/month-view.c +++ b/calendar/month-view.c @@ -78,10 +78,12 @@ month_view_init (MonthView *mv) mv->mitem = gnome_month_item_new (GNOME_CANVAS_GROUP (mv->canvas.root)); gnome_canvas_item_set (mv->mitem, "x", 0.0, - "y", 0.0, "anchor", GTK_ANCHOR_NW, "day_anchor", GTK_ANCHOR_NE, "start_on_monday", week_starts_on_monday, + "heading_height", 18.0, + "heading_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-iso8859-1", + "day_font", "-*-helvetica-bold-r-normal--14-*-*-*-*-*-iso8859-1", NULL); } |