In the spirit of friendly competition (and financial self-interest ;), here's my solution for this. Basically, what I've done for this was to EConfig-ize the calendar preferences page and move publishing into a plugin (because EPlugin is just so very slick). A side effect of this is that the calendar config page is a lot more consistent in terms of spacing, etc. As another part of this, I've folded Free/Busy publishing into the same system, so you can select "publish as: [free busy/ical]". Also, I've made the actions->publish menu item part of the shell menus rather than the component, since try as I might, I just couldn't get calendar.bonobomenu to cooperate. If anyone has any advice on this, I'd be thrilled to hear it. Should this go in, there are a couple more steps. Neither of these should have a significant impact on what's already there: 1. I'd like to add an "automatic" publishing mode that just pushes a new version whenever a calendar is changed. 2. Simple publish-as HTML option. I'm thinking at this point that it can't be too complicated, since if a user wants a good online calendar, they'll do much better with phpicalendar or another similar piece of software. Note that while I've tried to test the new Free/Busy publishing stuff to avoid regressions, I don't use it personally, so I may have missed something important in terms of functionality. Let the games begin :) -David
Attachment:
publishing-plugin.tar.gz
Description: application/compressed-tar
? plugins/publish-calendar Index: configure.in =================================================================== RCS file: /cvs/gnome/evolution/configure.in,v retrieving revision 1.794 diff -u -r1.794 configure.in --- configure.in 27 Mar 2005 12:20:55 -0000 1.794 +++ configure.in 29 Mar 2005 02:28:25 -0000 @@ -1335,9 +1335,9 @@ AC_ARG_ENABLE(plugins, [ --enable-plugins=[no/base/all/experimental/list] Enable plugins.],enable_plugins="$enableval",enable_plugins=all) dnl Add any new plugins here -plugins_base="calendar-file calendar-http calendar-weather groupwise-account-setup itip-formatter plugin-manager send-options shared-folder groupwise-send-options exchange-account-setup groupwise-status-tracking default-source addressbook-file addressbook-groupwise startup-wizard" +plugins_base="calendar-file calendar-http calendar-weather groupwise-account-setup itip-formatter plugin-manager send-options shared-folder groupwise-send-options exchange-account-setup groupwise-status-tracking default-source addressbook-file addressbook-groupwise startup-wizard" -plugins_standard="bbdb subject-thread save-attachments prefer-plain save-calendar select-one-source copy-tool mail-to-task mark-calendar-offline audio-inline mailing-list-actions new-mail-notify" +plugins_standard="bbdb subject-thread save-attachments prefer-plain save-calendar select-one-source copy-tool mail-to-task mark-calendar-offline audio-inline mailing-list-actions new-mail-notify publish-calendar" plugins_experimental="backup-restore folder-unsubscribe mail-to-meeting" @@ -1590,6 +1590,7 @@ plugins/addressbook-file/Makefile plugins/addressbook-groupwise/Makefile plugins/startup-wizard/Makefile +plugins/publish-calendar/Makefile smime/Makefile smime/lib/Makefile smime/gui/Makefile Index: calendar/ChangeLog =================================================================== RCS file: /cvs/gnome/evolution/calendar/ChangeLog,v retrieving revision 1.2703 diff -u -r1.2703 ChangeLog --- calendar/ChangeLog 28 Mar 2005 11:27:17 -0000 1.2703 +++ calendar/ChangeLog 29 Mar 2005 02:28:29 -0000 @@ -1,3 +1,21 @@ +2005-03-28 David Trowbridge <trowbrds cs colorado edu> + + * gui/Makefile.am, gui/calendar-commands.c, + gui/calendar-componet.[hc], gui/calendar-config-keys.h, + gui/calendar-config.c, gui/e-calendar-view.c: remove references to the + old f/b publishing code + + * gui/e-cal-config.[hc]: add 'prefs' target + + * gui/main.c: remove calls to publishing, use new EConfig-based + preferences dialog + + * gui/dialogs/Makefile.am, gui/dialogs/cal-prefs-dialog.[ch]: Convert + to use EConfig + + * gui/dialogs/cal-prefs-dialog.glade: reorganize for EConfig and clean + up UI for better HIG compliance + 2005-03-28 Rodrigo Moya <rodrigo novell com> Fixes #44719 Index: calendar/gui/Makefile.am =================================================================== RCS file: /cvs/gnome/evolution/calendar/gui/Makefile.am,v retrieving revision 1.303 diff -u -r1.303 Makefile.am --- calendar/gui/Makefile.am 7 Jan 2005 11:38:57 -0000 1.303 +++ calendar/gui/Makefile.am 29 Mar 2005 02:28:29 -0000 @@ -167,8 +167,6 @@ e-meeting-utils.h \ e-mini-calendar-config.c \ e-mini-calendar-config.h \ - e-pub-utils.c \ - e-pub-utils.h \ e-select-names-editable.c \ e-select-names-editable.h \ e-select-names-renderer.c \ Index: calendar/gui/calendar-commands.c =================================================================== RCS file: /cvs/gnome/evolution/calendar/gui/calendar-commands.c,v retrieving revision 1.159 diff -u -r1.159 calendar-commands.c --- calendar/gui/calendar-commands.c 1 Feb 2005 11:46:33 -0000 1.159 +++ calendar/gui/calendar-commands.c 29 Mar 2005 02:28:29 -0000 @@ -62,7 +62,6 @@ #include "print.h" #include "dialogs/cal-prefs-dialog.h" #include "itip-utils.h" -#include "e-pub-utils.h" #include "e-cal-list-view.h" #include "evolution-shell-component-utils.h" #include "e-util/e-icon-factory.h" @@ -331,12 +330,6 @@ } static void -publish_freebusy_cmd (BonoboUIComponent *uic, gpointer data, const gchar *path) -{ - e_pub_publish (TRUE); -} - -static void purge_cmd (BonoboUIComponent *uic, gpointer data, const gchar *path) { GnomeCalendar *gcal; @@ -616,7 +609,6 @@ BONOBO_UI_VERB ("ShowMonthView", show_month_view_clicked), BONOBO_UI_VERB ("ShowListView", show_list_view_clicked), - BONOBO_UI_VERB ("PublishFreeBusy", publish_freebusy_cmd), BONOBO_UI_VERB ("CalendarPurge", purge_cmd), BONOBO_UI_VERB_END Index: calendar/gui/calendar-component.c =================================================================== RCS file: /cvs/gnome/evolution/calendar/gui/calendar-component.c,v retrieving revision 1.201 diff -u -r1.201 calendar-component.c --- calendar/gui/calendar-component.c 22 Mar 2005 15:09:10 -0000 1.201 +++ calendar/gui/calendar-component.c 29 Mar 2005 02:28:29 -0000 @@ -35,7 +35,6 @@ #include <libecal/e-cal-time-util.h> #include <libedataserverui/e-source-selector.h> #include <shell/e-user-creatable-items-handler.h> -#include "e-pub-utils.h" #include "e-calendar-view.h" #include "calendar-config-keys.h" #include "calendar-config.h" @@ -739,25 +738,6 @@ update_primary_task_selection (data); } -static gboolean -init_calendar_publishing_cb (gpointer data) -{ - /* Publish if it is time to publish again */ - e_pub_publish (FALSE); - - return FALSE; -} - -static void -conf_changed_callback (GConfClient *client, - unsigned int connection_id, - GConfEntry *entry, - void *user_data) -{ - /* publish config changed, so publish */ - e_pub_publish (TRUE); -} - /* Evolution::Component CORBA methods. */ static void impl_handleURI (PortableServer_Servant servant, const char *uri, CORBA_Environment *ev) @@ -1655,27 +1635,6 @@ calendar_component_peek_source_list (CalendarComponent *component) { return component->priv->source_list; -} - -void -calendar_component_init_publishing (void) -{ - guint idle_id = 0; - CalendarComponent *calendar_component; - CalendarComponentPrivate *priv; - - calendar_component = calendar_component_peek (); - - priv = calendar_component->priv; - - gconf_client_add_dir (priv->gconf_client, CALENDAR_CONFIG_PUBLISH, GCONF_CLIENT_PRELOAD_ONELEVEL, NULL); - - priv->gconf_notify_id - = gconf_client_notify_add (priv->gconf_client, CALENDAR_CONFIG_PUBLISH, - (GConfClientNotifyFunc) conf_changed_callback, NULL, - NULL, NULL); - - idle_id = g_idle_add ((GSourceFunc) init_calendar_publishing_cb, GINT_TO_POINTER (idle_id)); } BONOBO_TYPE_FUNC_FULL (CalendarComponent, GNOME_Evolution_Component, PARENT_TYPE, calendar_component) Index: calendar/gui/calendar-component.h =================================================================== RCS file: /cvs/gnome/evolution/calendar/gui/calendar-component.h,v retrieving revision 1.16 diff -u -r1.16 calendar-component.h --- calendar/gui/calendar-component.h 13 Oct 2004 18:37:05 -0000 1.16 +++ calendar/gui/calendar-component.h 29 Mar 2005 02:28:29 -0000 @@ -61,7 +61,5 @@ const char *calendar_component_peek_config_directory (CalendarComponent *component); ESourceList *calendar_component_peek_source_list (CalendarComponent *component); -void calendar_component_init_publishing (void); - #endif /* _CALENDAR_COMPONENT_H_ */ Index: calendar/gui/calendar-config-keys.h =================================================================== RCS file: /cvs/gnome/evolution/calendar/gui/calendar-config-keys.h,v retrieving revision 1.6 diff -u -r1.6 calendar-config-keys.h --- calendar/gui/calendar-config-keys.h 18 Dec 2004 13:01:17 -0000 1.6 +++ calendar/gui/calendar-config-keys.h 29 Mar 2005 02:28:29 -0000 @@ -71,7 +71,6 @@ #define CALENDAR_CONFIG_DEFAULT_REMINDER_UNITS CALENDAR_CONFIG_PREFIX "/other/default_reminder_units" /* Free/Busy settings */ -#define CALENDAR_CONFIG_PUBLISH CALENDAR_CONFIG_PREFIX"/publish/uris" #define CALENDAR_CONFIG_TEMPLATE CALENDAR_CONFIG_PREFIX"/publish/template" G_END_DECLS Index: calendar/gui/calendar-config.c =================================================================== RCS file: /cvs/gnome/evolution/calendar/gui/calendar-config.c,v retrieving revision 1.72 diff -u -r1.72 calendar-config.c --- calendar/gui/calendar-config.c 31 Dec 2004 16:59:18 -0000 1.72 +++ calendar/gui/calendar-config.c 29 Mar 2005 02:28:30 -0000 @@ -1104,20 +1104,6 @@ return sexp; } -GSList * -calendar_config_get_free_busy (void) -{ - return gconf_client_get_list (config, CALENDAR_CONFIG_PUBLISH, - GCONF_VALUE_STRING, NULL); -} - -void -calendar_config_set_free_busy (GSList *url_list) -{ - gconf_client_set_list (config, CALENDAR_CONFIG_PUBLISH, - GCONF_VALUE_STRING, url_list, NULL); -} - gchar * calendar_config_get_free_busy_template (void) { Index: calendar/gui/e-cal-config.c =================================================================== RCS file: /cvs/gnome/evolution/calendar/gui/e-cal-config.c,v retrieving revision 1.3 diff -u -r1.3 e-cal-config.c --- calendar/gui/e-cal-config.c 31 Jan 2005 21:50:54 -0000 1.3 +++ calendar/gui/e-cal-config.c 29 Mar 2005 02:28:30 -0000 @@ -55,6 +55,9 @@ p->source_changed_id = 0; } break; } + case EC_CONFIG_TARGET_PREFS: { + /* ECalConfigTargetPrefs *s = (ECalConfigTargetPrefs *)t; */ + break; } } } @@ -64,6 +67,11 @@ if (s->source) g_object_unref (s->source); break; } + case EC_CONFIG_TARGET_PREFS: { + ECalConfigTargetPrefs *s = (ECalConfigTargetPrefs *)t; + if (s->gconf) + g_object_unref (s->gconf); + break; } } ((EConfigClass *) ecp_parent_class)->target_free (ec, t); @@ -89,6 +97,9 @@ p->source_changed_id = g_signal_connect (s->source, "changed", G_CALLBACK (ecp_source_changed), ec); break; } + case EC_CONFIG_TARGET_PREFS: { + /* ECalConfigTargetPrefs *s = (ECalConfigTargetPrefs *)t; */ + break; } } } } @@ -143,12 +154,25 @@ return t; } +ECalConfigTargetPrefs * +e_cal_config_target_new_prefs (ECalConfig *ecp, struct _GConfClient *gconf) +{ + ECalConfigTargetPrefs *t = e_config_target_new (&ecp->config, EC_CONFIG_TARGET_PREFS, sizeof (*t)); + + t->gconf = gconf; + if (gconf) + g_object_ref (gconf); + + return t; +} + static const EConfigHookTargetMask ecph_no_masks[] = { { 0 } }; static const EConfigHookTargetMap ecph_targets[] = { { "source", EC_CONFIG_TARGET_SOURCE, ecph_no_masks }, + { "prefs", EC_CONFIG_TARGET_PREFS, ecph_no_masks }, { 0 }, }; Index: calendar/gui/e-cal-config.h =================================================================== RCS file: /cvs/gnome/evolution/calendar/gui/e-cal-config.h,v retrieving revision 1.1 diff -u -r1.1 e-cal-config.h --- calendar/gui/e-cal-config.h 4 Nov 2004 04:36:49 -0000 1.1 +++ calendar/gui/e-cal-config.h 29 Mar 2005 02:28:30 -0000 @@ -44,9 +44,11 @@ enum _e_cal_config_target_t { EC_CONFIG_TARGET_SOURCE, + EC_CONFIG_TARGET_PREFS, }; typedef struct _ECalConfigTargetSource ECalConfigTargetSource; +typedef struct _ECalConfigTargetPrefs ECalConfigTargetPrefs; struct _ECalConfigTargetSource { EConfigTarget target; @@ -54,12 +56,19 @@ struct _ESource *source; }; +struct _ECalConfigTargetPrefs { + EConfigTarget target; + + struct _GConfClient *gconf; +}; + typedef struct _EConfigItem ECalConfigItem; GType e_cal_config_get_type (void); ECalConfig *e_cal_config_new (int type, const char *menuid); ECalConfigTargetSource *e_cal_config_target_new_source (ECalConfig *ecp, struct _ESource *source); +ECalConfigTargetPrefs *e_cal_config_target_new_prefs (ECalConfig *ecp, struct _GConfClient *gconf); /* ********************************************************************** */ Index: calendar/gui/e-calendar-view.c =================================================================== RCS file: /cvs/gnome/evolution/calendar/gui/e-calendar-view.c,v retrieving revision 1.77 diff -u -r1.77 e-calendar-view.c --- calendar/gui/e-calendar-view.c 21 Mar 2005 14:29:15 -0000 1.77 +++ calendar/gui/e-calendar-view.c 29 Mar 2005 02:28:30 -0000 @@ -47,7 +47,6 @@ #include "e-calendar-view.h" #include "e-comp-editor-registry.h" #include "itip-utils.h" -#include "e-pub-utils.h" #include "dialogs/delete-comp.h" #include "dialogs/delete-error.h" #include "dialogs/event-editor.h" @@ -1249,12 +1248,6 @@ } static void -on_publish (EPopup *ep, EPopupItem *pitem, void *data) -{ - e_pub_publish (TRUE); -} - -static void on_delete_appointment (EPopup *ep, EPopupItem *pitem, void *data) { ECalendarView *cal_view = data; @@ -1386,11 +1379,6 @@ { E_POPUP_ITEM, "61.today", N_("Select _Today"), on_goto_today, NULL, GTK_STOCK_HOME }, { E_POPUP_ITEM, "62.todate", N_("_Select Date..."), on_goto_date, NULL, GTK_STOCK_JUMP_TO }, - - { E_POPUP_BAR, "70." }, - - /* TODO: Why is this in a context menu when it applies globally? */ - { E_POPUP_ITEM, "70.publish", N_("_Publish Free/Busy Information"), on_publish, }, }; static EPopupItem ecv_child_items [] = { Index: calendar/gui/main.c =================================================================== RCS file: /cvs/gnome/evolution/calendar/gui/main.c,v retrieving revision 1.172 diff -u -r1.172 main.c --- calendar/gui/main.c 7 Jan 2005 11:38:57 -0000 1.172 +++ calendar/gui/main.c 29 Mar 2005 02:28:30 -0000 @@ -140,8 +140,6 @@ launch_alarm_daemon (); - /* Initialize Calendar Publishing */ - calendar_component_init_publishing (); /* Initialize plugin system */ e_plugin_hook_register_type (e_cal_popup_hook_get_type()); @@ -173,9 +171,16 @@ return object; } else if (strcmp (component_id, ITIP_CONTROL_ID) == 0) return BONOBO_OBJECT (itip_bonobo_control_new ()); - else if (strcmp (component_id, CONFIG_CONTROL_ID) == 0) - return BONOBO_OBJECT (cal_prefs_dialog_new ()); - else if (strcmp (component_id, COMP_EDITOR_FACTORY_ID) == 0) + else if (strcmp (component_id, CONFIG_CONTROL_ID) == 0) { + GtkWidget *prefs; + EvolutionConfigControl *control; + + prefs = calendar_prefs_dialog_new (); + gtk_widget_show_all (prefs); + control = evolution_config_control_new (prefs); + + return BONOBO_OBJECT (control); + } else if (strcmp (component_id, COMP_EDITOR_FACTORY_ID) == 0) return BONOBO_OBJECT (comp_editor_factory_fn ()); g_warning (FACTORY_ID ": Don't know what to do with %s", component_id); Index: calendar/gui/dialogs/Makefile.am =================================================================== RCS file: /cvs/gnome/evolution/calendar/gui/dialogs/Makefile.am,v retrieving revision 1.69 diff -u -r1.69 Makefile.am --- calendar/gui/dialogs/Makefile.am 8 Jan 2005 10:53:52 -0000 1.69 +++ calendar/gui/dialogs/Makefile.am 29 Mar 2005 02:28:31 -0000 @@ -79,9 +79,7 @@ task-details-page.c \ task-details-page.h \ task-page.c \ - task-page.h \ - url-editor-dialog.c \ - url-editor-dialog.h + task-page.h glade_DATA = \ alarm-dialog.glade \ @@ -94,8 +92,7 @@ recurrence-page.glade \ schedule-page.glade \ task-details-page.glade \ - task-page.glade \ - url-editor-dialog.glade + task-page.glade CLEANFILES = $(BUILT_SOURCES) Index: calendar/gui/dialogs/cal-prefs-dialog.c =================================================================== RCS file: /cvs/gnome/evolution/calendar/gui/dialogs/cal-prefs-dialog.c,v retrieving revision 1.41 diff -u -r1.41 cal-prefs-dialog.c --- calendar/gui/dialogs/cal-prefs-dialog.c 31 Dec 2004 16:59:18 -0000 1.41 +++ calendar/gui/dialogs/cal-prefs-dialog.c 29 Mar 2005 02:28:31 -0000 @@ -1,15 +1,17 @@ /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* - * Authors : + * Authors: + * David Trowbridge <trowbrds cs colorado edu> * Damon Chaplin <damon ximian com> * Ettore Perazzoli <ettore ximian com> * - * Copyright 2000, 2001, 2002 Ximian, Inc. + * Copyright (C) 2005 Novell, Inc. (www.novell.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. + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -18,37 +20,22 @@ * * 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 - */ - -/* - * CalPrefsDialog - a GtkObject which handles a libglade-loaded dialog - * to edit the calendar preference settings. + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * */ #ifdef HAVE_CONFIG_H #include <config.h> #endif +#include "../e-cal-config.h" #include "../e-timezone-entry.h" -#include "cal-prefs-dialog.h" #include "../calendar-config.h" -#include "url-editor-dialog.h" - -#include <gtk/gtk.h> -#include <gtk/gtkmain.h> -#include <gtk/gtksignal.h> -#include <gtk/gtkoptionmenu.h> -#include <gtk/gtktogglebutton.h> -#include <libxml/tree.h> -#include <string.h> -#include <libgnome/gnome-i18n.h> -#include <libgnomeui/gnome-color-picker.h> -#include <glade/glade.h> -#include <e-util/e-dialog-widgets.h> +#include "cal-prefs-dialog.h" #include <widgets/misc/e-dateedit.h> - +#include <e-util/e-dialog-widgets.h> +#include <libgnome/gnome-i18n.h> +#include <string.h> static const int week_start_day_map[] = { 1, 2, 3, 4, 5, 6, 0, -1 @@ -67,72 +54,44 @@ CAL_MINUTES, CAL_HOURS, CAL_DAYS, -1 }; -static gboolean get_widgets (DialogData *data); +static GtkVBoxClass *parent_class = NULL; -static void setup_changes (DialogData *data); +GtkWidget *cal_prefs_dialog_create_time_edit (void); -static void init_widgets (DialogData *data); -static void show_config (DialogData *data); -static void config_control_destroy_callback (DialogData *dialog_data, GObject *deadbeef); -static void cal_prefs_dialog_url_add_clicked (GtkWidget *button, DialogData *dialog_data); -static void cal_prefs_dialog_url_edit_clicked (GtkWidget *button, DialogData *dialog_data); -static void cal_prefs_dialog_url_remove_clicked (GtkWidget *button, DialogData *dialog_data); -static void cal_prefs_dialog_url_enable_clicked (GtkWidget *button, DialogData *dialog_data); -static void cal_prefs_dialog_url_list_change (GtkTreeSelection *selection, DialogData *dialog_data); -static void cal_prefs_dialog_url_list_enable_toggled (GtkCellRendererToggle *renderer, const char *path_string, DialogData *dialog_data); -static void cal_prefs_dialog_url_list_double_click(GtkTreeView *treeview, - GtkTreePath *path, - GtkTreeViewColumn *column, - DialogData *dialog_data); -static void show_fb_config (DialogData *dialog_data); +static void +calendar_prefs_dialog_finalize (GObject *obj) +{ + CalendarPrefsDialog *prefs = (CalendarPrefsDialog *) obj; -GtkWidget *cal_prefs_dialog_create_time_edit (void); + g_object_unref (prefs->gui); -#define PREFS_WINDOW(dialog_data) GTK_WINDOW (gtk_widget_get_ancestor (GTK_WIDGET (dialog_data), GTK_TYPE_WINDOW)) + ((GObjectClass *)(parent_class))->finalize (obj); +} -/** - * cal_prefs_dialog_new: - * - * Creates a new #CalPrefsDialog. - * - * Return value: a new #CalPrefsDialog. - **/ -EvolutionConfigControl * -cal_prefs_dialog_new (void) -{ - DialogData *dialog_data; - EvolutionConfigControl *config_control; - - dialog_data = g_new0 (DialogData, 1); - - /* Load the content widgets */ - - dialog_data->xml = glade_xml_new (EVOLUTION_GLADEDIR "/cal-prefs-dialog.glade", NULL, NULL); - if (!dialog_data->xml) { - g_message ("cal_prefs_dialog_construct(): Could not load the Glade XML file!"); - return NULL; - } +static void +calendar_prefs_dialog_class_init (CalendarPrefsDialogClass *klass) +{ + GObjectClass *object_class; - if (!get_widgets (dialog_data)) { - g_message ("cal_prefs_dialog_construct(): Could not find all widgets in the XML file!"); - return NULL; - } + object_class = (GObjectClass *) klass; + parent_class = g_type_class_ref (GTK_TYPE_VBOX); - init_widgets (dialog_data); - show_config (dialog_data); + object_class->finalize = calendar_prefs_dialog_finalize; +} - gtk_widget_ref (dialog_data->page); - gtk_container_remove (GTK_CONTAINER (dialog_data->page->parent), dialog_data->page); - config_control = evolution_config_control_new (dialog_data->page); - gtk_widget_unref (dialog_data->page); - - g_object_weak_ref ((GObject *) config_control, (GWeakNotify) config_control_destroy_callback, dialog_data); - - setup_changes (dialog_data); +static void +calendar_prefs_dialog_init (CalendarPrefsDialog *dialog) +{ +} + +static GtkWidget * +eccp_widget_glade (EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidget *old, void *data) +{ + CalendarPrefsDialog *prefs = data; - return config_control; + return glade_xml_get_widget (prefs->gui, item->label); } /* Returns a pointer to a static string with an X color spec for the current @@ -142,460 +101,247 @@ spec_from_picker (GtkWidget *picker) { static char spec[8]; - guint8 r, g, b; + GdkColor color; - gnome_color_picker_get_i8 (GNOME_COLOR_PICKER (picker), &r, &g, &b, NULL); - g_snprintf (spec, sizeof (spec), "#%02x%02x%02x", r, g, b); + gtk_color_button_get_color (GTK_COLOR_BUTTON (picker), &color); + g_snprintf (spec, sizeof (spec), "#%02x%02x%02x", color.red, color.green, color.blue); return spec; } static void -working_days_changed (GtkWidget *widget, DialogData *dialog_data) +working_days_changed (GtkWidget *widget, CalendarPrefsDialog *prefs) { CalWeekdays working_days = 0; guint32 mask = 1; int day; - + for (day = 0; day < 7; day++) { - if (e_dialog_toggle_get (dialog_data->working_days[day])) + if (e_dialog_toggle_get (prefs->working_days[day])) working_days |= mask; mask <<= 1; } - + calendar_config_set_working_days (working_days); } static void -timezone_changed (GtkWidget *widget, DialogData *dialog_data) +timezone_changed (GtkWidget *widget, CalendarPrefsDialog *prefs) { icaltimezone *zone; - - zone = e_timezone_entry_get_timezone (E_TIMEZONE_ENTRY (dialog_data->timezone)); + + zone = e_timezone_entry_get_timezone (E_TIMEZONE_ENTRY (prefs->timezone)); calendar_config_set_timezone (icaltimezone_get_location (zone)); } static void -start_of_day_changed (GtkWidget *widget, DialogData *dialog_data) +start_of_day_changed (GtkWidget *widget, CalendarPrefsDialog *prefs) { int start_hour, start_minute, end_hour, end_minute; EDateEdit *start, *end; - - start = E_DATE_EDIT (dialog_data->start_of_day); - end = E_DATE_EDIT (dialog_data->end_of_day); - + + start = E_DATE_EDIT (prefs->start_of_day); + end = E_DATE_EDIT (prefs->end_of_day); + e_date_edit_get_time_of_day (start, &start_hour, &start_minute); e_date_edit_get_time_of_day (end, &end_hour, &end_minute); - + if ((start_hour > end_hour) || (start_hour == end_hour && start_minute > end_minute)) { if (start_hour < 23) e_date_edit_set_time_of_day (end, start_hour + 1, start_minute); else e_date_edit_set_time_of_day (end, 23, 59); - + return; } - + calendar_config_set_day_start_hour (start_hour); calendar_config_set_day_start_minute (start_minute); } static void -end_of_day_changed (GtkWidget *widget, DialogData *dialog_data) +end_of_day_changed (GtkWidget *widget, CalendarPrefsDialog *prefs) { int start_hour, start_minute, end_hour, end_minute; EDateEdit *start, *end; - - start = E_DATE_EDIT (dialog_data->start_of_day); - end = E_DATE_EDIT (dialog_data->end_of_day); - + + start = E_DATE_EDIT (prefs->start_of_day); + end = E_DATE_EDIT (prefs->end_of_day); + e_date_edit_get_time_of_day (start, &start_hour, &start_minute); e_date_edit_get_time_of_day (end, &end_hour, &end_minute); - + if ((end_hour < start_hour) || (end_hour == start_hour && end_minute < start_minute)) { if (end_hour < 1) e_date_edit_set_time_of_day (start, 0, 0); else e_date_edit_set_time_of_day (start, end_hour - 1, end_minute); - + return; } - + calendar_config_set_day_end_hour (end_hour); calendar_config_set_day_end_minute (end_minute); } - static void -week_start_day_changed (GtkWidget *widget, DialogData *dialog_data) +week_start_day_changed (GtkWidget *widget, CalendarPrefsDialog *prefs) { int week_start_day; - - week_start_day = e_dialog_option_menu_get (dialog_data->week_start_day, week_start_day_map); + + week_start_day = e_dialog_option_menu_get (prefs->week_start_day, week_start_day_map); calendar_config_set_week_start_day (week_start_day); } static void -use_24_hour_toggled (GtkToggleButton *toggle, DialogData *dialog_data) +use_24_hour_toggled (GtkToggleButton *toggle, CalendarPrefsDialog *prefs) { gboolean use_24_hour; - + use_24_hour = gtk_toggle_button_get_active (toggle); - - e_date_edit_set_use_24_hour_format (E_DATE_EDIT (dialog_data->start_of_day), use_24_hour); - e_date_edit_set_use_24_hour_format (E_DATE_EDIT (dialog_data->end_of_day), use_24_hour); - + + e_date_edit_set_use_24_hour_format (E_DATE_EDIT (prefs->start_of_day), use_24_hour); + e_date_edit_set_use_24_hour_format (E_DATE_EDIT (prefs->end_of_day), use_24_hour); + calendar_config_set_24_hour_format (use_24_hour); } static void -time_divisions_changed (GtkWidget *widget, DialogData *dialog_data) +time_divisions_changed (GtkWidget *widget, CalendarPrefsDialog *prefs) { int time_divisions; - - time_divisions = e_dialog_option_menu_get (dialog_data->time_divisions, time_division_map); + + time_divisions = e_dialog_option_menu_get (prefs->time_divisions, time_division_map); calendar_config_set_time_divisions (time_divisions); } static void -show_end_times_toggled (GtkToggleButton *toggle, DialogData *dialog_data) +show_end_times_toggled (GtkToggleButton *toggle, CalendarPrefsDialog *prefs) { calendar_config_set_show_event_end (gtk_toggle_button_get_active (toggle)); } static void -compress_weekend_toggled (GtkToggleButton *toggle, DialogData *dialog_data) +compress_weekend_toggled (GtkToggleButton *toggle, CalendarPrefsDialog *prefs) { calendar_config_set_compress_weekend (gtk_toggle_button_get_active (toggle)); } static void -dnav_show_week_no_toggled (GtkToggleButton *toggle, DialogData *dialog_data) +dnav_show_week_no_toggled (GtkToggleButton *toggle, CalendarPrefsDialog *prefs) { calendar_config_set_dnav_show_week_no (gtk_toggle_button_get_active (toggle)); } static void -hide_completed_tasks_toggled (GtkToggleButton *toggle, DialogData *dialog_data) +hide_completed_tasks_toggled (GtkToggleButton *toggle, CalendarPrefsDialog *prefs) { gboolean hide; - + hide = gtk_toggle_button_get_active (toggle); - - gtk_widget_set_sensitive (dialog_data->tasks_hide_completed_spinbutton, hide); - gtk_widget_set_sensitive (dialog_data->tasks_hide_completed_optionmenu, hide); - + + gtk_widget_set_sensitive (prefs->tasks_hide_completed_interval, hide); + gtk_widget_set_sensitive (prefs->tasks_hide_completed_units, hide); + calendar_config_set_hide_completed_tasks (hide); } static void -hide_completed_tasks_changed (GtkWidget *widget, DialogData *dialog_data) +hide_completed_tasks_changed (GtkWidget *widget, CalendarPrefsDialog *prefs) { - calendar_config_set_hide_completed_tasks_value (e_dialog_spin_get_int (dialog_data->tasks_hide_completed_spinbutton)); + calendar_config_set_hide_completed_tasks_value (e_dialog_spin_get_int (prefs->tasks_hide_completed_interval)); } static void -hide_completed_tasks_units_changed (GtkWidget *widget, DialogData *dialog_data) +hide_completed_tasks_units_changed (GtkWidget *widget, CalendarPrefsDialog *prefs) { calendar_config_set_hide_completed_tasks_units ( - e_dialog_option_menu_get (dialog_data->tasks_hide_completed_optionmenu, hide_completed_units_map)); + e_dialog_combo_box_get (prefs->tasks_hide_completed_units, hide_completed_units_map)); } static void -tasks_due_today_set_color (GnomeColorPicker *picker, guint r, guint g, guint b, guint a, DialogData *dialog_data) +tasks_due_today_set_color (GtkColorButton *picker, guint r, guint g, guint b, guint a, CalendarPrefsDialog *prefs) { - calendar_config_set_tasks_due_today_color (spec_from_picker (dialog_data->tasks_due_today_color)); + calendar_config_set_tasks_due_today_color (spec_from_picker (prefs->tasks_due_today_color)); } static void -tasks_overdue_set_color (GnomeColorPicker *picker, guint r, guint g, guint b, guint a, DialogData *dialog_data) +tasks_overdue_set_color (GtkColorButton *picker, guint r, guint g, guint b, guint a, CalendarPrefsDialog *prefs) { - calendar_config_set_tasks_overdue_color (spec_from_picker (dialog_data->tasks_overdue_color)); + calendar_config_set_tasks_overdue_color (spec_from_picker (prefs->tasks_overdue_color)); } static void -confirm_delete_toggled (GtkToggleButton *toggle, DialogData *dialog_data) +confirm_delete_toggled (GtkToggleButton *toggle, CalendarPrefsDialog *prefs) { calendar_config_set_confirm_delete (gtk_toggle_button_get_active (toggle)); } static void -default_reminder_toggled (GtkToggleButton *toggle, DialogData *dialog_data) +default_reminder_toggled (GtkToggleButton *toggle, CalendarPrefsDialog *prefs) { calendar_config_set_use_default_reminder (gtk_toggle_button_get_active (toggle)); } static void -default_reminder_interval_changed (GtkWidget *widget, DialogData *dialog_data) +default_reminder_interval_changed (GtkWidget *widget, CalendarPrefsDialog *prefs) { calendar_config_set_default_reminder_interval ( - e_dialog_spin_get_int (dialog_data->default_reminder_interval)); + e_dialog_spin_get_int (prefs->default_reminder_interval)); } static void -default_reminder_units_changed (GtkWidget *widget, DialogData *dialog_data) +default_reminder_units_changed (GtkWidget *widget, CalendarPrefsDialog *prefs) { calendar_config_set_default_reminder_units ( - e_dialog_option_menu_get (dialog_data->default_reminder_units, default_reminder_units_map)); -} - -static void -url_list_changed (DialogData *dialog_data) -{ - GtkListStore *model = NULL; - GSList *url_list = NULL; - GtkTreeIter iter; - gboolean valid; - - url_list = NULL; - - model = (GtkListStore *) gtk_tree_view_get_model (dialog_data->url_list); - - valid = gtk_tree_model_get_iter_first ((GtkTreeModel *) model, &iter); - while (valid) { - EPublishUri *url; - char *xml; - - gtk_tree_model_get ((GtkTreeModel *) model, &iter, - URL_LIST_FREE_BUSY_URL_COLUMN, &url, - -1); - - if ((xml = e_pub_uri_to_xml (url))) - url_list = g_slist_append (url_list, xml); - - valid = gtk_tree_model_iter_next ((GtkTreeModel *) model, &iter); - } - - calendar_config_set_free_busy (url_list); - - g_slist_free (url_list); + e_dialog_option_menu_get (prefs->default_reminder_units, default_reminder_units_map)); } static void -template_url_changed (GtkEntry *entry, DialogData *dialog_data) +template_url_changed (GtkEntry *entry, CalendarPrefsDialog *prefs) { calendar_config_set_free_busy_template (gtk_entry_get_text (entry)); } static void -setup_changes (DialogData *dialog_data) +setup_changes (CalendarPrefsDialog *prefs) { int i; - + for (i = 0; i < 7; i ++) - g_signal_connect (dialog_data->working_days[i], "toggled", G_CALLBACK (working_days_changed), dialog_data); - - g_signal_connect (dialog_data->timezone, "changed", G_CALLBACK (timezone_changed), dialog_data); - - g_signal_connect (dialog_data->start_of_day, "changed", G_CALLBACK (start_of_day_changed), dialog_data); - g_signal_connect (dialog_data->end_of_day, "changed", G_CALLBACK (end_of_day_changed), dialog_data); - - g_signal_connect (GTK_OPTION_MENU (dialog_data->week_start_day)->menu, "selection-done", - G_CALLBACK (week_start_day_changed), dialog_data); - - g_signal_connect (dialog_data->use_24_hour, "toggled", G_CALLBACK (use_24_hour_toggled), dialog_data); - - g_signal_connect (GTK_OPTION_MENU (dialog_data->time_divisions)->menu, "selection-done", - G_CALLBACK (time_divisions_changed), dialog_data); - - g_signal_connect (dialog_data->show_end_times, "toggled", G_CALLBACK (show_end_times_toggled), dialog_data); - g_signal_connect (dialog_data->compress_weekend, "toggled", G_CALLBACK (compress_weekend_toggled), dialog_data); - g_signal_connect (dialog_data->dnav_show_week_no, "toggled", G_CALLBACK (dnav_show_week_no_toggled), dialog_data); - - g_signal_connect (dialog_data->tasks_hide_completed_checkbutton, "toggled", - G_CALLBACK (hide_completed_tasks_toggled), dialog_data); - g_signal_connect (dialog_data->tasks_hide_completed_spinbutton, "value-changed", - G_CALLBACK (hide_completed_tasks_changed), dialog_data); - g_signal_connect (GTK_OPTION_MENU (dialog_data->tasks_hide_completed_optionmenu)->menu, "selection-done", - G_CALLBACK (hide_completed_tasks_units_changed), dialog_data); - g_signal_connect (dialog_data->tasks_due_today_color, "color-set", - G_CALLBACK (tasks_due_today_set_color), dialog_data); - g_signal_connect (dialog_data->tasks_overdue_color, "color-set", - G_CALLBACK (tasks_overdue_set_color), dialog_data); - - g_signal_connect (dialog_data->confirm_delete, "toggled", G_CALLBACK (confirm_delete_toggled), dialog_data); - g_signal_connect (dialog_data->default_reminder, "toggled", G_CALLBACK (default_reminder_toggled), dialog_data); - g_signal_connect (dialog_data->default_reminder_interval, "changed", - G_CALLBACK (default_reminder_interval_changed), dialog_data); - g_signal_connect (GTK_OPTION_MENU (dialog_data->default_reminder_units)->menu, "selection-done", - G_CALLBACK (default_reminder_units_changed), dialog_data); + g_signal_connect (G_OBJECT (prefs->working_days[i]), "toggled", G_CALLBACK (working_days_changed), prefs); - g_signal_connect (dialog_data->template_url, "changed", G_CALLBACK (template_url_changed), dialog_data); -} + g_signal_connect (G_OBJECT (prefs->timezone), "changed", G_CALLBACK (timezone_changed), prefs); -/* Gets the widgets from the XML file and returns if they are all available. - */ -static gboolean -get_widgets (DialogData *data) -{ -#define GW(name) glade_xml_get_widget (data->xml, name) + g_signal_connect (G_OBJECT (prefs->start_of_day), "changed", G_CALLBACK (start_of_day_changed), prefs); + g_signal_connect (G_OBJECT (prefs->end_of_day), "changed", G_CALLBACK (end_of_day_changed), prefs); - data->page = GW ("toplevel-notebook"); + g_signal_connect (G_OBJECT (prefs->week_start_day), "changed", G_CALLBACK (week_start_day_changed), prefs); - /* The indices must be 0 (Sun) to 6 (Sat). */ - data->working_days[0] = GW ("sun_button"); - data->working_days[1] = GW ("mon_button"); - data->working_days[2] = GW ("tue_button"); - data->working_days[3] = GW ("wed_button"); - data->working_days[4] = GW ("thu_button"); - data->working_days[5] = GW ("fri_button"); - data->working_days[6] = GW ("sat_button"); - - data->timezone = GW ("timezone"); - data->week_start_day = GW ("first_day_of_week"); - data->start_of_day = GW ("start_of_day"); - gtk_widget_show (data->start_of_day); - data->end_of_day = GW ("end_of_day"); - gtk_widget_show (data->end_of_day); - data->use_12_hour = GW ("use_12_hour"); - data->use_24_hour = GW ("use_24_hour"); - data->time_divisions = GW ("time_divisions"); - data->show_end_times = GW ("show_end_times"); - data->compress_weekend = GW ("compress_weekend"); - data->dnav_show_week_no = GW ("dnav_show_week_no"); - - data->tasks_due_today_color = GW ("tasks_due_today_color"); - data->tasks_overdue_color = GW ("tasks_overdue_color"); - - data->tasks_hide_completed_checkbutton = GW ("tasks-hide-completed-checkbutton"); - data->tasks_hide_completed_spinbutton = GW ("tasks-hide-completed-spinbutton"); - data->tasks_hide_completed_optionmenu = GW ("tasks-hide-completed-optionmenu"); - - data->confirm_delete = GW ("confirm-delete"); - data->default_reminder = GW ("default-reminder"); - data->default_reminder_interval = GW ("default-reminder-interval"); - data->default_reminder_units = GW ("default-reminder-units"); - - data->url_add = GW ("url_add"); - data->url_edit = GW ("url_edit"); - data->url_remove = GW ("url_remove"); - data->url_enable = GW ("url_enable"); - data->url_list = GTK_TREE_VIEW (GW ("url_list")); - - data->template_url = GW("template_url"); - -#undef GW - - return (data->page - && data->timezone - && data->working_days[0] - && data->working_days[1] - && data->working_days[2] - && data->working_days[3] - && data->working_days[4] - && data->working_days[5] - && data->working_days[6] - && data->week_start_day - && data->start_of_day - && data->end_of_day - && data->use_12_hour - && data->use_24_hour - && data->time_divisions - && data->show_end_times - && data->compress_weekend - && data->dnav_show_week_no - && data->tasks_due_today_color - && data->tasks_overdue_color - && data->tasks_hide_completed_checkbutton - && data->tasks_hide_completed_spinbutton - && data->tasks_hide_completed_optionmenu - && data->confirm_delete - && data->default_reminder - && data->default_reminder_interval - && data->default_reminder_units - && data->url_add - && data->url_edit - && data->url_remove - && data->url_enable - && data->url_list); -} - - -static void -config_control_destroy_callback (DialogData *dialog_data, GObject *deadbeef) -{ - g_object_unref (dialog_data->xml); - - g_free (dialog_data); -} + g_signal_connect (G_OBJECT (prefs->use_24_hour), "toggled", G_CALLBACK (use_24_hour_toggled), prefs); -/* Called by libglade to create our custom EDateEdit widgets. */ -GtkWidget * -cal_prefs_dialog_create_time_edit (void) -{ - GtkWidget *dedit; + g_signal_connect (G_OBJECT (prefs->time_divisions), "changed", G_CALLBACK (time_divisions_changed), prefs); - dedit = e_date_edit_new (); + g_signal_connect (G_OBJECT (prefs->show_end_times), "toggled", G_CALLBACK (show_end_times_toggled), prefs); + g_signal_connect (G_OBJECT (prefs->compress_weekend), "toggled", G_CALLBACK (compress_weekend_toggled), prefs); + g_signal_connect (G_OBJECT (prefs->dnav_show_week_no), "toggled", G_CALLBACK (dnav_show_week_no_toggled), prefs); - e_date_edit_set_use_24_hour_format (E_DATE_EDIT (dedit), calendar_config_get_24_hour_format ()); - e_date_edit_set_time_popup_range (E_DATE_EDIT (dedit), 0, 24); - e_date_edit_set_show_date (E_DATE_EDIT (dedit), FALSE); - - return dedit; -} + g_signal_connect (G_OBJECT (prefs->tasks_hide_completed), "toggled", + G_CALLBACK (hide_completed_tasks_toggled), prefs); + g_signal_connect (G_OBJECT (prefs->tasks_hide_completed_interval), "value-changed", + G_CALLBACK (hide_completed_tasks_changed), prefs); + g_signal_connect (G_OBJECT (prefs->tasks_hide_completed_units), "changed", G_CALLBACK (hide_completed_tasks_units_changed), prefs); + g_signal_connect (G_OBJECT (prefs->tasks_due_today_color), "color-set", + G_CALLBACK (tasks_due_today_set_color), prefs); + g_signal_connect (G_OBJECT (prefs->tasks_overdue_color), "color-set", + G_CALLBACK (tasks_overdue_set_color), prefs); + g_signal_connect (G_OBJECT (prefs->confirm_delete), "toggled", G_CALLBACK (confirm_delete_toggled), prefs); + g_signal_connect (G_OBJECT (prefs->default_reminder), "toggled", G_CALLBACK (default_reminder_toggled), prefs); + g_signal_connect (G_OBJECT (prefs->default_reminder_interval), "changed", + G_CALLBACK (default_reminder_interval_changed), prefs); + g_signal_connect (G_OBJECT (prefs->default_reminder_units), "changed", G_CALLBACK (default_reminder_units_changed), prefs); -/* Connects any necessary signal handlers. */ -static void -init_widgets (DialogData *dialog_data) -{ - GtkCellRenderer *renderer = NULL; - GtkTreeSelection *selection; - GtkListStore *model; - - dialog_data->url_editor = FALSE; - dialog_data->url_editor_dlg =NULL; - - /* Free/Busy ... */ - g_signal_connect (dialog_data->url_add, "clicked", - G_CALLBACK (cal_prefs_dialog_url_add_clicked), - dialog_data); - - g_signal_connect (dialog_data->url_edit, "clicked", - G_CALLBACK (cal_prefs_dialog_url_edit_clicked), - dialog_data); - - g_signal_connect (dialog_data->url_remove, "clicked", - G_CALLBACK (cal_prefs_dialog_url_remove_clicked), - dialog_data); - - g_signal_connect (dialog_data->url_enable, "clicked", - G_CALLBACK (cal_prefs_dialog_url_enable_clicked), - dialog_data); - - /* Free/Busy Listview */ - renderer = gtk_cell_renderer_toggle_new(); - g_object_set ((GObject *) renderer, "activatable", TRUE, NULL); - - model = gtk_list_store_new (URL_LIST_N_COLUMNS, G_TYPE_BOOLEAN, - G_TYPE_STRING, G_TYPE_POINTER); - - gtk_tree_view_set_model (dialog_data->url_list, - (GtkTreeModel *) model); - - gtk_tree_view_insert_column_with_attributes (dialog_data->url_list, -1, - _("Enabled"), renderer, - "active", - URL_LIST_ENABLED_COLUMN, - NULL); - - g_signal_connect (renderer, "toggled", - G_CALLBACK (cal_prefs_dialog_url_list_enable_toggled), - dialog_data); - - renderer = gtk_cell_renderer_text_new (); - gtk_tree_view_insert_column_with_attributes (dialog_data->url_list, -1, - _("Location"), renderer, - "text", - URL_LIST_LOCATION_COLUMN, - NULL); - - selection = gtk_tree_view_get_selection ((GtkTreeView *) dialog_data->url_list); - gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE); - gtk_tree_view_set_headers_visible ((GtkTreeView *) dialog_data->url_list, TRUE); - - g_signal_connect (dialog_data->url_list, "row-activated", - G_CALLBACK (cal_prefs_dialog_url_list_double_click), - dialog_data); + g_signal_connect (G_OBJECT (prefs->template_url), "changed", G_CALLBACK (template_url_changed), prefs); } /* Sets the color in a color picker from an X color spec */ @@ -607,360 +353,48 @@ if (!spec || !gdk_color_parse (spec, &color)) color.red = color.green = color.blue = 0; - gnome_color_picker_set_i16 (GNOME_COLOR_PICKER (picker), - color.red, - color.green, - color.blue, - 65535); -} - -static void -cal_prefs_dialog_url_add_clicked (GtkWidget *button, DialogData *dialog_data) -{ - EPublishUri *url = NULL; - GtkTreeModel *model; - GtkTreeIter iter; - GtkTreeSelection *selection; - - model = gtk_tree_view_get_model (dialog_data->url_list); - url = g_new0 (EPublishUri, 1); - url->enabled = TRUE; - url->location = ""; - - if (!dialog_data->url_editor) { - dialog_data->url_editor = url_editor_dialog_new (dialog_data, - url); - - if (url->location != "") { - gtk_list_store_append(GTK_LIST_STORE (model), &iter); - gtk_list_store_set (GTK_LIST_STORE(model), &iter, - URL_LIST_ENABLED_COLUMN, - url->enabled, - URL_LIST_LOCATION_COLUMN, - g_strdup (url->location), - URL_LIST_FREE_BUSY_URL_COLUMN, url, - -1); - - url_list_changed (dialog_data); - - if (!GTK_WIDGET_SENSITIVE ((GtkWidget *) dialog_data->url_remove)) { - selection = gtk_tree_view_get_selection ((GtkTreeView *) dialog_data->url_list); - gtk_tree_model_get_iter_first ((GtkTreeModel *) model, &iter); - gtk_widget_set_sensitive ((GtkWidget*) dialog_data->url_remove, TRUE); - gtk_tree_selection_select_iter (selection, &iter); - } - } - dialog_data->url_editor = FALSE; - dialog_data->url_editor_dlg = NULL; - } else { - gdk_window_raise (dialog_data->url_editor_dlg->window); - } -} - -static void -cal_prefs_dialog_url_edit_clicked (GtkWidget *button, DialogData *dialog_data) -{ - if (!dialog_data->url_editor) { - GtkTreeSelection *selection; - EPublishUri *url = NULL; - GtkTreeModel *model; - GtkTreeIter iter; - - selection = gtk_tree_view_get_selection ((GtkTreeView *) dialog_data->url_list); - if (gtk_tree_selection_get_selected (selection, &model, &iter)){ - gtk_tree_model_get (model, &iter, - URL_LIST_FREE_BUSY_URL_COLUMN, - &url, - -1); - - } - - if (url) { - dialog_data->url_editor = url_editor_dialog_new (dialog_data, url); - - gtk_list_store_set ((GtkListStore *) model, &iter, - URL_LIST_LOCATION_COLUMN, - g_strdup (url->location), - URL_LIST_ENABLED_COLUMN, - url->enabled, - URL_LIST_FREE_BUSY_URL_COLUMN, url, - -1); - - url_list_changed (dialog_data); - - if (!GTK_WIDGET_SENSITIVE ((GtkWidget *) dialog_data->url_remove)) { - selection = gtk_tree_view_get_selection ((GtkTreeView *) dialog_data->url_list); - gtk_tree_model_get_iter_first ((GtkTreeModel *) model, &iter); - gtk_widget_set_sensitive ((GtkWidget*) dialog_data->url_remove, TRUE); - gtk_tree_selection_select_iter (selection, &iter); - } - dialog_data->url_editor = FALSE; - dialog_data->url_editor_dlg = NULL; - } - } else { - gdk_window_raise (dialog_data->url_editor_dlg->window); - } -} - -static void -cal_prefs_dialog_url_remove_clicked (GtkWidget *button, DialogData *dialog_data) -{ - EPublishUri *url = NULL; - GtkTreeSelection * selection; - GtkTreeModel *model; - GtkWidget *confirm; - GtkTreeIter iter; - int ans; - - selection = gtk_tree_view_get_selection (dialog_data->url_list); - if (gtk_tree_selection_get_selected (selection, &model, &iter)) - gtk_tree_model_get (model, &iter, - URL_LIST_FREE_BUSY_URL_COLUMN, &url, - -1); - - /* make sure we have a valid account selected and that - we aren't editing anything... */ - if (url == NULL || dialog_data->url_editor) - return; - - confirm = gtk_message_dialog_new (PREFS_WINDOW (dialog_data), - GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_QUESTION, - GTK_BUTTONS_NONE, - _("Are you sure you want to remove this URL?")); - - button = gtk_button_new_from_stock (GTK_STOCK_YES); - gtk_button_set_label ((GtkButton *) button, _("Remove")); - gtk_dialog_add_action_widget ((GtkDialog *) confirm, (GtkWidget *) button, GTK_RESPONSE_YES); - gtk_widget_show ((GtkWidget *) button); - - button = gtk_button_new_from_stock (GTK_STOCK_NO); - gtk_button_set_label ((GtkButton *) button, _("Don't Remove")); - gtk_dialog_add_action_widget ((GtkDialog *) confirm, - (GtkWidget *) button, GTK_RESPONSE_NO); - - gtk_widget_show ((GtkWidget *) button); - - ans = gtk_dialog_run ((GtkDialog *) confirm); - gtk_widget_destroy (confirm); - - if (ans == GTK_RESPONSE_YES) { - int len; - - gtk_list_store_remove ((GtkListStore *) model, &iter); - - len = gtk_tree_model_iter_n_children (GTK_TREE_MODEL (model), NULL); - if (len > 0) { - gtk_tree_selection_select_iter (selection, &iter); - } else { - gtk_widget_set_sensitive (GTK_WIDGET (dialog_data->url_edit), FALSE); - gtk_widget_set_sensitive (GTK_WIDGET (dialog_data->url_remove), FALSE); - gtk_widget_set_sensitive (GTK_WIDGET (dialog_data->url_enable), FALSE); - } - g_free (url); - url_list_changed (dialog_data); - } -} - -static void -cal_prefs_dialog_url_enable_clicked (GtkWidget *button, DialogData *dialog_data) -{ - EPublishUri *url = NULL; - GtkTreeSelection * selection; - GtkTreeModel *model; - GtkTreeIter iter; - - selection = gtk_tree_view_get_selection (dialog_data->url_list); - if (gtk_tree_selection_get_selected (selection, &model, &iter)) { - gtk_tree_model_get (model, &iter, - URL_LIST_FREE_BUSY_URL_COLUMN, &url, - -1); - url->enabled = !url->enabled; - - gtk_tree_selection_select_iter (selection, &iter); - - gtk_list_store_set ((GtkListStore *) model, &iter, - URL_LIST_ENABLED_COLUMN, url->enabled, - -1); - - gtk_button_set_label ((GtkButton *) dialog_data->url_enable, - url->enabled ? _("Disable") : _("Enable")); - - url_list_changed (dialog_data); - } -} - -static void -cal_prefs_dialog_url_list_enable_toggled (GtkCellRendererToggle *renderer, - const char *path_string, - DialogData *dialog_data) -{ - GtkTreeSelection * selection; - EPublishUri *url = NULL; - GtkTreeModel *model; - GtkTreePath *path; - GtkTreeIter iter; - - path = gtk_tree_path_new_from_string (path_string); - model = gtk_tree_view_get_model (dialog_data->url_list); - selection = gtk_tree_view_get_selection (dialog_data->url_list); - - if (gtk_tree_model_get_iter (model, &iter, path)) { - gtk_tree_model_get (model, &iter, - URL_LIST_FREE_BUSY_URL_COLUMN, &url, - -1); - - url->enabled = !url->enabled; - gtk_list_store_set((GtkListStore *) model, &iter, - URL_LIST_ENABLED_COLUMN, - url->enabled, -1); - - if (gtk_tree_selection_iter_is_selected (selection, &iter)) - gtk_button_set_label ((GtkButton *) dialog_data->url_enable, - url->enabled ? _("Disable") : _("Enable")); - - url_list_changed (dialog_data); - } - - gtk_tree_path_free (path); -} - -static void -cal_prefs_dialog_url_list_double_click (GtkTreeView *treeview, - GtkTreePath *path, - GtkTreeViewColumn *column, - DialogData *dialog_data) -{ - cal_prefs_dialog_url_edit_clicked (NULL, dialog_data); -} - -static void -cal_prefs_dialog_url_list_change (GtkTreeSelection *selection, - DialogData *dialog_data) -{ - EPublishUri *url = NULL; - GtkTreeModel *model; - GtkTreeIter iter; - int state; - - state = gtk_tree_selection_get_selected (selection, &model, &iter); - if (state) { - gtk_tree_model_get (model, &iter, - URL_LIST_FREE_BUSY_URL_COLUMN, &url, - -1); - - if (url->location && url->enabled) - gtk_button_set_label ((GtkButton *) dialog_data->url_enable, _("Disable")); - else - gtk_button_set_label ((GtkButton *) dialog_data->url_enable, _("Enable")); - } else { - gtk_widget_grab_focus (GTK_WIDGET (dialog_data->url_add)); - } - - gtk_widget_set_sensitive (GTK_WIDGET (dialog_data->url_edit), state); - gtk_widget_set_sensitive (GTK_WIDGET (dialog_data->url_remove), state); - gtk_widget_set_sensitive (GTK_WIDGET (dialog_data->url_enable), state); + gtk_color_button_set_color (GTK_COLOR_BUTTON (picker), &color); } /* Shows the current Free/Busy settings in the dialog */ static void -show_fb_config (DialogData *dialog_data) +show_fb_config (CalendarPrefsDialog *prefs) { - GSList *url_config_list = NULL; - GtkListStore *model; - GtkTreeIter iter; gchar *template_url; - - model = (GtkListStore *) gtk_tree_view_get_model (dialog_data->url_list); - gtk_list_store_clear (model); - - /* restore urls from gconf */ - url_config_list = calendar_config_get_free_busy(); - - if (!url_config_list) { - /* list is empty-disable edit, remove, and enable buttons */ - gtk_widget_set_sensitive (GTK_WIDGET (dialog_data->url_edit), - FALSE); - - gtk_widget_set_sensitive (GTK_WIDGET (dialog_data->url_remove), - FALSE); - - gtk_widget_set_sensitive (GTK_WIDGET (dialog_data->url_enable), - FALSE); - } else { - gtk_widget_set_sensitive (GTK_WIDGET (dialog_data->url_edit), - TRUE); - - gtk_widget_set_sensitive (GTK_WIDGET (dialog_data->url_remove), - TRUE); - - gtk_widget_set_sensitive (GTK_WIDGET (dialog_data->url_enable), - TRUE); - } - - while (url_config_list) { - gchar *xml = (gchar *)url_config_list->data; - EPublishUri *url; - url = g_new0 (EPublishUri, 1); - - e_pub_uri_from_xml (url, xml); - if (url->location) { - gtk_list_store_append (model, &iter); - gtk_list_store_set (model, &iter, - URL_LIST_ENABLED_COLUMN, - url->enabled, - URL_LIST_LOCATION_COLUMN, - url->location, - URL_LIST_FREE_BUSY_URL_COLUMN, url, - -1); - } - - url_config_list = g_slist_next (url_config_list); - g_free (xml); - } - - g_slist_foreach (url_config_list, (GFunc) g_free, NULL); - g_slist_free (url_config_list); template_url = calendar_config_get_free_busy_template (); - gtk_entry_set_text (GTK_ENTRY (dialog_data->template_url), template_url); + gtk_entry_set_text (GTK_ENTRY (prefs->template_url), template_url); g_free (template_url); } /* Shows the current task list settings in the dialog */ static void -show_task_list_config (DialogData *dialog_data) +show_task_list_config (CalendarPrefsDialog *prefs) { CalUnits units; gboolean hide_completed_tasks; - set_color_picker (dialog_data->tasks_due_today_color, calendar_config_get_tasks_due_today_color ()); - set_color_picker (dialog_data->tasks_overdue_color, calendar_config_get_tasks_overdue_color ()); + set_color_picker (prefs->tasks_due_today_color, calendar_config_get_tasks_due_today_color ()); + set_color_picker (prefs->tasks_overdue_color, calendar_config_get_tasks_overdue_color ()); /* Hide Completed Tasks. */ - hide_completed_tasks = calendar_config_get_hide_completed_tasks (); - e_dialog_toggle_set (dialog_data->tasks_hide_completed_checkbutton, - hide_completed_tasks); + e_dialog_toggle_set (prefs->tasks_hide_completed, calendar_config_get_hide_completed_tasks ()); /* Hide Completed Tasks Units. */ units = calendar_config_get_hide_completed_tasks_units (); - e_dialog_option_menu_set (dialog_data->tasks_hide_completed_optionmenu, - units, hide_completed_units_map); + e_dialog_combo_box_set (prefs->tasks_hide_completed_units, units, hide_completed_units_map); /* Hide Completed Tasks Value. */ - e_dialog_spin_set (dialog_data->tasks_hide_completed_spinbutton, - calendar_config_get_hide_completed_tasks_value ()); + e_dialog_spin_set (prefs->tasks_hide_completed_interval, calendar_config_get_hide_completed_tasks_value ()); - gtk_widget_set_sensitive (dialog_data->tasks_hide_completed_spinbutton, - hide_completed_tasks); - gtk_widget_set_sensitive (dialog_data->tasks_hide_completed_optionmenu, - hide_completed_tasks); + gtk_widget_set_sensitive (prefs->tasks_hide_completed_interval, hide_completed_tasks); + gtk_widget_set_sensitive (prefs->tasks_hide_completed_units, hide_completed_tasks); } /* Shows the current config settings in the dialog. */ static void -show_config (DialogData *dialog_data) +show_config (CalendarPrefsDialog *prefs) { CalWeekdays working_days; gint mask, day, week_start_day, time_divisions; @@ -969,73 +403,202 @@ /* Timezone. */ zone = calendar_config_get_icaltimezone (); - e_timezone_entry_set_timezone (E_TIMEZONE_ENTRY (dialog_data->timezone), - zone); + e_timezone_entry_set_timezone (E_TIMEZONE_ENTRY (prefs->timezone), zone); /* Working Days. */ working_days = calendar_config_get_working_days (); mask = 1 << 0; for (day = 0; day < 7; day++) { - e_dialog_toggle_set (dialog_data->working_days[day], (working_days & mask) ? TRUE : FALSE); + e_dialog_toggle_set (prefs->working_days[day], (working_days & mask) ? TRUE : FALSE); mask <<= 1; } /* Week Start Day. */ week_start_day = calendar_config_get_week_start_day (); - e_dialog_option_menu_set (dialog_data->week_start_day, week_start_day, - week_start_day_map); + e_dialog_combo_box_set (prefs->week_start_day, week_start_day, week_start_day_map); /* Start of Day. */ - e_date_edit_set_time_of_day (E_DATE_EDIT (dialog_data->start_of_day), - calendar_config_get_day_start_hour (), - calendar_config_get_day_start_minute ()); + e_date_edit_set_time_of_day (E_DATE_EDIT (prefs->start_of_day), calendar_config_get_day_start_hour (), calendar_config_get_day_start_minute ()); /* End of Day. */ - e_date_edit_set_time_of_day (E_DATE_EDIT (dialog_data->end_of_day), - calendar_config_get_day_end_hour (), - calendar_config_get_day_end_minute ()); + e_date_edit_set_time_of_day (E_DATE_EDIT (prefs->end_of_day), calendar_config_get_day_end_hour (), calendar_config_get_day_end_minute ()); /* 12/24 Hour Format. */ if (calendar_config_get_24_hour_format ()) - e_dialog_toggle_set (dialog_data->use_24_hour, TRUE); + e_dialog_toggle_set (prefs->use_24_hour, TRUE); else - e_dialog_toggle_set (dialog_data->use_12_hour, TRUE); + e_dialog_toggle_set (prefs->use_12_hour, TRUE); sensitive = calendar_config_locale_supports_12_hour_format (); - gtk_widget_set_sensitive (dialog_data->use_12_hour, sensitive); - gtk_widget_set_sensitive (dialog_data->use_24_hour, sensitive); + gtk_widget_set_sensitive (prefs->use_12_hour, sensitive); + gtk_widget_set_sensitive (prefs->use_24_hour, sensitive); /* Time Divisions. */ time_divisions = calendar_config_get_time_divisions (); - e_dialog_option_menu_set (dialog_data->time_divisions, time_divisions, - time_division_map); + e_dialog_combo_box_set (prefs->time_divisions, time_divisions, time_division_map); /* Show Appointment End Times. */ - e_dialog_toggle_set (dialog_data->show_end_times, calendar_config_get_show_event_end ()); + e_dialog_toggle_set (prefs->show_end_times, calendar_config_get_show_event_end ()); /* Compress Weekend. */ - e_dialog_toggle_set (dialog_data->compress_weekend, calendar_config_get_compress_weekend ()); + e_dialog_toggle_set (prefs->compress_weekend, calendar_config_get_compress_weekend ()); /* Date Navigator - Show Week Numbers. */ - e_dialog_toggle_set (dialog_data->dnav_show_week_no, calendar_config_get_dnav_show_week_no ()); + e_dialog_toggle_set (prefs->dnav_show_week_no, calendar_config_get_dnav_show_week_no ()); /* Task list */ + show_task_list_config (prefs); - show_task_list_config (dialog_data); - /* Free/Busy */ - show_fb_config (dialog_data); + show_fb_config (prefs); /* Other page */ + e_dialog_toggle_set (prefs->confirm_delete, calendar_config_get_confirm_delete ()); + e_dialog_toggle_set (prefs->default_reminder, calendar_config_get_use_default_reminder ()); + e_dialog_spin_set (prefs->default_reminder_interval, calendar_config_get_default_reminder_interval ()); + e_dialog_combo_box_set (prefs->default_reminder_units, calendar_config_get_default_reminder_units (), default_reminder_units_map); +} + +/* plugin meta-data */ +static ECalConfigItem eccp_items[] = { + { E_CONFIG_BOOK, "", "toplevel-notebook", eccp_widget_glade }, + { E_CONFIG_PAGE, "00.general", "general", eccp_widget_glade }, + { E_CONFIG_SECTION_TABLE, "00.general/00.time", "time", eccp_widget_glade }, + { E_CONFIG_SECTION_TABLE, "00.general/10.workWeek", "workWeek", eccp_widget_glade }, + { E_CONFIG_SECTION, "00.general/20.alerts", "alerts", eccp_widget_glade }, + { E_CONFIG_PAGE, "10.display", "display", eccp_widget_glade }, + { E_CONFIG_SECTION, "10.display/00.general", "displayGeneral", eccp_widget_glade }, + { E_CONFIG_SECTION, "10.display/10.taskList", "taskList", eccp_widget_glade }, + { E_CONFIG_PAGE, "20.freeBusy", "freebusy", eccp_widget_glade }, + { E_CONFIG_SECTION, "20.freeBusy/00.defaultServer", "defaultFBServer", eccp_widget_glade }, +}; - e_dialog_toggle_set (dialog_data->confirm_delete, calendar_config_get_confirm_delete ()); +static void +eccp_free (EConfig *ec, GSList *items, void *data) +{ + g_slist_free (items); +} - e_dialog_toggle_set (dialog_data->default_reminder, - calendar_config_get_use_default_reminder ()); - e_dialog_spin_set (dialog_data->default_reminder_interval, - calendar_config_get_default_reminder_interval ()); - e_dialog_option_menu_set (dialog_data->default_reminder_units, - calendar_config_get_default_reminder_units (), - default_reminder_units_map); +static void +calendar_prefs_dialog_construct (CalendarPrefsDialog *prefs) +{ + GladeXML *gui; + ECalConfig *ec; + ECalConfigTargetPrefs *target; + int i; + GtkWidget *toplevel; + GSList *l; + const char *working_day_names[] = { + "sun_button", + "mon_button", + "tue_button", + "wed_button", + "thu_button", + "fri_button", + "sat_button", + }; + + gui = glade_xml_new (EVOLUTION_GLADEDIR "/cal-prefs-dialog.glade", "toplevel-notebook", NULL); + prefs->gui = gui; + + prefs->gconf = gconf_client_get_default (); + + /** @HookPoint-ECalConfig: Calendar Preferences Page + * @Id: org.gnome.evolution.calendar.prefs + * @Type: E_CONFIG_BOOK + * @Class: org.gnome.evolution.calendar.config:1.0 + * @Target: ECalConfigTargetPrefs + * + * The mail calendar preferences page + */ + ec = e_cal_config_new (E_CONFIG_BOOK, "org.gnome.evolution.calendar.prefs"); + l = NULL; + for (i = 0; i < G_N_ELEMENTS (eccp_items); i++) + l = g_slist_prepend (l, &eccp_items[i]); + e_config_add_items ((EConfig *) ec, l, NULL, NULL, eccp_free, prefs); + + /* General tab */ + prefs->timezone = glade_xml_get_widget (gui, "timezone"); + for (i = 0; i < 7; i++) + prefs->working_days[i] = glade_xml_get_widget (gui, working_day_names[i]); + prefs->week_start_day = glade_xml_get_widget (gui, "week_start_day"); + prefs->start_of_day = glade_xml_get_widget (gui, "start_of_day"); + prefs->end_of_day = glade_xml_get_widget (gui, "end_of_day"); + prefs->use_12_hour = glade_xml_get_widget (gui, "use_12_hour"); + prefs->use_24_hour = glade_xml_get_widget (gui, "use_24_hour"); + prefs->confirm_delete = glade_xml_get_widget (gui, "confirm_delete"); + prefs->default_reminder = glade_xml_get_widget (gui, "default_reminder"); + prefs->default_reminder_interval = glade_xml_get_widget (gui, "default_reminder_interval"); + prefs->default_reminder_units = glade_xml_get_widget (gui, "default_reminder_units"); + + /* Display tab */ + prefs->time_divisions = glade_xml_get_widget (gui, "time_divisions"); + prefs->show_end_times = glade_xml_get_widget (gui, "show_end_times"); + prefs->compress_weekend = glade_xml_get_widget (gui, "compress_weekend"); + prefs->dnav_show_week_no = glade_xml_get_widget (gui, "dnav_show_week_no"); + prefs->tasks_due_today_color = glade_xml_get_widget (gui, "tasks_due_today_color"); + prefs->tasks_overdue_color = glade_xml_get_widget (gui, "tasks_overdue_color"); + prefs->tasks_hide_completed = glade_xml_get_widget (gui, "tasks_hide_completed"); + prefs->tasks_hide_completed_interval = glade_xml_get_widget (gui, "tasks_hide_completed_interval"); + prefs->tasks_hide_completed_units = glade_xml_get_widget (gui, "tasks_hide_completed_units"); + + /* Free/Busy tab */ + prefs->template_url = glade_xml_get_widget (gui, "template_url"); + target = e_cal_config_target_new_prefs (ec, prefs->gconf); + e_config_set_target ((EConfig *)ec, (EConfigTarget *) target); + toplevel = e_config_create_widget ((EConfig *)ec); + gtk_container_add (GTK_CONTAINER (prefs), toplevel); + + show_config (prefs); + /* FIXME: weakref? */ + setup_changes (prefs); +} + +GType +calendar_prefs_dialog_get_type (void) +{ + static GType type = 0; + + if (!type) { + static GTypeInfo type_info = { + sizeof (CalendarPrefsDialogClass), + NULL, NULL, + (GClassInitFunc) calendar_prefs_dialog_class_init, + NULL, NULL, + sizeof (CalendarPrefsDialog), + 0, + (GInstanceInitFunc) calendar_prefs_dialog_init, + }; + + type = g_type_register_static (GTK_TYPE_VBOX, "CalendarPrefsDialog", &type_info, 0); + } + + return type; +} + +GtkWidget * +calendar_prefs_dialog_new (void) +{ + CalendarPrefsDialog *dialog; + + dialog = (CalendarPrefsDialog *) g_object_new (calendar_prefs_dialog_get_type (), NULL); + calendar_prefs_dialog_construct (dialog); + + return (GtkWidget *) dialog; +} + +/* called by libglade to create our custom EDateEdit widgets. */ +GtkWidget * +cal_prefs_dialog_create_time_edit (void) +{ + GtkWidget *dedit; + + dedit = e_date_edit_new (); + + e_date_edit_set_use_24_hour_format (E_DATE_EDIT (dedit), calendar_config_get_24_hour_format ()); + e_date_edit_set_time_popup_range (E_DATE_EDIT (dedit), 0, 24); + e_date_edit_set_show_date (E_DATE_EDIT (dedit), FALSE); + + return dedit; } Index: calendar/gui/dialogs/cal-prefs-dialog.glade =================================================================== RCS file: /cvs/gnome/evolution/calendar/gui/dialogs/cal-prefs-dialog.glade,v retrieving revision 1.31 diff -u -r1.31 cal-prefs-dialog.glade --- calendar/gui/dialogs/cal-prefs-dialog.glade 26 Jan 2005 11:48:21 -0000 1.31 +++ calendar/gui/dialogs/cal-prefs-dialog.glade 29 Mar 2005 02:28:32 -0000 @@ -2,10 +2,10 @@ <!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd"> <glade-interface> -<requires lib="gnome"/> -<widget class="GtkDialog" id="cal-prefs-dialog"> - <property name="title" translatable="yes">Calendar and Tasks Settings</property> +<widget class="GtkWindow" id="window1"> + <property name="visible">True</property> + <property name="title" translatable="yes">window1</property> <property name="type">GTK_WINDOW_TOPLEVEL</property> <property name="window_position">GTK_WIN_POS_NONE</property> <property name="modal">False</property> @@ -14,95 +14,254 @@ <property name="decorated">True</property> <property name="skip_taskbar_hint">False</property> <property name="skip_pager_hint">False</property> - <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> - <property name="has_separator">False</property> - <child internal-child="vbox"> - <widget class="GtkVBox" id="vbox1"> + <child> + <widget class="GtkNotebook" id="toplevel-notebook"> <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> + <property name="can_focus">True</property> + <property name="show_tabs">True</property> + <property name="show_border">True</property> + <property name="tab_pos">GTK_POS_TOP</property> + <property name="scrollable">False</property> + <property name="enable_popup">False</property> - <child internal-child="action_area"> - <widget class="GtkHButtonBox" id="hbuttonbox1"> + <child> + <widget class="GtkVBox" id="general"> + <property name="border_width">12</property> <property name="visible">True</property> - <property name="layout_style">GTK_BUTTONBOX_END</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> <child> - <widget class="GtkButton" id="button1"> + <widget class="GtkLabel" id="label4"> <property name="visible">True</property> - <property name="can_default">True</property> - <property name="can_focus">True</property> - <property name="label">gtk-ok</property> - <property name="use_stock">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="response_id">0</property> + <property name="label" translatable="yes"><span weight="bold">Time</span></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> </child> <child> - <widget class="GtkButton" id="button2"> + <widget class="GtkHBox" id="hbox1"> <property name="visible">True</property> - <property name="can_default">True</property> - <property name="can_focus">True</property> - <property name="label">gtk-apply</property> - <property name="use_stock">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="response_id">0</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkLabel" id="label7"> + <property name="visible">True</property> + <property name="label" translatable="yes"></property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkTable" id="time"> + <property name="visible">True</property> + <property name="n_rows">2</property> + <property name="n_columns">2</property> + <property name="homogeneous">False</property> + <property name="row_spacing">6</property> + <property name="column_spacing">6</property> + + <child> + <widget class="GtkLabel" id="label10"> + <property name="visible">True</property> + <property name="label" translatable="yes">Time _zone:</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label11"> + <property name="visible">True</property> + <property name="label" translatable="yes">Time format:</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="Custom" id="timezone"> + <property name="visible">True</property> + <property name="creation_function">make_timezone_entry</property> + <property name="int1">0</property> + <property name="int2">0</property> + <property name="last_modification_time">Thu, 13 Jan 2005 04:18:03 GMT</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="y_options">fill</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox4"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkRadioButton" id="use_12_hour"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_12 hour (AM/PM)</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkRadioButton" id="use_24_hour"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_24 hour</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + <property name="group">use_12_hour</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">fill</property> + <property name="y_options">fill</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> </child> <child> - <widget class="GtkButton" id="button3"> + <widget class="GtkLabel" id="label5"> <property name="visible">True</property> - <property name="can_default">True</property> - <property name="can_focus">True</property> - <property name="label">gtk-close</property> - <property name="use_stock">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="response_id">0</property> + <property name="label" translatable="yes"><span weight="bold">Work Week</span></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="pack_type">GTK_PACK_END</property> - </packing> - </child> - - <child> - <widget class="GtkNotebook" id="toplevel-notebook"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="show_tabs">True</property> - <property name="show_border">True</property> - <property name="tab_pos">GTK_POS_TOP</property> - <property name="scrollable">False</property> - <property name="enable_popup">False</property> <child> - <widget class="GtkVBox" id="vbox10"> - <property name="border_width">12</property> + <widget class="GtkHBox" id="hbox2"> <property name="visible">True</property> <property name="homogeneous">False</property> <property name="spacing">12</property> <child> - <widget class="GtkLabel" id="label51"> + <widget class="GtkLabel" id="label8"> <property name="visible">True</property> - <property name="label" translatable="yes"><b>Time</b></property> + <property name="label" translatable="yes"></property> <property name="use_underline">False</property> - <property name="use_markup">True</property> + <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> <property name="wrap">False</property> <property name="selectable">False</property> - <property name="xalign">0</property> + <property name="xalign">0.5</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> @@ -115,202 +274,387 @@ </child> <child> - <widget class="GtkHBox" id="hbox26"> + <widget class="GtkTable" id="workWeek"> <property name="visible">True</property> + <property name="n_rows">4</property> + <property name="n_columns">2</property> <property name="homogeneous">False</property> - <property name="spacing">12</property> + <property name="row_spacing">6</property> + <property name="column_spacing">6</property> + + <child> + <widget class="GtkLabel" id="label12"> + <property name="visible">True</property> + <property name="label" translatable="yes">W_eek starts:</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> <child> - <widget class="GtkLabel" id="label52"> + <widget class="GtkLabel" id="label13"> <property name="visible">True</property> - <property name="label" translatable="yes"></property> + <property name="label" translatable="yes">Work days:</property> <property name="use_underline">False</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> <property name="wrap">False</property> <property name="selectable">False</property> - <property name="xalign">0.5</property> + <property name="xalign">0</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> </widget> <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">fill</property> + <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkTable" id="table5"> + <widget class="GtkLabel" id="label14"> + <property name="visible">True</property> + <property name="label" translatable="yes">_Day begins:</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label15"> + <property name="visible">True</property> + <property name="label" translatable="yes">Day _ends:</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="Custom" id="start_of_day"> + <property name="visible">True</property> + <property name="creation_function">cal_prefs_dialog_create_time_edit</property> + <property name="int1">0</property> + <property name="int2">0</property> + <property name="last_modification_time">Thu, 13 Jan 2005 04:23:55 GMT</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="y_options">fill</property> + </packing> + </child> + + <child> + <widget class="Custom" id="end_of_day"> + <property name="visible">True</property> + <property name="creation_function">cal_prefs_dialog_create_time_edit</property> + <property name="int1">0</property> + <property name="int2">0</property> + <property name="last_modification_time">Thu, 13 Jan 2005 04:24:06 GMT</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="x_options">fill</property> + <property name="y_options">fill</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox5"> <property name="visible">True</property> - <property name="n_rows">2</property> - <property name="n_columns">3</property> <property name="homogeneous">False</property> - <property name="row_spacing">6</property> - <property name="column_spacing">6</property> + <property name="spacing">6</property> <child> - <widget class="GtkLabel" id="label22"> + <widget class="GtkCheckButton" id="mon_button"> <property name="visible">True</property> - <property name="label" translatable="yes">Time _zone:</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Mon</property> <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_CENTER</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="mnemonic_widget">timezone</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + <accessibility> + <atkproperty name="AtkObject::accessible_name" translatable="yes">Monday</atkproperty> + </accessibility> </widget> <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">0</property> - <property name="bottom_attach">1</property> - <property name="x_options">fill</property> - <property name="y_options"></property> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> </packing> </child> <child> - <widget class="GtkLabel" id="label20"> + <widget class="GtkCheckButton" id="tue_button"> <property name="visible">True</property> - <property name="label" translatable="yes">Time format:</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_CENTER</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Tue</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + <accessibility> + <atkproperty name="AtkObject::accessible_name" translatable="yes">Tuesday</atkproperty> + </accessibility> </widget> <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">fill</property> - <property name="y_options"></property> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> </packing> </child> <child> - <widget class="GtkHBox" id="hbox10"> + <widget class="GtkCheckButton" id="wed_button"> <property name="visible">True</property> - <property name="homogeneous">True</property> - <property name="spacing">4</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Wed</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + <accessibility> + <atkproperty name="AtkObject::accessible_name" translatable="yes">Wednesday</atkproperty> + </accessibility> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> - <child> - <widget class="GtkAlignment" id="alignment2"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xscale">3.35276e-08</property> - <property name="yscale">1</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">0</property> - <property name="right_padding">0</property> - - <child> - <widget class="GtkRadioButton" id="use_12_hour"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">_12 hour (AM/PM)</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkRadioButton" id="use_24_hour"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">_24 hour</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <property name="group">use_12_hour</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> + <child> + <widget class="GtkCheckButton" id="thu_button"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">T_hu</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + <accessibility> + <atkproperty name="AtkObject::accessible_name" translatable="yes">Thursday</atkproperty> + </accessibility> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">fill</property> - <property name="y_options">fill</property> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> </packing> </child> <child> - <widget class="Custom" id="timezone"> + <widget class="GtkCheckButton" id="fri_button"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="creation_function">make_timezone_entry</property> - <property name="int1">0</property> - <property name="int2">0</property> - <property name="last_modification_time">Wed, 20 Jun 2001 02:22:46 GMT</property> + <property name="label" translatable="yes">_Fri</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + <accessibility> + <atkproperty name="AtkObject::accessible_name" translatable="yes">Friday</atkproperty> + </accessibility> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">3</property> - <property name="top_attach">0</property> - <property name="bottom_attach">1</property> - <property name="x_options">fill</property> - <property name="y_options">fill</property> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkCheckButton" id="sat_button"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Sat</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + <accessibility> + <atkproperty name="AtkObject::accessible_name" translatable="yes">Saturday</atkproperty> + </accessibility> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkCheckButton" id="sun_button"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">S_un</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + <accessibility> + <atkproperty name="AtkObject::accessible_name" translatable="yes">Sunday</atkproperty> + </accessibility> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> </packing> </child> </widget> <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">fill</property> + <property name="y_options">fill</property> + </packing> + </child> + + <child> + <widget class="GtkComboBox" id="week_start_day"> + <property name="visible">True</property> + <property name="items" translatable="yes">Monday +Tuesday +Wednesday +Thursday +Friday +Saturday +Sunday</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="x_options">fill</property> + <property name="y_options">fill</property> </packing> </child> </widget> <packing> <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> + <property name="expand">True</property> + <property name="fill">True</property> </packing> </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label6"> + <property name="visible">True</property> + <property name="label" translatable="yes"><span weight="bold">Alerts</span></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox3"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> <child> - <widget class="GtkLabel" id="label49"> + <widget class="GtkLabel" id="label9"> <property name="visible">True</property> - <property name="label" translatable="yes"><b>Work Week</b></property> - <property name="use_underline">True</property> - <property name="use_markup">True</property> + <property name="label" translatable="yes"></property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> <property name="wrap">False</property> <property name="selectable">False</property> - <property name="xalign">0</property> + <property name="xalign">0.5</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> @@ -323,24 +667,22 @@ </child> <child> - <widget class="GtkHBox" id="hbox25"> + <widget class="GtkVBox" id="alerts"> <property name="visible">True</property> <property name="homogeneous">False</property> - <property name="spacing">12</property> + <property name="spacing">6</property> <child> - <widget class="GtkLabel" id="label50"> + <widget class="GtkCheckButton" id="confirm_delete"> <property name="visible">True</property> - <property name="label" translatable="yes"></property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Ask for confirmation when deleting items</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> </widget> <packing> <property name="padding">0</property> @@ -350,413 +692,81 @@ </child> <child> - <widget class="GtkTable" id="table8"> + <widget class="GtkHBox" id="hbox6"> <property name="visible">True</property> - <property name="n_rows">4</property> - <property name="n_columns">4</property> <property name="homogeneous">False</property> - <property name="row_spacing">6</property> - <property name="column_spacing">6</property> - - <child> - <widget class="GtkHBox" id="hbox17"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkCheckButton" id="mon_button"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">_Mon</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <accessibility> - <atkproperty name="AtkObject::accessible_name" translatable="yes">Monday</atkproperty> - </accessibility> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkCheckButton" id="tue_button"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">_Tue</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <accessibility> - <atkproperty name="AtkObject::accessible_name" translatable="yes">Tuesday</atkproperty> - </accessibility> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkCheckButton" id="wed_button"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">_Wed</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <accessibility> - <atkproperty name="AtkObject::accessible_name" translatable="yes">Wednesday</atkproperty> - </accessibility> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkCheckButton" id="thu_button"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">T_hu</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <accessibility> - <atkproperty name="AtkObject::accessible_name" translatable="yes">Thursday</atkproperty> - </accessibility> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkCheckButton" id="fri_button"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">_Fri</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <accessibility> - <atkproperty name="AtkObject::accessible_name" translatable="yes">Friday</atkproperty> - </accessibility> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkCheckButton" id="sat_button"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">_Sat</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <accessibility> - <atkproperty name="AtkObject::accessible_name" translatable="yes">Saturday</atkproperty> - </accessibility> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkCheckButton" id="sun_button"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">S_un</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <accessibility> - <atkproperty name="AtkObject::accessible_name" translatable="yes">Sunday</atkproperty> - </accessibility> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">4</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="y_options">fill</property> - </packing> - </child> - - <child> - <widget class="GtkAlignment" id="alignment3"> - <property name="visible">True</property> - <property name="xalign">7.45058e-09</property> - <property name="yalign">0.5</property> - <property name="xscale">0</property> - <property name="yscale">1</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">0</property> - <property name="right_padding">0</property> - - <child> - <widget class="GtkOptionMenu" id="first_day_of_week"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="history">0</property> - - <child internal-child="menu"> - <widget class="GtkMenu" id="convertwidget1"> - <property name="visible">True</property> - - <child> - <widget class="GtkMenuItem" id="convertwidget2"> - <property name="visible">True</property> - <property name="label" translatable="yes">Monday</property> - <property name="use_underline">True</property> - </widget> - </child> - - <child> - <widget class="GtkMenuItem" id="convertwidget3"> - <property name="visible">True</property> - <property name="label" translatable="yes">Tuesday</property> - <property name="use_underline">True</property> - </widget> - </child> - - <child> - <widget class="GtkMenuItem" id="convertwidget4"> - <property name="visible">True</property> - <property name="label" translatable="yes">Wednesday</property> - <property name="use_underline">True</property> - </widget> - </child> - - <child> - <widget class="GtkMenuItem" id="convertwidget5"> - <property name="visible">True</property> - <property name="label" translatable="yes">Thursday</property> - <property name="use_underline">True</property> - </widget> - </child> - - <child> - <widget class="GtkMenuItem" id="convertwidget6"> - <property name="visible">True</property> - <property name="label" translatable="yes">Friday</property> - <property name="use_underline">True</property> - </widget> - </child> - - <child> - <widget class="GtkMenuItem" id="convertwidget7"> - <property name="visible">True</property> - <property name="label" translatable="yes">Saturday</property> - <property name="use_underline">True</property> - </widget> - </child> - - <child> - <widget class="GtkMenuItem" id="convertwidget8"> - <property name="visible">True</property> - <property name="label" translatable="yes">Sunday</property> - <property name="use_underline">True</property> - </widget> - </child> - </widget> - </child> - </widget> - </child> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">0</property> - <property name="bottom_attach">1</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> + <property name="spacing">4</property> <child> - <widget class="GtkLabel" id="label32"> + <widget class="GtkCheckButton" id="default_reminder"> <property name="visible">True</property> - <property name="label" translatable="yes">W_eek starts:</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Sh_ow a reminder</property> <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_CENTER</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="mnemonic_widget">first_day_of_week</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> </widget> <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">0</property> - <property name="bottom_attach">1</property> - <property name="x_options">fill</property> - <property name="y_options"></property> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> </packing> </child> <child> - <widget class="GtkLabel" id="label31"> + <widget class="GtkSpinButton" id="default_reminder_interval"> <property name="visible">True</property> - <property name="label" translatable="yes">Work days:</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_CENTER</property> + <property name="can_focus">True</property> + <property name="climb_rate">1</property> + <property name="digits">0</property> + <property name="numeric">False</property> + <property name="update_policy">GTK_UPDATE_ALWAYS</property> + <property name="snap_to_ticks">False</property> <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> + <property name="adjustment">0 0 9999 1 10 10</property> </widget> <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">fill</property> - <property name="y_options"></property> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> </packing> </child> <child> - <widget class="GtkLabel" id="end_of_day_label"> + <widget class="GtkComboBox" id="default_reminder_units"> <property name="visible">True</property> - <property name="label" translatable="yes">Day _ends:</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_RIGHT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="mnemonic_widget">end_of_day</property> + <property name="items" translatable="yes">Minutes +Hours +Days</property> </widget> <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> - <property name="x_options">fill</property> - <property name="y_options"></property> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> </packing> </child> <child> - <widget class="GtkLabel" id="start_of_day_label"> + <widget class="GtkLabel" id="label16"> <property name="visible">True</property> - <property name="label" translatable="yes">_Day begins:</property> - <property name="use_underline">True</property> + <property name="label" translatable="yes">before every appointment</property> + <property name="use_underline">False</property> <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_CENTER</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> <property name="wrap">False</property> <property name="selectable">False</property> - <property name="xalign">0</property> + <property name="xalign">0.5</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> - <property name="mnemonic_widget">start_of_day</property> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="Custom" id="start_of_day"> - <property name="visible">True</property> - <property name="creation_function">cal_prefs_dialog_create_time_edit</property> - <property name="int1">0</property> - <property name="int2">0</property> - <property name="last_modification_time">Thu, 30 May 2002 19:26:53 GMT</property> - <accessibility> - <atkrelation target="start_of_day_label" type="labelled-by"/> - </accessibility> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">4</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="x_options">fill</property> - <property name="y_options">fill</property> - </packing> - </child> - - <child> - <widget class="Custom" id="end_of_day"> - <property name="visible">True</property> - <property name="creation_function">cal_prefs_dialog_create_time_edit</property> - <property name="int1">0</property> - <property name="int2">0</property> - <property name="last_modification_time">Thu, 30 May 2002 19:27:35 GMT</property> - <accessibility> - <atkrelation target="end_of_day_label" type="labelled-by"/> - </accessibility> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">4</property> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> - <property name="x_options">fill</property> - <property name="y_options">fill</property> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> </packing> </child> </widget> @@ -769,21 +779,87 @@ </widget> <packing> <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> + <property name="expand">True</property> + <property name="fill">True</property> </packing> </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="tab_expand">False</property> + <property name="tab_fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label1"> + <property name="visible">True</property> + <property name="label" translatable="yes">General</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="type">tab</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="display"> + <property name="border_width">12</property> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkLabel" id="label17"> + <property name="visible">True</property> + <property name="label" translatable="yes"><span weight="bold">General</span></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox7"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> <child> - <widget class="GtkLabel" id="label53"> + <widget class="GtkLabel" id="label19"> <property name="visible">True</property> - <property name="label" translatable="yes"><b>Alerts</b></property> + <property name="label" translatable="yes"></property> <property name="use_underline">False</property> - <property name="use_markup">True</property> + <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> <property name="wrap">False</property> <property name="selectable">False</property> - <property name="xalign">0</property> + <property name="xalign">0.5</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> @@ -796,50 +872,31 @@ </child> <child> - <widget class="GtkHBox" id="hbox27"> + <widget class="GtkVBox" id="displayGeneral"> <property name="visible">True</property> <property name="homogeneous">False</property> - <property name="spacing">12</property> - - <child> - <widget class="GtkLabel" id="label54"> - <property name="visible">True</property> - <property name="label" translatable="yes"></property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> + <property name="spacing">6</property> <child> - <widget class="GtkVBox" id="vbox13"> + <widget class="GtkHBox" id="hbox10"> <property name="visible">True</property> <property name="homogeneous">False</property> - <property name="spacing">0</property> + <property name="spacing">6</property> <child> - <widget class="GtkCheckButton" id="confirm-delete"> - <property name="border_width">3</property> + <widget class="GtkLabel" id="label23"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">_Ask for confirmation when deleting items</property> + <property name="label" translatable="yes">_Time divisions:</property> <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="mnemonic_widget">time_divisions</property> </widget> <packing> <property name="padding">0</property> @@ -849,135 +906,18 @@ </child> <child> - <widget class="GtkHBox" id="hbox19"> - <property name="border_width">3</property> + <widget class="GtkComboBox" id="time_divisions"> <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">3</property> - - <child> - <widget class="GtkCheckButton" id="default-reminder"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Sh_ow a reminder</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkSpinButton" id="default-reminder-interval"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="climb_rate">1</property> - <property name="digits">0</property> - <property name="numeric">False</property> - <property name="update_policy">GTK_UPDATE_ALWAYS</property> - <property name="snap_to_ticks">False</property> - <property name="wrap">False</property> - <property name="adjustment">0 0 9999 1 10 10</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkAlignment" id="alignment4"> - <property name="visible">True</property> - <property name="xalign">7.45058e-09</property> - <property name="yalign">0.5</property> - <property name="xscale">0</property> - <property name="yscale">0</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">0</property> - <property name="right_padding">0</property> - - <child> - <widget class="GtkOptionMenu" id="default-reminder-units"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="history">0</property> - <accessibility> - <atkproperty name="AtkObject::accessible_name" translatable="yes">option menu to choose reminder units</atkproperty> - </accessibility> - - <child internal-child="menu"> - <widget class="GtkMenu" id="convertwidget9"> - <property name="visible">True</property> - - <child> - <widget class="GtkMenuItem" id="convertwidget10"> - <property name="visible">True</property> - <property name="label" translatable="yes">Minutes</property> - <property name="use_underline">True</property> - </widget> - </child> - - <child> - <widget class="GtkMenuItem" id="convertwidget11"> - <property name="visible">True</property> - <property name="label" translatable="yes">Hours</property> - <property name="use_underline">True</property> - </widget> - </child> - - <child> - <widget class="GtkMenuItem" id="convertwidget12"> - <property name="visible">True</property> - <property name="label" translatable="yes">Days</property> - <property name="use_underline">True</property> - </widget> - </child> - </widget> - </child> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label35"> - <property name="visible">True</property> - <property name="label" translatable="yes">before every appointment</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_CENTER</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> + <property name="items" translatable="yes">60 minutes +30 minutes +15 minutes +10 minutes +05 minutes</property> </widget> <packing> <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> + <property name="expand">True</property> + <property name="fill">True</property> </packing> </child> </widget> @@ -987,248 +927,222 @@ <property name="fill">True</property> </packing> </child> + + <child> + <widget class="GtkCheckButton" id="show_end_times"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Show appointment end times in week and month view</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkCheckButton" id="compress_weekend"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Compress weekends in month view</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkCheckButton" id="dnav_show_week_no"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Show week _numbers in date navigator</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> </widget> <packing> <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> + <property name="expand">True</property> + <property name="fill">True</property> </packing> </child> </widget> <packing> - <property name="tab_expand">False</property> - <property name="tab_fill">False</property> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> </packing> </child> <child> - <widget class="GtkLabel" id="label21"> + <widget class="GtkLabel" id="label18"> <property name="visible">True</property> - <property name="label" translatable="yes">General</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_CENTER</property> + <property name="label" translatable="yes"><span weight="bold">Task List</span></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> <property name="wrap">False</property> <property name="selectable">False</property> - <property name="xalign">0.5</property> + <property name="xalign">0</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> </widget> <packing> - <property name="type">tab</property> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> </packing> </child> <child> - <widget class="GtkVBox" id="vbox8"> - <property name="border_width">12</property> + <widget class="GtkHBox" id="hbox8"> <property name="visible">True</property> <property name="homogeneous">False</property> <property name="spacing">12</property> <child> - <widget class="GtkLabel" id="label55"> + <widget class="GtkLabel" id="label20"> <property name="visible">True</property> - <property name="label" translatable="yes"><b>General</b></property> + <property name="label" translatable="yes"></property> <property name="use_underline">False</property> - <property name="use_markup">True</property> + <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> <property name="wrap">False</property> <property name="selectable">False</property> - <property name="xalign">0</property> + <property name="xalign">0.5</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> </widget> <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="hbox28"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">12</property> - - <child> - <widget class="GtkLabel" id="label56"> - <property name="visible">True</property> - <property name="label" translatable="yes"></property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="taskList"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> <child> - <widget class="GtkVBox" id="vbox16"> + <widget class="GtkTable" id="table2"> <property name="visible">True</property> + <property name="n_rows">2</property> + <property name="n_columns">2</property> <property name="homogeneous">False</property> - <property name="spacing">6</property> + <property name="row_spacing">6</property> + <property name="column_spacing">6</property> <child> - <widget class="GtkHBox" id="hbox12"> + <widget class="GtkLabel" id="label21"> <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkLabel" id="label25"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Time divisions:</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_CENTER</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="mnemonic_widget">time_divisions</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkOptionMenu" id="time_divisions"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="history">0</property> - - <child internal-child="menu"> - <widget class="GtkMenu" id="convertwidget13"> - <property name="visible">True</property> - - <child> - <widget class="GtkMenuItem" id="convertwidget14"> - <property name="visible">True</property> - <property name="label" translatable="yes">60 minutes</property> - <property name="use_underline">True</property> - </widget> - </child> - - <child> - <widget class="GtkMenuItem" id="convertwidget15"> - <property name="visible">True</property> - <property name="label" translatable="yes">30 minutes</property> - <property name="use_underline">True</property> - </widget> - </child> - - <child> - <widget class="GtkMenuItem" id="convertwidget16"> - <property name="visible">True</property> - <property name="label" translatable="yes">15 minutes</property> - <property name="use_underline">True</property> - </widget> - </child> - - <child> - <widget class="GtkMenuItem" id="convertwidget17"> - <property name="visible">True</property> - <property name="label" translatable="yes">10 minutes</property> - <property name="use_underline">True</property> - </widget> - </child> - - <child> - <widget class="GtkMenuItem" id="convertwidget18"> - <property name="visible">True</property> - <property name="label" translatable="yes">05 minutes</property> - <property name="use_underline">True</property> - </widget> - </child> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> + <property name="label" translatable="yes">T_asks due today:</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="mnemonic_widget">tasks_due_today_color</property> </widget> <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="x_options">fill</property> + <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkCheckButton" id="show_end_times"> + <widget class="GtkLabel" id="label22"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">_Show appointment end times in week and month views</property> + <property name="label" translatable="yes">_Overdue tasks:</property> <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="mnemonic_widget">tasks_overdue_color</property> </widget> <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">fill</property> + <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkCheckButton" id="compress_weekend"> + <widget class="GtkColorButton" id="tasks_due_today_color"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">_Compress weekends in month view</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="use_alpha">False</property> <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> </widget> <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="x_options"></property> + <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkCheckButton" id="dnav_show_week_no"> + <widget class="GtkColorButton" id="tasks_overdue_color"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">Show week _numbers in date navigator</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="use_alpha">False</property> <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> </widget> <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options"></property> + <property name="y_options"></property> </packing> </child> </widget> @@ -1238,164 +1152,24 @@ <property name="fill">True</property> </packing> </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label57"> - <property name="visible">True</property> - <property name="label" translatable="yes"><b>Task List</b></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="hbox29"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">12</property> - - <child> - <widget class="GtkLabel" id="label58"> - <property name="visible">True</property> - <property name="label" translatable="yes"></property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> <child> - <widget class="GtkVBox" id="vbox12"> + <widget class="GtkHBox" id="hbox9"> <property name="visible">True</property> <property name="homogeneous">False</property> <property name="spacing">6</property> <child> - <widget class="GtkTable" id="table7"> + <widget class="GtkCheckButton" id="tasks_hide_completed"> <property name="visible">True</property> - <property name="n_rows">2</property> - <property name="n_columns">2</property> - <property name="homogeneous">False</property> - <property name="row_spacing">6</property> - <property name="column_spacing">6</property> - - <child> - <widget class="GtkLabel" id="label28"> - <property name="visible">True</property> - <property name="label" translatable="yes">T_asks due today:</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_CENTER</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="mnemonic_widget">tasks_due_today_color</property> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">0</property> - <property name="bottom_attach">1</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label29"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Overdue tasks:</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_CENTER</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="mnemonic_widget">tasks_overdue_color</property> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GnomeColorPicker" id="tasks_overdue_color"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="dither">True</property> - <property name="use_alpha">False</property> - <property name="title" translatable="yes">Color for overdue tasks</property> - <property name="focus_on_click">True</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GnomeColorPicker" id="tasks_due_today_color"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="dither">True</property> - <property name="use_alpha">False</property> - <property name="title" translatable="yes">Color for tasks due today</property> - <property name="focus_on_click">True</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">0</property> - <property name="bottom_attach">1</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Hide completed tasks after</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> </widget> <packing> <property name="padding">0</property> @@ -1405,99 +1179,35 @@ </child> <child> - <widget class="GtkHBox" id="hbox15"> + <widget class="GtkSpinButton" id="tasks_hide_completed_interval"> <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> + <property name="can_focus">True</property> + <property name="climb_rate">1</property> + <property name="digits">0</property> + <property name="numeric">False</property> + <property name="update_policy">GTK_UPDATE_ALWAYS</property> + <property name="snap_to_ticks">False</property> + <property name="wrap">False</property> + <property name="adjustment">1 0 9999 1 10 10</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> - <child> - <widget class="GtkCheckButton" id="tasks-hide-completed-checkbutton"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">_Hide completed tasks after</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkSpinButton" id="tasks-hide-completed-spinbutton"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="climb_rate">1</property> - <property name="digits">0</property> - <property name="numeric">False</property> - <property name="update_policy">GTK_UPDATE_ALWAYS</property> - <property name="snap_to_ticks">False</property> - <property name="wrap">False</property> - <property name="adjustment">1 0 9999 1 10 10</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkOptionMenu" id="tasks-hide-completed-optionmenu"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="history">0</property> - <accessibility> - <atkproperty name="AtkObject::accessible_name" translatable="yes">option menu to choose time units</atkproperty> - </accessibility> - - <child internal-child="menu"> - <widget class="GtkMenu" id="convertwidget19"> - <property name="visible">True</property> - - <child> - <widget class="GtkMenuItem" id="convertwidget20"> - <property name="visible">True</property> - <property name="label" translatable="yes">Minutes</property> - <property name="use_underline">True</property> - </widget> - </child> - - <child> - <widget class="GtkMenuItem" id="convertwidget21"> - <property name="visible">True</property> - <property name="label" translatable="yes">Hours</property> - <property name="use_underline">True</property> - </widget> - </child> - - <child> - <widget class="GtkMenuItem" id="convertwidget22"> - <property name="visible">True</property> - <property name="label" translatable="yes">Days</property> - <property name="use_underline">True</property> - </widget> - </child> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> + <child> + <widget class="GtkComboBox" id="tasks_hide_completed_units"> + <property name="visible">True</property> + <property name="items" translatable="yes">Minutes +Hours +Days</property> </widget> <packing> <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> + <property name="expand">True</property> + <property name="fill">True</property> </packing> </child> </widget> @@ -1510,466 +1220,165 @@ </widget> <packing> <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> + <property name="expand">True</property> + <property name="fill">True</property> </packing> </child> </widget> <packing> - <property name="tab_expand">False</property> - <property name="tab_fill">False</property> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> </packing> </child> + </widget> + <packing> + <property name="tab_expand">False</property> + <property name="tab_fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label2"> + <property name="visible">True</property> + <property name="label" translatable="yes">Display</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="type">tab</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="freebusy"> + <property name="border_width">12</property> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> <child> - <widget class="GtkLabel" id="label7"> + <widget class="GtkLabel" id="label25"> <property name="visible">True</property> - <property name="label" translatable="yes">Display</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_CENTER</property> + <property name="label" translatable="yes"><span weight="bold">Default Free/Busy Server</span></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> <property name="wrap">False</property> <property name="selectable">False</property> - <property name="xalign">0.5</property> + <property name="xalign">0</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> </widget> <packing> - <property name="type">tab</property> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> </packing> </child> <child> - <widget class="GtkVBox" id="vbox17"> - <property name="border_width">12</property> + <widget class="GtkHBox" id="hbox12"> <property name="visible">True</property> <property name="homogeneous">False</property> <property name="spacing">12</property> <child> - <widget class="GtkFrame" id="frame2"> + <widget class="GtkLabel" id="label27"> <property name="visible">True</property> - <property name="label_xalign">0</property> - <property name="label_yalign">0.5</property> - <property name="shadow_type">GTK_SHADOW_NONE</property> - - <child> - <widget class="GtkAlignment" id="alignment8"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">1</property> - <property name="yscale">1</property> - <property name="top_padding">12</property> - <property name="bottom_padding">0</property> - <property name="left_padding">12</property> - <property name="right_padding">0</property> - - <child> - <widget class="GtkHBox" id="hbox20"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkScrolledWindow" id="scrolledwindow1"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="shadow_type">GTK_SHADOW_IN</property> - <property name="window_placement">GTK_CORNER_TOP_LEFT</property> - - <child> - <widget class="GtkTreeView" id="url_list"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="headers_visible">True</property> - <property name="rules_hint">False</property> - <property name="reorderable">False</property> - <property name="enable_search">True</property> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkVBox" id="vbox15"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkVButtonBox" id="vbuttonbox3"> - <property name="visible">True</property> - <property name="layout_style">GTK_BUTTONBOX_START</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkButton" id="url_add"> - <property name="visible">True</property> - <property name="can_default">True</property> - <property name="can_focus">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - - <child> - <widget class="GtkAlignment" id="alignment5"> - <property name="visible">True</property> - <property name="can_default">True</property> - <property name="can_focus">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">0</property> - <property name="yscale">0</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">0</property> - <property name="right_padding">0</property> - - <child> - <widget class="GtkHBox" id="hbox22"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">2</property> - - <child> - <widget class="GtkImage" id="image1"> - <property name="visible">True</property> - <property name="stock">gtk-add</property> - <property name="icon_size">4</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="labeladd"> - <property name="visible">True</property> - <property name="can_default">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">_Add URL</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - </widget> - </child> - - <child> - <widget class="GtkButton" id="url_edit"> - <property name="visible">True</property> - <property name="sensitive">False</property> - <property name="can_default">True</property> - <property name="can_focus">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - - <child> - <widget class="GtkAlignment" id="alignment6"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">0</property> - <property name="yscale">0</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">0</property> - <property name="right_padding">0</property> - - <child> - <widget class="GtkHBox" id="hbox23"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">2</property> - - <child> - <widget class="GtkImage" id="image2"> - <property name="visible">True</property> - <property name="stock">gtk-properties</property> - <property name="icon_size">4</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label47"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Edit</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - </widget> - </child> - - <child> - <widget class="GtkButton" id="url_remove"> - <property name="visible">True</property> - <property name="sensitive">False</property> - <property name="can_default">True</property> - <property name="can_focus">True</property> - <property name="label">gtk-remove</property> - <property name="use_stock">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - </widget> - </child> - - <child> - <widget class="GtkButton" id="url_enable"> - <property name="visible">True</property> - <property name="can_default">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">E_nable</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkVButtonBox" id="vbuttonbox4"> - <property name="visible">True</property> - <property name="layout_style">GTK_BUTTONBOX_START</property> - <property name="spacing">3</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label46"> - <property name="visible">True</property> - <property name="label" translatable="yes"></property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - - <child> - <widget class="GtkLabel" id="label60"> - <property name="visible">True</property> - <property name="label" translatable="yes"><b>Publishing</b></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="type">label_item</property> - </packing> - </child> + <property name="label" translatable="yes"></property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> </widget> <packing> <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> + <property name="expand">False</property> + <property name="fill">False</property> </packing> </child> <child> - <widget class="GtkFrame" id="frame1"> + <widget class="GtkVBox" id="vbox7"> <property name="visible">True</property> - <property name="label_xalign">0</property> - <property name="label_yalign">0.5</property> - <property name="shadow_type">GTK_SHADOW_NONE</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> <child> - <widget class="GtkAlignment" id="alignment7"> + <widget class="GtkHBox" id="hbox18"> <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">1</property> - <property name="yscale">1</property> - <property name="top_padding">12</property> - <property name="bottom_padding">0</property> - <property name="left_padding">12</property> - <property name="right_padding">0</property> - - <child> - <widget class="GtkVBox" id="vbox18"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkHBox" id="hbox30"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">12</property> - - <child> - <widget class="GtkLabel" id="label61"> - <property name="visible">True</property> - <property name="label" translatable="yes">Template:</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkEntry" id="template_url"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="editable">True</property> - <property name="visibility">True</property> - <property name="max_length">0</property> - <property name="text" translatable="yes"></property> - <property name="has_frame">True</property> - <property name="invisible_char" translatable="yes">*</property> - <property name="activates_default">False</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label62"> - <property name="visible">True</property> - <property name="label" translatable="yes"><i>%u and %d will be replaced by user and domain from the email address.</i></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">True</property> - <property name="selectable">False</property> - <property name="xalign">0.49</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkLabel" id="label33"> + <property name="visible">True</property> + <property name="label" translatable="yes">Template:</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkEntry" id="template_url"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="editable">True</property> + <property name="visibility">True</property> + <property name="max_length">0</property> + <property name="text" translatable="yes"></property> + <property name="has_frame">True</property> + <property name="invisible_char">*</property> + <property name="activates_default">False</property> </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> </child> </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> </child> <child> - <widget class="GtkLabel" id="label59"> + <widget class="GtkLabel" id="label32"> <property name="visible">True</property> - <property name="label" translatable="yes"><b>Default Free/Busy Server</b></property> + <property name="label" translatable="yes"><i>%u and %d will be replaced by user and domain from the email address.</i></property> <property name="use_underline">False</property> <property name="use_markup">True</property> <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> + <property name="wrap">True</property> <property name="selectable">False</property> <property name="xalign">0.5</property> <property name="yalign">0.5</property> @@ -1977,46 +1386,48 @@ <property name="ypad">0</property> </widget> <packing> - <property name="type">label_item</property> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> </packing> </child> </widget> <packing> <property name="padding">0</property> - <property name="expand">False</property> + <property name="expand">True</property> <property name="fill">True</property> </packing> </child> </widget> <packing> - <property name="tab_expand">False</property> - <property name="tab_fill">True</property> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> </packing> </child> + </widget> + <packing> + <property name="tab_expand">False</property> + <property name="tab_fill">True</property> + </packing> + </child> - <child> - <widget class="GtkLabel" id="label42"> - <property name="visible">True</property> - <property name="label" translatable="yes">Free/Busy</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_CENTER</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="type">tab</property> - </packing> - </child> + <child> + <widget class="GtkLabel" id="label3"> + <property name="visible">True</property> + <property name="label" translatable="yes">Free/Busy</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> </widget> <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> + <property name="type">tab</property> </packing> </child> </widget> Index: calendar/gui/dialogs/cal-prefs-dialog.h =================================================================== RCS file: /cvs/gnome/evolution/calendar/gui/dialogs/cal-prefs-dialog.h,v retrieving revision 1.11 diff -u -r1.11 cal-prefs-dialog.h --- calendar/gui/dialogs/cal-prefs-dialog.h 18 Dec 2004 13:01:17 -0000 1.11 +++ calendar/gui/dialogs/cal-prefs-dialog.h 29 Mar 2005 02:28:32 -0000 @@ -1,15 +1,16 @@ /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* - * Author : +/* + * Authors: + * David Trowbridge <trowbrds cs colorado edu> * Damon Chaplin <damon ximian com> * - * Copyright 2000, Ximian, Inc. - * Copyright 2000, Ximian, Inc. + * Copyright (C) 2005 Novell, Inc. (www.novell.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 free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -18,13 +19,8 @@ * * 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 - */ - -/* - * CalPrefsDialog - a GtkObject which handles a libglade-loaded dialog - * to edit the calendar preference settings. + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * */ #ifndef _CAL_PREFS_DIALOG_H_ @@ -32,28 +28,22 @@ #include <gtk/gtk.h> #include <glade/glade.h> -#include <gconf/gconf.h> #include <gconf/gconf-client.h> -#include "../e-pub-utils.h" #include "evolution-config-control.h" G_BEGIN_DECLS -enum { - URL_LIST_ENABLED_COLUMN, - URL_LIST_LOCATION_COLUMN, - URL_LIST_FREE_BUSY_URL_COLUMN, - URL_LIST_N_COLUMNS -}; +typedef struct _CalendarPrefsDialog CalendarPrefsDialog; +typedef struct _CalendarPrefsDialogClass CalendarPrefsDialogClass; -struct _DialogData { - /* Glade XML data */ - GladeXML *xml; - - GConfClient *gconf; +struct _CalendarPrefsDialog { + GtkVBox parent; + + GladeXML *gui; - GtkWidget *page; + GConfClient *gconf; + /* General tab */ GtkWidget *timezone; GtkWidget *working_days[7]; GtkWidget *week_start_day; @@ -61,41 +51,40 @@ GtkWidget *end_of_day; GtkWidget *use_12_hour; GtkWidget *use_24_hour; + GtkWidget *confirm_delete; + GtkWidget *default_reminder; + GtkWidget *default_reminder_interval; + GtkWidget *default_reminder_units; + + /* Display tab */ GtkWidget *time_divisions; GtkWidget *show_end_times; GtkWidget *compress_weekend; GtkWidget *dnav_show_week_no; - - /* Widgets for the task list options */ GtkWidget *tasks_due_today_color; GtkWidget *tasks_overdue_color; + GtkWidget *tasks_hide_completed; + GtkWidget *tasks_hide_completed_interval; + GtkWidget *tasks_hide_completed_units; - GtkWidget *tasks_hide_completed_checkbutton; - GtkWidget *tasks_hide_completed_spinbutton; - GtkWidget *tasks_hide_completed_optionmenu; - - /* Widgets for the Free/Busy options */ + /* Free/Busy tab */ GtkWidget *url_add; GtkWidget *url_edit; GtkWidget *url_remove; GtkWidget *url_enable; - GtkTreeView *url_list; - gboolean url_editor; - GtkWidget* url_editor_dlg; + GtkWidget *url_enable_label; + GtkWidget *url_enable_image; + GtkWidget *url_list; + GtkWidget *template_url; guint destroyed : 1; +}; - /* widgets for the Free/Busy template */ - GtkWidget *template_url; - - /* Other page options */ - GtkWidget *confirm_delete; - GtkWidget *default_reminder; - GtkWidget *default_reminder_interval; - GtkWidget *default_reminder_units; +struct _CalendarPrefsDialogClass { + GtkVBoxClass parent; }; -typedef struct _DialogData DialogData; -EvolutionConfigControl *cal_prefs_dialog_new (void); +GType calendar_prefs_dialog_get_type (void); +GtkWidget *calendar_prefs_dialog_new (void); G_END_DECLS Index: e-util/ChangeLog =================================================================== RCS file: /cvs/gnome/evolution/e-util/ChangeLog,v retrieving revision 1.530 diff -u -r1.530 ChangeLog --- e-util/ChangeLog 16 Mar 2005 06:50:11 -0000 1.530 +++ e-util/ChangeLog 29 Mar 2005 02:28:32 -0000 @@ -1,3 +1,7 @@ +2005-03-28 David Trowbridge <trowbrds cs colorado edu> + + * e-dialog-widgets.[hc]: Add e_dialog_combo_box_(get|set) + 2005-03-14 Not Zed <NotZed Ximian com> ** See bug #73550 (related for config pages) Index: e-util/e-dialog-widgets.c =================================================================== RCS file: /cvs/gnome/evolution/e-util/e-dialog-widgets.c,v retrieving revision 1.16 diff -u -r1.16 e-dialog-widgets.c --- e-util/e-dialog-widgets.c 2 Jan 2003 21:32:14 -0000 1.16 +++ e-util/e-dialog-widgets.c 29 Mar 2005 02:28:32 -0000 @@ -28,6 +28,7 @@ #include <gtk/gtkmenu.h> #include <gtk/gtkmenuitem.h> #include <gtk/gtkoptionmenu.h> +#include <gtk/gtkcombobox.h> #include <gtk/gtkradiobutton.h> #include <gtk/gtksignal.h> #include <gtk/gtkspinbutton.h> @@ -628,6 +629,63 @@ } return v; +} + +/** + * e_dialog_combo_box_set: + * @widget: A #GtkComboBox. + * @value: Enumerated value. + * @value_map: Map from enumeration values to array indices. + * + * Sets the selected item in a #GtkComboBox. Please read the description of + * e_dialog_radio_set() to see how @value_map maps enumeration values to item + * indices. + **/ +void +e_dialog_combo_box_set (GtkWidget *widget, int value, const int *value_map) +{ + int i; + + g_return_if_fail (widget != NULL); + g_return_if_fail (GTK_IS_COMBO_BOX (widget)); + g_return_if_fail (value_map != NULL); + + i = value_to_index (value_map, value); + + if (i != -1) + gtk_combo_box_set_active (GTK_COMBO_BOX (widget), i); + else + g_message ("e_dialog_combo_box_set(): could not find value %d in value map!", + value); +} + +/** + * e_dialog_combo_box_get: + * @widget: A #GtkComboBox. + * @value_map: Map from enumeration values to array indices. + * + * Queries the selected item in a #GtkComboBox. Please read the description + * of e_dialog_radio_set() to see how @value_map maps enumeration values to item + * indices. + * + * Return value: Enumeration value which corresponds to the selected item in the + * combo box. + **/ +int +e_dialog_combo_box_get (GtkWidget *widget, const int *value_map) +{ + int i; + + g_return_val_if_fail (widget != NULL, -1); + g_return_val_if_fail (GTK_IS_COMBO_BOX (widget), -1); + g_return_val_if_fail (value_map != NULL, -1); + + i = index_to_value (value_map, gtk_combo_box_get_active (GTK_COMBO_BOX (widget))); + if (i == -1) { + g_message ("e_dialog_combo_box_get(): could not find index %d in value map!", i); + return -1; + } + return i; } /** Index: e-util/e-dialog-widgets.h =================================================================== RCS file: /cvs/gnome/evolution/e-util/e-dialog-widgets.h,v retrieving revision 1.7 diff -u -r1.7 e-dialog-widgets.h --- e-util/e-dialog-widgets.h 27 Oct 2001 23:34:13 -0000 1.7 +++ e-util/e-dialog-widgets.h 29 Mar 2005 02:28:32 -0000 @@ -44,6 +44,9 @@ void e_dialog_option_menu_set (GtkWidget *widget, int value, const int *value_map); int e_dialog_option_menu_get (GtkWidget *widget, const int *value_map); +void e_dialog_combo_box_set (GtkWidget *widget, int value, const int *value_map); +int e_dialog_combo_box_get (GtkWidget *widget, const int *value_map); + void e_dialog_dateedit_set (GtkWidget *widget, time_t t); time_t e_dialog_dateedit_get (GtkWidget *widget); Index: ui/ChangeLog =================================================================== RCS file: /cvs/gnome/evolution/ui/ChangeLog,v retrieving revision 1.408 diff -u -r1.408 ChangeLog --- ui/ChangeLog 14 Feb 2005 15:55:00 -0000 1.408 +++ ui/ChangeLog 29 Mar 2005 02:28:33 -0000 @@ -1,3 +1,8 @@ +2005-03-28 David Trowbridge <trowbrds cs colorado edu> + + * evolution-calendar.xml: Remove F/B publishing from the core UI, + since this is now provided in the calendar-publishing EPlugin + 2005-02-14 Rodney Dawes <dobey novell com> * evolution-mail-list.xml: Index: ui/evolution-calendar.xml =================================================================== RCS file: /cvs/gnome/evolution/ui/evolution-calendar.xml,v retrieving revision 1.69 diff -u -r1.69 evolution-calendar.xml --- ui/evolution-calendar.xml 16 Dec 2004 18:26:54 -0000 1.69 +++ ui/evolution-calendar.xml 29 Mar 2005 02:28:33 -0000 @@ -70,7 +70,6 @@ <submenu name="Actions" _label="_Actions"> <placeholder name="ComponentActionsPlaceholder"> <separator/> - <menuitem name="PublishFreeBusy" verb="" _label="_Publish Free/Busy Information"/> <menuitem name="CalendarPurge" verb=""/> </placeholder> </submenu>