diff options
author | nobody <nobody@localhost> | 2003-04-02 01:15:53 +0800 |
---|---|---|
committer | nobody <nobody@localhost> | 2003-04-02 01:15:53 +0800 |
commit | 2e5b2bbb530b642dda56b332cfd93810ac415098 (patch) | |
tree | e2b63c11a404a5dd99d407c989c8846fd0d5379d /calendar/gui/e-week-view.c | |
parent | 5cda225087bfdc66e19edb703689e8af655e171c (diff) | |
download | gsoc2013-evolution-EVOLUTION_1_2_4.tar gsoc2013-evolution-EVOLUTION_1_2_4.tar.gz gsoc2013-evolution-EVOLUTION_1_2_4.tar.bz2 gsoc2013-evolution-EVOLUTION_1_2_4.tar.lz gsoc2013-evolution-EVOLUTION_1_2_4.tar.xz gsoc2013-evolution-EVOLUTION_1_2_4.tar.zst gsoc2013-evolution-EVOLUTION_1_2_4.zip |
This commit was manufactured by cvs2svn to create tagEVOLUTION_1_2_4
'EVOLUTION_1_2_4'.
svn path=/tags/EVOLUTION_1_2_4/; revision=20614
Diffstat (limited to 'calendar/gui/e-week-view.c')
-rw-r--r-- | calendar/gui/e-week-view.c | 389 |
1 files changed, 209 insertions, 180 deletions
diff --git a/calendar/gui/e-week-view.c b/calendar/gui/e-week-view.c index 06d3dfb906..b526e8b9a1 100644 --- a/calendar/gui/e-week-view.c +++ b/calendar/gui/e-week-view.c @@ -39,11 +39,13 @@ #include <gtk/gtkvscrollbar.h> #include <gtk/gtkwindow.h> #include <gtk/gtkmain.h> +#include <libgnome/gnome-defs.h> +#include <libgnome/gnome-i18n.h> #include <libgnome/gnome-i18n.h> #include <libgnome/gnome-exec.h> #include <libgnome/gnome-util.h> #include <gdk-pixbuf/gdk-pixbuf.h> -#include <libgnomecanvas/gnome-canvas-pixbuf.h> +#include <gdk-pixbuf/gnome-canvas-pixbuf.h> #include <gal/e-text/e-text.h> #include <gal/widgets/e-canvas-utils.h> #include <gal/widgets/e-gui-utils.h> @@ -73,7 +75,10 @@ #include "art/timezone-16.xpm" #include "art/jump.xpm" -#define E_WEEK_VIEW_SMALL_FONT_PTSIZE 7 +#define E_WEEK_VIEW_SMALL_FONT \ + "-adobe-utopia-regular-r-normal-*-*-100-*-*-p-*-iso8859-*" +#define E_WEEK_VIEW_SMALL_FONT_FALLBACK \ + "-adobe-helvetica-medium-r-normal-*-*-80-*-*-p-*-iso8859-*" #define E_WEEK_VIEW_JUMP_BUTTON_WIDTH 16 #define E_WEEK_VIEW_JUMP_BUTTON_HEIGHT 8 @@ -113,6 +118,8 @@ static gint e_week_view_focus_out (GtkWidget *widget, GdkEventFocus *event); static gint e_week_view_expose_event (GtkWidget *widget, GdkEventExpose *event); +static void e_week_view_draw (GtkWidget *widget, + GdkRectangle *area); static void e_week_view_draw_shadow (EWeekView *week_view); static gboolean e_week_view_on_button_press (GtkWidget *widget, @@ -239,8 +246,32 @@ static gboolean e_week_view_layout_timeout_cb (gpointer data); static GtkTableClass *parent_class; static GdkAtom clipboard_atom = GDK_NONE; -E_MAKE_TYPE (e_week_view, "EWeekView", EWeekView, e_week_view_class_init, - e_week_view_init, GTK_TYPE_TABLE); + +GtkType +e_week_view_get_type (void) +{ + static GtkType e_week_view_type = 0; + + if (!e_week_view_type){ + GtkTypeInfo e_week_view_info = { + "EWeekView", + sizeof (EWeekView), + sizeof (EWeekViewClass), + (GtkClassInitFunc) e_week_view_class_init, + (GtkObjectInitFunc) e_week_view_init, + NULL, /* reserved 1 */ + NULL, /* reserved 2 */ + (GtkClassInitFunc) NULL + }; + + parent_class = gtk_type_class (GTK_TYPE_TABLE); + e_week_view_type = gtk_type_unique (GTK_TYPE_TABLE, + &e_week_view_info); + } + + return e_week_view_type; +} + static void e_week_view_class_init (EWeekViewClass *class) @@ -248,18 +279,19 @@ e_week_view_class_init (EWeekViewClass *class) GtkObjectClass *object_class; GtkWidgetClass *widget_class; - parent_class = g_type_class_peek_parent (class); object_class = (GtkObjectClass *) class; widget_class = (GtkWidgetClass *) class; e_week_view_signals[SELECTION_CHANGED] = gtk_signal_new ("selection_changed", GTK_RUN_LAST, - G_TYPE_FROM_CLASS (object_class), + object_class->type, GTK_SIGNAL_OFFSET (EWeekViewClass, selection_changed), gtk_marshal_NONE__NONE, GTK_TYPE_NONE, 0); + gtk_object_class_add_signals (object_class, e_week_view_signals, LAST_SIGNAL); + /* Method override */ object_class->destroy = e_week_view_destroy; @@ -271,6 +303,7 @@ e_week_view_class_init (EWeekViewClass *class) widget_class->focus_out_event = e_week_view_focus_out; widget_class->key_press_event = e_week_view_key_press; widget_class->expose_event = e_week_view_expose_event; + widget_class->draw = e_week_view_draw; class->selection_changed = NULL; @@ -333,11 +366,11 @@ e_week_view_init (EWeekView *week_view) /* Create the small font. */ week_view->use_small_font = TRUE; - - week_view->small_font_desc = - pango_font_description_copy (gtk_widget_get_style (GTK_WIDGET (week_view))->font_desc); - pango_font_description_set_size (week_view->small_font_desc, - E_WEEK_VIEW_SMALL_FONT_PTSIZE * PANGO_SCALE); + week_view->small_font = gdk_font_load (E_WEEK_VIEW_SMALL_FONT); + if (!week_view->small_font) + week_view->small_font = gdk_font_load (E_WEEK_VIEW_SMALL_FONT_FALLBACK); + if (!week_view->small_font) + week_view->use_small_font = FALSE; /* String to use in 12-hour time format for times in the morning. */ week_view->am_string = _("am"); @@ -379,12 +412,18 @@ e_week_view_init (EWeekView *week_view) "EWeekViewMainItem::week_view", week_view, NULL); - g_signal_connect_after (week_view->main_canvas, "button_press_event", - G_CALLBACK (e_week_view_on_button_press), week_view); - g_signal_connect_after (week_view->main_canvas, "button_release_event", - G_CALLBACK (e_week_view_on_button_release), week_view); - g_signal_connect_after (week_view->main_canvas, "motion_notify_event", - G_CALLBACK (e_week_view_on_motion), week_view); + gtk_signal_connect_after (GTK_OBJECT (week_view->main_canvas), + "button_press_event", + GTK_SIGNAL_FUNC (e_week_view_on_button_press), + week_view); + gtk_signal_connect_after (GTK_OBJECT (week_view->main_canvas), + "button_release_event", + GTK_SIGNAL_FUNC (e_week_view_on_button_release), + week_view); + gtk_signal_connect_after (GTK_OBJECT (week_view->main_canvas), + "motion_notify_event", + GTK_SIGNAL_FUNC (e_week_view_on_motion), + week_view); /* Create the buttons to jump to each days. */ pixbuf = gdk_pixbuf_new_from_xpm_data ((const char**) jump_xpm); @@ -396,8 +435,10 @@ e_week_view_init (EWeekView *week_view) "GnomeCanvasPixbuf::pixbuf", pixbuf, NULL); - g_signal_connect (week_view->jump_buttons[i], "event", - G_CALLBACK (e_week_view_on_jump_button_event), week_view); + gtk_signal_connect (GTK_OBJECT (week_view->jump_buttons[i]), + "event", + GTK_SIGNAL_FUNC (e_week_view_on_jump_button_event), + week_view); } gdk_pixbuf_unref (pixbuf); @@ -406,7 +447,7 @@ e_week_view_init (EWeekView *week_view) */ adjustment = gtk_adjustment_new (0, -52, 52, 1, 1, 1); gtk_signal_connect (adjustment, "value_changed", - G_CALLBACK (e_week_view_on_adjustment_changed), + GTK_SIGNAL_FUNC (e_week_view_on_adjustment_changed), week_view); week_view->vscrollbar = gtk_vscrollbar_new (GTK_ADJUSTMENT (adjustment)); @@ -426,16 +467,22 @@ e_week_view_init (EWeekView *week_view) clipboard_atom, GDK_SELECTION_TYPE_STRING, 0); - - g_signal_connect (week_view->invisible, "selection_get", - G_CALLBACK (selection_get), (gpointer) week_view); - g_signal_connect (week_view->invisible, "selection_clear_event", - G_CALLBACK (selection_clear_event), (gpointer) week_view); - g_signal_connect (week_view->invisible, "selection_received", - G_CALLBACK (selection_received), (gpointer) week_view); - g_signal_connect (week_view->invisible, "destroy", - G_CALLBACK (invisible_destroyed), (gpointer) week_view); - + gtk_signal_connect (GTK_OBJECT (week_view->invisible), + "selection_get", + GTK_SIGNAL_FUNC (selection_get), + (gpointer) week_view); + gtk_signal_connect (GTK_OBJECT (week_view->invisible), + "selection_clear_event", + GTK_SIGNAL_FUNC (selection_clear_event), + (gpointer) week_view); + gtk_signal_connect (GTK_OBJECT (week_view->invisible), + "selection_received", + GTK_SIGNAL_FUNC (selection_received), + (gpointer) week_view); + gtk_signal_connect (GTK_OBJECT (week_view->invisible), + "destroy", + GTK_SIGNAL_FUNC (invisible_destroyed), + (gpointer) week_view); week_view->clipboard_selection = NULL; week_view->activity = NULL; @@ -453,7 +500,7 @@ e_week_view_new (void) { GtkWidget *week_view; - week_view = GTK_WIDGET (g_object_new (e_week_view_get_type (), NULL)); + week_view = GTK_WIDGET (gtk_type_new (e_week_view_get_type ())); return week_view; } @@ -473,8 +520,8 @@ e_week_view_destroy (GtkObject *object) week_view->events = NULL; if (week_view->client) { - g_signal_handlers_disconnect_matched (week_view->client, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, week_view); - g_object_unref (week_view->client); + gtk_signal_disconnect_by_data (GTK_OBJECT (week_view->client), week_view); + gtk_object_unref (GTK_OBJECT (week_view->client)); week_view->client = NULL; } @@ -484,15 +531,14 @@ e_week_view_destroy (GtkObject *object) } if (week_view->query) { - g_signal_handlers_disconnect_matched (week_view->query, G_SIGNAL_MATCH_DATA, - 0, 0, NULL, NULL, week_view); - g_object_unref (week_view->query); + gtk_signal_disconnect_by_data (GTK_OBJECT (week_view->query), week_view); + gtk_object_unref (GTK_OBJECT (week_view->query)); week_view->query = NULL; } - if (week_view->small_font_desc) { - pango_font_description_free (week_view->small_font_desc); - week_view->small_font_desc = NULL; + if (week_view->small_font) { + gdk_font_unref (week_view->small_font); + week_view->small_font = NULL; } if (week_view->default_category) { @@ -512,7 +558,7 @@ e_week_view_destroy (GtkObject *object) } if (week_view->activity) { - g_object_unref (week_view->activity); + gtk_object_unref (GTK_OBJECT (week_view->activity)); week_view->activity = NULL; } @@ -596,6 +642,7 @@ e_week_view_unrealize (GtkWidget *widget) { EWeekView *week_view; GdkColormap *colormap; + gint i; week_view = E_WEEK_VIEW (widget); @@ -603,7 +650,8 @@ e_week_view_unrealize (GtkWidget *widget) week_view->main_gc = NULL; colormap = gtk_widget_get_colormap (widget); - gdk_colormap_free_colors (colormap, week_view->colors, E_WEEK_VIEW_COLOR_LAST); + for (i = 0; i < E_WEEK_VIEW_COLOR_LAST; i++) + gdk_colors_free (colormap, &week_view->colors[i].pixel, 1, 0); gdk_pixmap_unref (week_view->reminder_icon); week_view->reminder_icon = NULL; @@ -614,60 +662,25 @@ e_week_view_unrealize (GtkWidget *widget) (*GTK_WIDGET_CLASS (parent_class)->unrealize)(widget); } -static gint -get_string_width (PangoLayout *layout, const gchar *string) -{ - gint width; - - pango_layout_set_text (layout, string, -1); - pango_layout_get_pixel_size (layout, &width, NULL); - return width; -} - -/* FIXME: This is also needed in e-day-view-time-item.c. We should probably use - * pango's approximation function, but it needs a language tag. Find out how to - * get one of those properly. */ -static gint -get_digit_width (PangoLayout *layout) -{ - gint digit; - gint max_digit_width = 1; - - for (digit = '0'; digit <= '9'; digit++) { - gchar digit_char; - gint digit_width; - - digit_char = digit; - - pango_layout_set_text (layout, &digit_char, 1); - pango_layout_get_pixel_size (layout, &digit_width, NULL); - - max_digit_width = MAX (max_digit_width, digit_width); - } - - return max_digit_width; -} static void e_week_view_style_set (GtkWidget *widget, - GtkStyle *previous_style) + GtkStyle *previous_style) { EWeekView *week_view; + EWeekViewEventSpan *span; GdkFont *font; - GtkStyle *style; gint day, day_width, max_day_width, max_abbr_day_width; gint month, month_width, max_month_width, max_abbr_month_width; + gint span_num; GDate date; gchar buffer[128]; - PangoLayout *layout; if (GTK_WIDGET_CLASS (parent_class)->style_set) (*GTK_WIDGET_CLASS (parent_class)->style_set)(widget, previous_style); week_view = E_WEEK_VIEW (widget); - style = gtk_widget_get_style (widget); - font = gtk_style_get_font (style); - layout = gtk_widget_create_pango_layout (widget, NULL); + font = widget->style->font; /* Recalculate the height of each row based on the font size. */ week_view->row_height = font->ascent + font->descent + E_WEEK_VIEW_EVENT_BORDER_HEIGHT * 2 + E_WEEK_VIEW_EVENT_TEXT_Y_PAD * 2; @@ -675,8 +688,8 @@ e_week_view_style_set (GtkWidget *widget, /* Check that the small font is smaller than the default font. If it isn't, we won't use it. */ - if (week_view->small_font_desc) { - if (font->ascent + font->descent <= E_WEEK_VIEW_SMALL_FONT_PTSIZE) + if (week_view->small_font) { + if (font->ascent + font->descent <= week_view->small_font->ascent + week_view->small_font->descent) week_view->use_small_font = FALSE; } @@ -693,12 +706,12 @@ e_week_view_style_set (GtkWidget *widget, max_abbr_day_width = 0; for (day = 0; day < 7; day++) { g_date_strftime (buffer, 128, "%A", &date); - day_width = get_string_width (layout, buffer); + day_width = gdk_string_width (font, buffer); week_view->day_widths[day] = day_width; max_day_width = MAX (max_day_width, day_width); g_date_strftime (buffer, 128, "%a", &date); - day_width = get_string_width (layout, buffer); + day_width = gdk_string_width (font, buffer); week_view->abbr_day_widths[day] = day_width; max_abbr_day_width = MAX (max_abbr_day_width, day_width); @@ -711,36 +724,32 @@ e_week_view_style_set (GtkWidget *widget, g_date_set_month (&date, month + 1); g_date_strftime (buffer, 128, "%B", &date); - month_width = get_string_width (layout, buffer); + month_width = gdk_string_width (font, buffer); week_view->month_widths[month] = month_width; max_month_width = MAX (max_month_width, month_width); g_date_strftime (buffer, 128, "%b", &date); - month_width = get_string_width (layout, buffer); + month_width = gdk_string_width (font, buffer); week_view->abbr_month_widths[month] = month_width; max_abbr_month_width = MAX (max_abbr_month_width, month_width); } - week_view->space_width = get_string_width (layout, " "); - week_view->colon_width = get_string_width (layout, ":"); - week_view->slash_width = get_string_width (layout, "/"); - week_view->digit_width = get_digit_width (layout); - if (week_view->small_font_desc) { - pango_layout_set_font_description (layout, week_view->small_font_desc); - week_view->small_digit_width = get_digit_width (layout); - pango_layout_set_font_description (layout, style->font_desc); - } + week_view->space_width = gdk_string_width (font, " "); + week_view->colon_width = gdk_string_width (font, ":"); + week_view->slash_width = gdk_string_width (font, "/"); + week_view->digit_width = gdk_string_width (font, "5"); + if (week_view->small_font) + week_view->small_digit_width = gdk_string_width (week_view->small_font, "5"); week_view->max_day_width = max_day_width; week_view->max_abbr_day_width = max_abbr_day_width; week_view->max_month_width = max_month_width; week_view->max_abbr_month_width = max_abbr_month_width; - week_view->am_string_width = get_string_width (layout, + week_view->am_string_width = gdk_string_width (font, week_view->am_string); - week_view->pm_string_width = get_string_width (layout, + week_view->pm_string_width = gdk_string_width (font, week_view->pm_string); -#if 0 /* Set the font of all the EText items. */ if (week_view->spans) { for (span_num = 0; span_num < week_view->spans->len; @@ -753,9 +762,6 @@ e_week_view_style_set (GtkWidget *widget, NULL); } } -#endif - - g_object_unref (layout); } @@ -806,7 +812,6 @@ e_week_view_recalc_cell_sizes (EWeekView *week_view) gfloat canvas_width, canvas_height, offset; gint row, col; GtkWidget *widget; - GtkStyle *style; GdkFont *font; gint width, height, time_width; @@ -855,13 +860,11 @@ e_week_view_recalc_cell_sizes (EWeekView *week_view) /* If the font hasn't been set yet just return. */ widget = GTK_WIDGET (week_view); - style = gtk_widget_get_style (widget); - if (!style) - return; - font = gtk_style_get_font (style); - if (!font) + if (!widget->style || ! widget->style->font) return; + font = widget->style->font; + /* Calculate the number of rows of events in each cell, for the large cells and the compressed weekend cells. */ if (week_view->multi_week_view) { @@ -894,7 +897,7 @@ e_week_view_recalc_cell_sizes (EWeekView *week_view) time_width = e_week_view_get_time_string_width (week_view); week_view->time_format = E_WEEK_VIEW_TIME_NONE; - if (week_view->use_small_font && week_view->small_font_desc) { + if (week_view->use_small_font && week_view->small_font) { if (week_view->show_event_end_times && width / 2 > time_width * 2 + E_WEEK_VIEW_EVENT_TIME_SPACING) week_view->time_format = E_WEEK_VIEW_TIME_BOTH_SMALL_MIN; @@ -965,6 +968,22 @@ e_week_view_expose_event (GtkWidget *widget, return FALSE; } + +static void +e_week_view_draw (GtkWidget *widget, + GdkRectangle *area) +{ + EWeekView *week_view; + + week_view = E_WEEK_VIEW (widget); + + e_week_view_draw_shadow (week_view); + + if (GTK_WIDGET_CLASS (parent_class)->draw) + (*GTK_WIDGET_CLASS (parent_class)->draw)(widget, area); +} + + static void e_week_view_draw_shadow (EWeekView *week_view) { @@ -1077,7 +1096,7 @@ query_obj_updated_cb (CalQuery *query, const char *uid, g_print ("updated object's dates unchanged\n"); #endif e_week_view_foreach_event_with_uid (week_view, uid, e_week_view_update_event_cb, comp); - g_object_unref (comp); + gtk_object_unref (GTK_OBJECT (comp)); gtk_widget_queue_draw (week_view->main_canvas); return; } @@ -1102,7 +1121,7 @@ query_obj_updated_cb (CalQuery *query, const char *uid, cal_client_resolve_tzid_cb, week_view->client, week_view->zone); - g_object_unref (comp); + gtk_object_unref (GTK_OBJECT (comp)); e_week_view_queue_layout (week_view); } @@ -1208,9 +1227,8 @@ update_query (EWeekView *week_view) week_view->query = NULL; if (old_query) { - g_signal_handlers_disconnect_matched (old_query, G_SIGNAL_MATCH_DATA, - 0, 0, NULL, NULL, week_view); - g_object_unref (old_query); + gtk_signal_disconnect_by_data (GTK_OBJECT (old_query), week_view); + gtk_object_unref (GTK_OBJECT (old_query)); } g_assert (week_view->sexp != NULL); @@ -1229,14 +1247,14 @@ update_query (EWeekView *week_view) return; } - g_signal_connect (week_view->query, "obj_updated", - G_CALLBACK (query_obj_updated_cb), week_view); - g_signal_connect (week_view->query, "obj_removed", - G_CALLBACK (query_obj_removed_cb), week_view); - g_signal_connect (week_view->query, "query_done", - G_CALLBACK (query_query_done_cb), week_view); - g_signal_connect (week_view->query, "eval_error", - G_CALLBACK (query_eval_error_cb), week_view); + gtk_signal_connect (GTK_OBJECT (week_view->query), "obj_updated", + GTK_SIGNAL_FUNC (query_obj_updated_cb), week_view); + gtk_signal_connect (GTK_OBJECT (week_view->query), "obj_removed", + GTK_SIGNAL_FUNC (query_obj_removed_cb), week_view); + gtk_signal_connect (GTK_OBJECT (week_view->query), "query_done", + GTK_SIGNAL_FUNC (query_query_done_cb), week_view); + gtk_signal_connect (GTK_OBJECT (week_view->query), "eval_error", + GTK_SIGNAL_FUNC (query_eval_error_cb), week_view); } /* Callback used when the calendar client finishes opening */ @@ -1274,11 +1292,11 @@ e_week_view_set_cal_client (EWeekView *week_view, g_return_if_fail (IS_CAL_CLIENT (client)); if (client) - g_object_ref (client); + gtk_object_ref (GTK_OBJECT (client)); if (week_view->client) { - g_signal_handlers_disconnect_matched (week_view->client, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, week_view); - g_object_unref (week_view->client); + gtk_signal_disconnect_by_data (GTK_OBJECT (week_view->client), week_view); + gtk_object_unref (GTK_OBJECT (week_view->client)); } week_view->client = client; @@ -1287,8 +1305,8 @@ e_week_view_set_cal_client (EWeekView *week_view, if (cal_client_get_load_state (week_view->client) == CAL_CLIENT_LOAD_LOADED) update_query (week_view); else - g_signal_connect (week_view->client, "cal_opened", - G_CALLBACK (cal_opened_cb), week_view); + gtk_signal_connect (GTK_OBJECT (week_view->client), "cal_opened", + GTK_SIGNAL_FUNC (cal_opened_cb), week_view); } } @@ -1988,9 +2006,9 @@ e_week_view_update_event_cb (EWeekView *week_view, event = &g_array_index (week_view->events, EWeekViewEvent, event_num); - g_object_unref (event->comp); + gtk_object_unref (GTK_OBJECT (event->comp)); event->comp = comp; - g_object_ref (comp); + gtk_object_ref (GTK_OBJECT (comp)); for (span_num = 0; span_num < event->num_spans; span_num++) { span = &g_array_index (week_view->spans, EWeekViewEventSpan, @@ -2075,7 +2093,7 @@ e_week_view_remove_event_cb (EWeekView *week_view, } } - g_object_unref (event->comp); + gtk_object_unref (GTK_OBJECT (event->comp)); g_array_remove_index (week_view->events, event_num); week_view->events_need_layout = TRUE; @@ -2420,7 +2438,7 @@ e_week_view_free_events (EWeekView *week_view) for (event_num = 0; event_num < week_view->events->len; event_num++) { event = &g_array_index (week_view->events, EWeekViewEvent, event_num); - g_object_unref (event->comp); + gtk_object_unref (GTK_OBJECT (event->comp)); } g_array_set_size (week_view->events, 0); @@ -2487,7 +2505,7 @@ e_week_view_add_event (CalComponent *comp, week_view->zone); event.comp = comp; - g_object_ref (event.comp); + gtk_object_ref (GTK_OBJECT (event.comp)); event.start = start; event.end = end; event.spans_index = 0; @@ -2649,7 +2667,7 @@ e_week_view_reshape_event_span (EWeekView *week_view, span = &g_array_index (week_view->spans, EWeekViewEventSpan, event->spans_index + span_num); comp = event->comp; - font = gtk_style_get_font (gtk_widget_get_style (GTK_WIDGET (week_view))); + font = GTK_WIDGET (week_view)->style->font; one_day_event = e_week_view_is_one_day_event (week_view, event_num); @@ -2721,20 +2739,20 @@ e_week_view_reshape_event_span (EWeekView *week_view, span->text_item = gnome_canvas_item_new (GNOME_CANVAS_GROUP (GNOME_CANVAS (week_view->main_canvas)->root), e_text_get_type (), -#if 0 - "font_gdk", font, -#endif + "font_gdk", GTK_WIDGET (week_view)->style->font, "anchor", GTK_ANCHOR_NW, "clip", TRUE, +#if 0 "max_lines", 1, +#endif "editable", TRUE, "text", text.value ? text.value : "", "use_ellipsis", TRUE, "fill_color_rgba", GNOME_CANVAS_COLOR(0, 0, 0), NULL); - g_signal_connect (span->text_item, "event", - G_CALLBACK (e_week_view_on_text_item_event), - week_view); + gtk_signal_connect (GTK_OBJECT (span->text_item), "event", + GTK_SIGNAL_FUNC (e_week_view_on_text_item_event), + week_view); } /* Calculate the position of the text item. @@ -2805,7 +2823,9 @@ e_week_view_reshape_event_span (EWeekView *week_view, /* Get the width of the text of the event. This is a bit of a hack. It would be better if EText could tell us this. */ - g_object_get (G_OBJECT (span->text_item), "text", &text, NULL); + gtk_object_get (GTK_OBJECT (span->text_item), + "text", &text, + NULL); text_width = 0; if (text) { /* It should only have one line of text in it. @@ -2957,12 +2977,14 @@ e_week_view_start_editing_event (EWeekView *week_view, e_canvas_item_grab_focus (span->text_item, TRUE); /* Try to move the cursor to the end of the text. */ - g_object_get (G_OBJECT (span->text_item), "event_processor", &event_processor, NULL); + gtk_object_get (GTK_OBJECT (span->text_item), + "event_processor", &event_processor, + NULL); if (event_processor) { command.action = E_TEP_MOVE; command.position = E_TEP_END_OF_BUFFER; - g_signal_emit_by_name (event_processor, - "command", &command); + gtk_signal_emit_by_name (GTK_OBJECT (event_processor), + "command", &command); } } @@ -3004,7 +3026,9 @@ cancel_editing (EWeekView *week_view) /* Reset the text to what was in the component */ cal_component_get_summary (event->comp, &summary); - g_object_set (G_OBJECT (span->text_item), "text", summary.value ? summary.value : "", NULL); + gtk_object_set (GTK_OBJECT (span->text_item), + "text", summary.value ? summary.value : "", + NULL); /* Stop editing */ e_week_view_stop_editing_event (week_view); @@ -3014,7 +3038,7 @@ cancel_editing (EWeekView *week_view) * a pointer to a boolean; will set it to TRUE. */ static void -comp_destroy_cb (gpointer data, GObject *deadbeef) +comp_destroy_cb (GtkObject *object, gpointer data) { gboolean *destroyed; @@ -3077,17 +3101,19 @@ e_week_view_on_text_item_event (GnomeCanvasItem *item, if (gdkevent->button.button == 3) { EWeekViewEvent *e; gboolean destroyed; + int id; e = &g_array_index (week_view->events, EWeekViewEvent, event_num); destroyed = FALSE; - g_object_weak_ref ((GObject *) e->comp, comp_destroy_cb, &destroyed); + id = gtk_signal_connect (GTK_OBJECT (e->comp), "destroy", + GTK_SIGNAL_FUNC (comp_destroy_cb), &destroyed); if (!GTK_WIDGET_HAS_FOCUS (week_view)) gtk_widget_grab_focus (GTK_WIDGET (week_view)); if (!destroyed) { - g_object_weak_unref ((GObject *) e->comp, comp_destroy_cb, &destroyed); + gtk_signal_disconnect (GTK_OBJECT (e->comp), id); e_week_view_set_selected_time_range_visible (week_view, e->start, e->end); @@ -3226,7 +3252,9 @@ e_week_view_on_editing_stopped (EWeekView *week_view, if (!uid) return; - g_object_get (G_OBJECT (span->text_item), "text", &text, NULL); + gtk_object_get (GTK_OBJECT (span->text_item), + "text", &text, + NULL); g_assert (text != NULL); if (string_is_empty (text) && !cal_comp_is_on_server (event->comp, week_view->client)) { @@ -3457,7 +3485,7 @@ e_week_view_key_press (GtkWidget *widget, GdkEventKey *event) if (initial_text) g_free (initial_text); - g_object_unref (comp); + gtk_object_unref (GTK_OBJECT (comp)); return TRUE; } @@ -3504,60 +3532,60 @@ enum { }; static EPopupMenu main_items [] = { - E_POPUP_ITEM (N_("New _Appointment..."), GTK_SIGNAL_FUNC (e_week_view_on_new_appointment), MASK_EDITABLE), - E_POPUP_ITEM (N_("New All Day _Event"), GTK_SIGNAL_FUNC (e_week_view_on_new_event), MASK_EDITABLE), - E_POPUP_ITEM (N_("New Meeting"), GTK_SIGNAL_FUNC (e_week_view_on_new_meeting), MASK_EDITABLE), - E_POPUP_ITEM (N_("New Task"), GTK_SIGNAL_FUNC (e_week_view_on_new_task), MASK_EDITABLE), + E_POPUP_ITEM (N_("New _Appointment..."), e_week_view_on_new_appointment, MASK_EDITABLE), + E_POPUP_ITEM (N_("New All Day _Event"), e_week_view_on_new_event, MASK_EDITABLE), + E_POPUP_ITEM (N_("New Meeting"), e_week_view_on_new_meeting, MASK_EDITABLE), + E_POPUP_ITEM (N_("New Task"), e_week_view_on_new_task, MASK_EDITABLE), E_POPUP_SEPARATOR, - E_POPUP_ITEM (N_("_Print..."), GTK_SIGNAL_FUNC (e_week_view_on_print), 0), + E_POPUP_ITEM (N_("_Print..."), e_week_view_on_print, 0), E_POPUP_SEPARATOR, - E_POPUP_ITEM (N_("_Paste"), GTK_SIGNAL_FUNC (e_week_view_on_paste), MASK_EDITABLE), + E_POPUP_ITEM (N_("_Paste"), e_week_view_on_paste, MASK_EDITABLE), E_POPUP_SEPARATOR, E_POPUP_SUBMENU (N_("Current View"), NULL, 0), - E_POPUP_ITEM (N_("Go to _Today"), GTK_SIGNAL_FUNC (e_week_view_on_goto_today), 0), - E_POPUP_ITEM (N_("_Go to Date..."), GTK_SIGNAL_FUNC (e_week_view_on_goto_date), 0), + E_POPUP_ITEM (N_("Go to _Today"), e_week_view_on_goto_today, 0), + E_POPUP_ITEM (N_("_Go to Date..."), e_week_view_on_goto_date, 0), E_POPUP_SEPARATOR, - E_POPUP_ITEM (N_("_Publish Free/Busy Information"), GTK_SIGNAL_FUNC (e_week_view_on_publish), 0), + E_POPUP_ITEM (N_("_Publish Free/Busy Information"), e_week_view_on_publish, 0), E_POPUP_SEPARATOR, - E_POPUP_ITEM (N_("_Settings..."), GTK_SIGNAL_FUNC (e_week_view_on_settings), 0), + E_POPUP_ITEM (N_("_Settings..."), e_week_view_on_settings, 0), E_POPUP_TERMINATOR }; static EPopupMenu child_items [] = { - E_POPUP_ITEM (N_("_Open"), GTK_SIGNAL_FUNC (e_week_view_on_edit_appointment), MASK_EDITING), - E_POPUP_ITEM (N_("_Save As..."), GTK_SIGNAL_FUNC (e_week_view_on_save_as), MASK_EDITING), - E_POPUP_ITEM (N_("_Print..."), GTK_SIGNAL_FUNC (e_week_view_on_print_event), MASK_EDITING), + E_POPUP_ITEM (N_("_Open"), e_week_view_on_edit_appointment, MASK_EDITING), + E_POPUP_ITEM (N_("_Save As..."), e_week_view_on_save_as, MASK_EDITING), + E_POPUP_ITEM (N_("_Print..."), e_week_view_on_print_event, MASK_EDITING), /* Only show this separator if one of the above is shown. */ E_POPUP_SEPARATOR, - E_POPUP_ITEM (N_("C_ut"), GTK_SIGNAL_FUNC (e_week_view_on_cut), MASK_EDITING | MASK_EDITABLE | MASK_MEETING_ORGANIZER), - E_POPUP_ITEM (N_("_Copy"), GTK_SIGNAL_FUNC (e_week_view_on_copy), MASK_EDITING | MASK_MEETING_ORGANIZER), - E_POPUP_ITEM (N_("_Paste"), GTK_SIGNAL_FUNC (e_week_view_on_paste), MASK_EDITABLE), + E_POPUP_ITEM (N_("C_ut"), e_week_view_on_cut, MASK_EDITING | MASK_EDITABLE | MASK_MEETING_ORGANIZER), + E_POPUP_ITEM (N_("_Copy"), e_week_view_on_copy, MASK_EDITING | MASK_MEETING_ORGANIZER), + E_POPUP_ITEM (N_("_Paste"), e_week_view_on_paste, MASK_EDITABLE), E_POPUP_SEPARATOR, - E_POPUP_ITEM (N_("_Schedule Meeting..."), GTK_SIGNAL_FUNC (e_week_view_on_meeting), MASK_EDITABLE | MASK_EDITING | MASK_MEETING), - E_POPUP_ITEM (N_("_Forward as iCalendar..."), GTK_SIGNAL_FUNC (e_week_view_on_forward), MASK_EDITING), + E_POPUP_ITEM (N_("_Schedule Meeting..."), e_week_view_on_meeting, MASK_EDITABLE | MASK_EDITING | MASK_MEETING), + E_POPUP_ITEM (N_("_Forward as iCalendar..."), e_week_view_on_forward, MASK_EDITING), E_POPUP_SEPARATOR, - E_POPUP_ITEM (N_("_Delete"), GTK_SIGNAL_FUNC (e_week_view_on_delete_appointment), MASK_EDITABLE | MASK_SINGLE | MASK_EDITING), - E_POPUP_ITEM (N_("Make this Occurrence _Movable"), GTK_SIGNAL_FUNC (e_week_view_on_unrecur_appointment), MASK_RECURRING | MASK_EDITING | MASK_EDITABLE | MASK_INSTANCE), - E_POPUP_ITEM (N_("Delete this _Occurrence"), GTK_SIGNAL_FUNC (e_week_view_on_delete_occurrence), MASK_RECURRING | MASK_EDITING | MASK_EDITABLE), - E_POPUP_ITEM (N_("Delete _All Occurrences"), GTK_SIGNAL_FUNC (e_week_view_on_delete_appointment), MASK_RECURRING | MASK_EDITING | MASK_EDITABLE), + E_POPUP_ITEM (N_("_Delete"), e_week_view_on_delete_appointment, MASK_EDITABLE | MASK_SINGLE | MASK_EDITING), + E_POPUP_ITEM (N_("Make this Occurrence _Movable"), e_week_view_on_unrecur_appointment, MASK_RECURRING | MASK_EDITING | MASK_EDITABLE | MASK_INSTANCE), + E_POPUP_ITEM (N_("Delete this _Occurrence"), e_week_view_on_delete_occurrence, MASK_RECURRING | MASK_EDITING | MASK_EDITABLE), + E_POPUP_ITEM (N_("Delete _All Occurrences"), e_week_view_on_delete_appointment, MASK_RECURRING | MASK_EDITING | MASK_EDITABLE), E_POPUP_TERMINATOR }; @@ -3629,7 +3657,8 @@ e_week_view_show_popup_menu (EWeekView *week_view, week_view->popup_event_num = event_num; popup = e_popup_menu_create (context_menu, disable_mask, hide_mask, week_view); - g_signal_connect (popup, "selection-done", G_CALLBACK (free_view_popup), week_view); + gtk_signal_connect (GTK_OBJECT (popup), "selection-done", + GTK_SIGNAL_FUNC (free_view_popup), week_view); e_popup_menu (popup, (GdkEvent *) bevent); } @@ -3854,7 +3883,7 @@ e_week_view_on_publish (GtkWidget *widget, gpointer data) itip_send_comp (CAL_COMPONENT_METHOD_PUBLISH, comp, week_view->client, NULL); - g_object_unref (comp); + gtk_object_unref (GTK_OBJECT (comp)); } g_list_free (comp_list); @@ -3905,7 +3934,7 @@ e_week_view_on_delete_occurrence (GtkWidget *widget, gpointer data) if (cal_client_update_object (week_view->client, comp) != CAL_CLIENT_RESULT_SUCCESS) g_message ("e_week_view_on_delete_occurrence(): Could not update the object!"); - g_object_unref (comp); + gtk_object_unref (GTK_OBJECT (comp)); } @@ -4085,12 +4114,12 @@ e_week_view_on_unrecur_appointment (GtkWidget *widget, gpointer data) if (cal_client_update_object (week_view->client, comp) != CAL_CLIENT_RESULT_SUCCESS) g_message ("e_week_view_on_unrecur_appointment(): Could not update the object!"); - g_object_unref (comp); + gtk_object_unref (GTK_OBJECT (comp)); if (cal_client_update_object (week_view->client, new_comp) != CAL_CLIENT_RESULT_SUCCESS) g_message ("e_week_view_on_unrecur_appointment(): Could not update the object!"); - g_object_unref (new_comp); + gtk_object_unref (GTK_OBJECT (new_comp)); } @@ -4157,7 +4186,7 @@ e_week_view_get_time_string_width (EWeekView *week_view) { gint time_width; - if (week_view->use_small_font && week_view->small_font_desc) + if (week_view->use_small_font && week_view->small_font) time_width = week_view->digit_width * 2 + week_view->small_digit_width * 2; else @@ -4292,7 +4321,7 @@ selection_received (GtkWidget *invisible, cal_client_update_object (week_view->client, comp); g_free (uid); - g_object_unref (comp); + gtk_object_unref (GTK_OBJECT (comp)); } subcomp = icalcomponent_get_next_component ( icalcomp, ICAL_ANY_COMPONENT); @@ -4334,7 +4363,7 @@ selection_received (GtkWidget *invisible, itip_send_comp (CAL_COMPONENT_METHOD_REQUEST, comp, week_view->client, NULL); g_free (uid); - g_object_unref (comp); + gtk_object_unref (GTK_OBJECT (comp)); } e_week_view_set_status_message (week_view, NULL); @@ -4414,7 +4443,7 @@ e_week_view_set_status_message (EWeekView *week_view, const char *message) if (!message || !*message) { if (week_view->activity) { - g_object_unref (week_view->activity); + gtk_object_unref (GTK_OBJECT (week_view->activity)); week_view->activity = NULL; } } @@ -4423,7 +4452,7 @@ e_week_view_set_status_message (EWeekView *week_view, const char *message) char *client_id = g_strdup_printf ("%p", week_view); if (progress_icon[0] == NULL) - progress_icon[0] = gdk_pixbuf_new_from_file (EVOLUTION_IMAGESDIR "/" EVOLUTION_CALENDAR_PROGRESS_IMAGE, NULL); + progress_icon[0] = gdk_pixbuf_new_from_file (EVOLUTION_IMAGESDIR "/" EVOLUTION_CALENDAR_PROGRESS_IMAGE); week_view->activity = evolution_activity_client_new ( global_shell_client, client_id, progress_icon, message, TRUE, &display); |