2003-01-25 Hans Petter Jansson <hpj@ximian.com> Mainly making all views use PangoLayouts for text. When drawing a PangoLayout, the draw offset is the top left corner of the layout, not the text's baseline. Keep this in mind when viewing the changes. I'll be brief about the exact changes, since they speak better for themselves. * gui/e-day-view-time-item.c (e_day_view_time_item_get_column_width): Use Pango. (e_day_view_time_item_draw): Use Pango. * gui/e-day-view-top-item.c (e_day_view_top_item_draw): Use Pango. (e_day_view_top_item_draw_long_event): Add some FIXME text so we can see when this is being used. Is it in use at all? * gui/e-day-view.c: No longer specify an explicit X font string for the large font. Use the main font, and change the point size. (e_day_view_init): Use Pango. (e_day_view_style_set): Use Pango. Comment out the gdk_font setting for the drag text items for now. * gui/e-day-view.h: Use Pango. * gui/e-week-view-event-item.c (e_week_view_draw_time): Use Pango. * gui/e-week-view-main-item.c (e_week_view_main_item_draw_day): Use Pango. * gui/e-week-view-titles-item.c (e_week_view_titles_item_draw): Use Pango. * gui/e-week-view.c: No longer specify an explicit X font string for the small font. Use the main font, and change the point size. (e_week_view_init): Use Pango. (e_week_view_destroy): Use Pango. (get_string_width): Implemented for convenience. (get_digit_width): Implemented for convenience. (e_week_view_style_set): Use Pango. (e_week_view_recalc_cell_sizes): Use Pango. (e_week_view_get_time_string_width): Use Pango. * gui/e-week-view.h: Use Pango. Following are some random UTF-8 fixes and a crash fix. * gui/itip-utils.c (comp_description): Use g_locale_to_utf8 (). * gui/dialogs/comp-editor.c (make_title_from_comp): Return a UTF-8 string. * gui/dialogs/alarm-page.c (alarm_page_set_summary): Pass UTF-8 directly to GTK. * gui/dialogs/delete-comp.c (delete_component_dialog): Ditto. * gui/dialogs/meeting-page.c (meeting_page_fill_widgets): Ditto. (meeting_page_construct): Ditto. * gui/dialogs/recurrence-page.c (recurrence_page_set_summary): Ditto. * gui/dialogs/event-editor.c (event_editor_finalize): Fix crash caused by gtk_object_destroy()-ing a non-GtkObject. svn path=/trunk/; revision=19628
160 lines
4.6 KiB
C
160 lines
4.6 KiB
C
/* Evolution calendar - Delete calendar component dialog
|
||
*
|
||
* Copyright (C) 2001 Ximian, Inc.
|
||
*
|
||
* Author: Federico Mena-Quintero <federico@ximian.com>
|
||
*
|
||
* This program is free software; you can redistribute it and/or
|
||
* modify it under the terms of version 2 of the GNU General Public
|
||
* License as published by the Free Software Foundation.
|
||
*
|
||
* This program is distributed in the hope that it will be useful,
|
||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
* GNU General Public License for more details.
|
||
*
|
||
* You should have received a copy of the GNU General Public License
|
||
* along with this program; if not, write to the Free Software
|
||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||
*/
|
||
|
||
#ifdef HAVE_CONFIG_H
|
||
#include <config.h>
|
||
#endif
|
||
|
||
#include <glib.h>
|
||
#include <gtk/gtkstock.h>
|
||
#include <gtk/gtkmessagedialog.h>
|
||
#include <libgnome/gnome-i18n.h>
|
||
#include <gal/widgets/e-unicode.h>
|
||
#include "../calendar-config.h"
|
||
#include "delete-comp.h"
|
||
|
||
|
||
|
||
/**
|
||
* delete_component_dialog:
|
||
* @comp: A calendar component if a single component is to be deleted, or NULL
|
||
* if more that one component is to be deleted.
|
||
* @consider_as_untitled: If deleting more than one component, this is ignored.
|
||
* Otherwise, whether to consider the component as not having a summary; if
|
||
* FALSE then the component's summary string will be used.
|
||
* @n_comps: Number of components that are to be deleted.
|
||
* @vtype: Type of the components that are to be deleted. This is ignored
|
||
* if only one component is to be deleted, and the vtype is extracted from
|
||
* the component instead.
|
||
* @widget: A widget to use as a basis for conversion from UTF8 into font
|
||
* encoding.
|
||
*
|
||
* Pops up a dialog box asking the user whether he wants to delete a number of
|
||
* calendar components. The dialog will not appear, however, if the
|
||
* configuration option for confirmation is turned off.
|
||
*
|
||
* Return value: TRUE if the user clicked Yes, FALSE otherwise. If the
|
||
* configuration option for confirmation is turned off, this function will
|
||
* unconditionally return TRUE.
|
||
**/
|
||
gboolean
|
||
delete_component_dialog (CalComponent *comp,
|
||
gboolean consider_as_untitled,
|
||
int n_comps, CalComponentVType vtype,
|
||
GtkWidget *widget)
|
||
{
|
||
char *str;
|
||
GtkWidget *dialog;
|
||
int ret;
|
||
|
||
if (comp) {
|
||
g_return_val_if_fail (IS_CAL_COMPONENT (comp), FALSE);
|
||
g_return_val_if_fail (n_comps == 1, FALSE);
|
||
} else {
|
||
g_return_val_if_fail (n_comps > 1, FALSE);
|
||
g_return_val_if_fail (vtype != CAL_COMPONENT_NO_TYPE, FALSE);
|
||
}
|
||
|
||
g_return_val_if_fail (widget != NULL, FALSE);
|
||
g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE);
|
||
|
||
if (!calendar_config_get_confirm_delete ())
|
||
return TRUE;
|
||
|
||
if (comp) {
|
||
CalComponentText summary;
|
||
char *tmp;
|
||
|
||
vtype = cal_component_get_vtype (comp);
|
||
|
||
if (!consider_as_untitled) {
|
||
cal_component_get_summary (comp, &summary);
|
||
tmp = g_strdup (summary.value);
|
||
} else
|
||
tmp = NULL;
|
||
|
||
switch (vtype) {
|
||
case CAL_COMPONENT_EVENT:
|
||
if (tmp)
|
||
str = g_strdup_printf (_("Are you sure you want to delete "
|
||
"the appointment `%s'?"), tmp);
|
||
else
|
||
str = g_strdup (_("Are you sure you want to delete this "
|
||
"untitled appointment?"));
|
||
break;
|
||
|
||
case CAL_COMPONENT_TODO:
|
||
if (tmp)
|
||
str = g_strdup_printf (_("Are you sure you want to delete "
|
||
"the task `%s'?"), tmp);
|
||
else
|
||
str = g_strdup (_("Are you sure you want to delete this "
|
||
"untitled task?"));
|
||
break;
|
||
|
||
case CAL_COMPONENT_JOURNAL:
|
||
if (tmp)
|
||
str = g_strdup_printf (_("Are you sure you want to delete "
|
||
"the journal entry `%s'?"), tmp);
|
||
else
|
||
str = g_strdup (_("Are you sure want to delete this "
|
||
"untitled journal entry?"));
|
||
break;
|
||
|
||
default:
|
||
g_message ("delete_component_dialog(): Cannot handle object of type %d",
|
||
vtype);
|
||
g_free (tmp);
|
||
return FALSE;
|
||
}
|
||
|
||
g_free (tmp);
|
||
} else {
|
||
switch (vtype) {
|
||
case CAL_COMPONENT_EVENT:
|
||
str = g_strdup_printf (_("Are you sure you want to delete "
|
||
"%d appointments?"), n_comps);
|
||
break;
|
||
|
||
case CAL_COMPONENT_TODO:
|
||
str = g_strdup_printf (_("Are you sure you want to delete "
|
||
"%d tasks?"), n_comps);
|
||
break;
|
||
|
||
case CAL_COMPONENT_JOURNAL:
|
||
str = g_strdup_printf (_("Are you sure you want to delete "
|
||
"%d journal entries?"), n_comps);
|
||
break;
|
||
|
||
default:
|
||
g_message ("delete_component_dialog(): Cannot handle objects of type %d",
|
||
vtype);
|
||
return FALSE;
|
||
}
|
||
}
|
||
|
||
dialog = gtk_message_dialog_new(NULL, 0, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, "%s", str);
|
||
g_free (str);
|
||
ret = gtk_dialog_run((GtkDialog *)dialog) == GTK_RESPONSE_YES;
|
||
gtk_widget_destroy(dialog);
|
||
|
||
return ret;
|
||
}
|